add-to-calendar-button 2.12.6 → 2.12.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Style: 3D
7
7
  *
8
- * Version: 2.12.6
8
+ * Version: 2.12.8
9
9
  * Creator: Jens Kuerschner (https://jekuer.com)
10
10
  * Project: https://github.com/add2cal/add-to-calendar-button
11
11
  * License: Elastic License 2.0 (ELv2) (https://github.com/add2cal/add-to-calendar-button/blob/main/LICENSE.txt)
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Style: Date
7
7
  *
8
- * Version: 2.12.6
8
+ * Version: 2.12.8
9
9
  * Creator: Jens Kuerschner (https://jekuer.com)
10
10
  * Project: https://github.com/add2cal/add-to-calendar-button
11
11
  * License: Elastic License 2.0 (ELv2) (https://github.com/add2cal/add-to-calendar-button/blob/main/LICENSE.txt)
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Style: Flat
7
7
  *
8
- * Version: 2.12.6
8
+ * Version: 2.12.8
9
9
  * Creator: Jens Kuerschner (https://jekuer.com)
10
10
  * Project: https://github.com/add2cal/add-to-calendar-button
11
11
  * License: Elastic License 2.0 (ELv2) (https://github.com/add2cal/add-to-calendar-button/blob/main/LICENSE.txt)
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Style: Neumorphism
7
7
  *
8
- * Version: 2.12.6
8
+ * Version: 2.12.8
9
9
  * Creator: Jens Kuerschner (https://jekuer.com)
10
10
  * Project: https://github.com/add2cal/add-to-calendar-button
11
11
  * License: Elastic License 2.0 (ELv2) (https://github.com/add2cal/add-to-calendar-button/blob/main/LICENSE.txt)
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Style: Round
7
7
  *
8
- * Version: 2.12.6
8
+ * Version: 2.12.8
9
9
  * Creator: Jens Kuerschner (https://jekuer.com)
10
10
  * Project: https://github.com/add2cal/add-to-calendar-button
11
11
  * License: Elastic License 2.0 (ELv2) (https://github.com/add2cal/add-to-calendar-button/blob/main/LICENSE.txt)
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Style: Simple
7
7
  *
8
- * Version: 2.12.6
8
+ * Version: 2.12.8
9
9
  * Creator: Jens Kuerschner (https://jekuer.com)
10
10
  * Project: https://github.com/add2cal/add-to-calendar-button
11
11
  * License: Elastic License 2.0 (ELv2) (https://github.com/add2cal/add-to-calendar-button/blob/main/LICENSE.txt)
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Style: Text
7
7
  *
8
- * Version: 2.12.6
8
+ * Version: 2.12.8
9
9
  * Creator: Jens Kuerschner (https://jekuer.com)
10
10
  * Project: https://github.com/add2cal/add-to-calendar-button
11
11
  * License: Elastic License 2.0 (ELv2) (https://github.com/add2cal/add-to-calendar-button/blob/main/LICENSE.txt)
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Style: Default
7
7
  *
8
- * Version: 2.12.6
8
+ * Version: 2.12.8
9
9
  * Creator: Jens Kuerschner (https://jekuer.com)
10
10
  * Project: https://github.com/add2cal/add-to-calendar-button
11
11
  * License: Elastic License 2.0 (ELv2) (https://github.com/add2cal/add-to-calendar-button/blob/main/LICENSE.txt)
@@ -223,14 +223,14 @@ function tzlib_get_timezones(jsonType = false) {
223
223
  * Add to Calendar Button
224
224
  * ++++++++++++++++++++++
225
225
  *
226
- * Version: 2.12.6
226
+ * Version: 2.12.8
227
227
  * Creator: Jens Kuerschner (https://jekuer.com)
228
228
  * Project: https://github.com/add2cal/add-to-calendar-button
229
229
  * License: Elastic License 2.0 (ELv2) (https://github.com/add2cal/add-to-calendar-button/blob/main/LICENSE.txt)
230
230
  * Note: DO NOT REMOVE THE COPYRIGHT NOTICE ABOVE!
231
231
  *
232
232
  */
233
- const atcbVersion = '2.12.6';
233
+ const atcbVersion = '2.12.8';
234
234
  const atcbCssTemplate = {};
235
235
  const atcbIsBrowser = () => {
236
236
  if (typeof window === 'undefined') {
@@ -495,7 +495,6 @@ async function atcb_decorate_data(data) {
495
495
  data.lightMode = atcb_decorate_light_mode(data.lightMode);
496
496
  data = atcb_decorate_data_i18n(data);
497
497
  data = atcb_decorate_data_dates(data);
498
- data = atcb_decorate_data_button_status_handling(data);
499
498
  data = await atcb_decorate_data_rsvp(data);
500
499
  return data;
501
500
  }
@@ -621,7 +620,7 @@ function atcb_decorate_data_recurring_events(data) {
621
620
  }
622
621
  const endDate = data.dates?.[0].endDate || data.endDate || startDate;
623
622
  const endTime = data.dates?.[0].endTime || data.endTime || '';
624
- const diff = new Date(endDate + (endTime && endTime !== '' ? 'T' + endTime : '')) - new Date(startDate + (startTime && startTime !== '' ? 'T' + startTime : ''));
623
+ const diff = new Date(endDate + (endTime && endTime !== '' ? 'T' + endTime : '')).getTime() - new Date(startDate + (startTime && startTime !== '' ? 'T' + startTime : '')).getTime();
625
624
  const newEndDateTime = new Date(occurenceData.nextOccurrence.getTime() + diff);
626
625
  const newEndDateTimeString =
627
626
  String(newEndDateTime.getFullYear()) +
@@ -835,6 +834,7 @@ function atcb_decorate_data_dates(data) {
835
834
  data = atcb_replace_custom_variables(data, i);
836
835
  data = atcb_set_online_event_flag(data, i);
837
836
  }
837
+ data = atcb_decorate_data_button_status_handling(data);
838
838
  const now = new Date();
839
839
  if (!data.created || data.created === '') {
840
840
  data.created = atcb_format_datetime(now, 'clean', true);
@@ -3516,40 +3516,66 @@ function atcb_parseRRule(rruleStr, deep = true) {
3516
3516
  }, {});
3517
3517
  if (!parts.FREQ) throw new Error('RRULE must have FREQ');
3518
3518
  parts.FREQ = parts.FREQ.toUpperCase();
3519
- parts.INTERVAL = parseInt(parts.INTERVAL || 1, 10);
3520
- parts.COUNT = parts.COUNT ? parseInt(parts.COUNT, 10) : null;
3519
+ parts.INTERVAL = parseInt(parts.INTERVAL.toString() || '1', 10);
3520
+ parts.COUNT = parts.COUNT ? parseInt(parts.COUNT.toString(), 10) : null;
3521
3521
  if (parts.UNTIL) {
3522
- const untilStr = parts.UNTIL;
3523
- parts.UNTIL = deep ? new Date(Date.UTC(parseInt(untilStr.slice(0, 4), 10), parseInt(untilStr.slice(4, 6), 10) - 1, parseInt(untilStr.slice(6, 8), 10), parseInt(untilStr.slice(9, 11) || 0, 10), parseInt(untilStr.slice(11, 13) || 0, 10))) : untilStr;
3522
+ const untilStr = parts.UNTIL.toString();
3523
+ parts.UNTIL = deep ? new Date(Date.UTC(parseInt(untilStr.slice(0, 4), 10), parseInt(untilStr.slice(4, 6), 10) - 1, parseInt(untilStr.slice(6, 8), 10), parseInt(untilStr.slice(9, 11) || '0', 10), parseInt(untilStr.slice(11, 13) || '0', 10))) : untilStr;
3524
3524
  }
3525
3525
  if (parts.BYWEEKDAY || parts.BYDAY) {
3526
3526
  const dayMap = { SU: 0, MO: 1, TU: 2, WE: 3, TH: 4, FR: 5, SA: 6 };
3527
3527
  parts.BYWEEKDAY = deep
3528
3528
  ? (parts.BYWEEKDAY || parts.BYDAY)
3529
+ ?.toString()
3529
3530
  .split(',')
3530
3531
  .map((day) => dayMap[day.trim().toUpperCase()])
3531
3532
  .filter((n) => n !== undefined)
3532
3533
  : parts.BYWEEKDAY || parts.BYDAY;
3533
3534
  }
3534
- parts.BYMONTH = deep && parts.BYMONTH ? parts.BYMONTH.split(',').map((n) => parseInt(n, 10)) : parts.BYMONTH;
3535
- parts.BYYEARDAY = deep && parts.BYYEARDAY ? parts.BYYEARDAY.split(',').map((n) => parseInt(n, 10)) : parts.BYYEARDAY;
3536
- parts.BYMONTHDAY = deep && parts.BYMONTHDAY ? parts.BYMONTHDAY.split(',').map((n) => parseInt(n, 10)) : parts.BYMONTHDAY;
3537
- parts.BYWEEKNO = deep && parts.BYWEEKNO ? parts.BYWEEKNO.split(',').map((n) => parseInt(n, 10)) : parts.BYWEEKNO;
3538
- parts.BYHOUR = deep && parts.BYHOUR ? parts.BYHOUR.split(',').map((n) => parseInt(n, 10)) : parts.BYHOUR;
3535
+ parts.BYMONTH =
3536
+ deep && parts.BYMONTH
3537
+ ? parts.BYMONTH.toString()
3538
+ .split(',')
3539
+ .map((n) => parseInt(n, 10))
3540
+ : parts.BYMONTH;
3541
+ parts.BYYEARDAY =
3542
+ deep && parts.BYYEARDAY
3543
+ ? parts.BYYEARDAY.toString()
3544
+ .split(',')
3545
+ .map((n) => parseInt(n, 10))
3546
+ : parts.BYYEARDAY;
3547
+ parts.BYMONTHDAY =
3548
+ deep && parts.BYMONTHDAY
3549
+ ? parts.BYMONTHDAY.toString()
3550
+ .split(',')
3551
+ .map((n) => parseInt(n, 10))
3552
+ : parts.BYMONTHDAY;
3553
+ parts.BYWEEKNO =
3554
+ deep && parts.BYWEEKNO
3555
+ ? parts.BYWEEKNO.toString()
3556
+ .split(',')
3557
+ .map((n) => parseInt(n, 10))
3558
+ : parts.BYWEEKNO;
3559
+ parts.BYHOUR =
3560
+ deep && parts.BYHOUR
3561
+ ? parts.BYHOUR.toString()
3562
+ .split(',')
3563
+ .map((n) => parseInt(n, 10))
3564
+ : parts.BYHOUR;
3539
3565
  return parts;
3540
3566
  }
3541
3567
  function getDayOfYear(date) {
3542
3568
  const start = new Date(Date.UTC(date.getUTCFullYear(), 0, 1));
3543
- return Math.floor((date - start) / (1000 * 60 * 60 * 24)) + 1;
3569
+ return Math.floor((date.getTime() - start.getTime()) / (1000 * 60 * 60 * 24)) + 1;
3544
3570
  }
3545
3571
  function getWeekNumber(date) {
3546
3572
  const d = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()));
3547
3573
  d.setUTCDate(d.getUTCDate() + 4 - (d.getUTCDay() || 7));
3548
3574
  const yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));
3549
- return Math.ceil(((d - yearStart) / 86400000 + 1) / 7);
3575
+ return Math.ceil(((d.getTime() - yearStart.getTime()) / 86400000 + 1) / 7);
3550
3576
  }
3551
3577
  function matchesFreq(date, rrule, startDate) {
3552
- const interval = rrule.INTERVAL;
3578
+ const interval = parseInt(rrule.INTERVAL.toString(), 10) || 1;
3553
3579
  switch (rrule.FREQ) {
3554
3580
  case 'YEARLY':
3555
3581
  return (date.getUTCFullYear() - startDate.getUTCFullYear()) % interval === 0;
@@ -3558,12 +3584,12 @@ function matchesFreq(date, rrule, startDate) {
3558
3584
  return months % interval === 0;
3559
3585
  }
3560
3586
  case 'WEEKLY': {
3561
- const daysW = Math.floor((date - startDate) / 86400000);
3587
+ const daysW = Math.floor((date.getTime() - startDate.getTime()) / 86400000);
3562
3588
  const weeks = Math.floor(daysW / 7);
3563
3589
  return weeks % interval === 0;
3564
3590
  }
3565
3591
  case 'DAILY': {
3566
- const days = Math.floor((date - startDate) / 86400000);
3592
+ const days = Math.floor((date.getTime() - startDate.getTime()) / 86400000);
3567
3593
  return days % interval === 0;
3568
3594
  }
3569
3595
  default:
@@ -3629,8 +3655,15 @@ function atcb_getNextOccurrence(rruleStr, startDateTime, allday) {
3629
3655
  countDate++;
3630
3656
  }
3631
3657
  if (!nextDate) {
3632
- nextDate = occurrences.length > 1 ? occurrences[occurrences.length - 1] : null;
3633
- countDate = countDate - 1;
3658
+ if (occurrences.length > 1) {
3659
+ nextDate = occurrences[occurrences.length - 1];
3660
+ countDate = countDate - 1;
3661
+ } else if (occurrences.length === 1) {
3662
+ nextDate = occurrences[0];
3663
+ } else {
3664
+ nextDate = startDateTime;
3665
+ countDate = 1;
3666
+ }
3634
3667
  }
3635
3668
  return {
3636
3669
  nextOccurrence: nextDate,
@@ -223,14 +223,14 @@ function tzlib_get_timezones(jsonType = false) {
223
223
  * Add to Calendar Button
224
224
  * ++++++++++++++++++++++
225
225
  *
226
- * Version: 2.12.6
226
+ * Version: 2.12.8
227
227
  * Creator: Jens Kuerschner (https://jekuer.com)
228
228
  * Project: https://github.com/add2cal/add-to-calendar-button
229
229
  * License: Elastic License 2.0 (ELv2) (https://github.com/add2cal/add-to-calendar-button/blob/main/LICENSE.txt)
230
230
  * Note: DO NOT REMOVE THE COPYRIGHT NOTICE ABOVE!
231
231
  *
232
232
  */
233
- const atcbVersion = '2.12.6';
233
+ const atcbVersion = '2.12.8';
234
234
  const atcbCssTemplate = {
235
235
  if (typeof window === 'undefined') {
236
236
  return false;
@@ -494,7 +494,6 @@ async function atcb_decorate_data(data) {
494
494
  data.lightMode = atcb_decorate_light_mode(data.lightMode);
495
495
  data = atcb_decorate_data_i18n(data);
496
496
  data = atcb_decorate_data_dates(data);
497
- data = atcb_decorate_data_button_status_handling(data);
498
497
  data = await atcb_decorate_data_rsvp(data);
499
498
  return data;
500
499
  }
@@ -620,7 +619,7 @@ function atcb_decorate_data_recurring_events(data) {
620
619
  }
621
620
  const endDate = data.dates?.[0].endDate || data.endDate || startDate;
622
621
  const endTime = data.dates?.[0].endTime || data.endTime || '';
623
- const diff = new Date(endDate + (endTime && endTime !== '' ? 'T' + endTime : '')) - new Date(startDate + (startTime && startTime !== '' ? 'T' + startTime : ''));
622
+ const diff = new Date(endDate + (endTime && endTime !== '' ? 'T' + endTime : '')).getTime() - new Date(startDate + (startTime && startTime !== '' ? 'T' + startTime : '')).getTime();
624
623
  const newEndDateTime = new Date(occurenceData.nextOccurrence.getTime() + diff);
625
624
  const newEndDateTimeString =
626
625
  String(newEndDateTime.getFullYear()) +
@@ -834,6 +833,7 @@ function atcb_decorate_data_dates(data) {
834
833
  data = atcb_replace_custom_variables(data, i);
835
834
  data = atcb_set_online_event_flag(data, i);
836
835
  }
836
+ data = atcb_decorate_data_button_status_handling(data);
837
837
  const now = new Date();
838
838
  if (!data.created || data.created === '') {
839
839
  data.created = atcb_format_datetime(now, 'clean', true);
@@ -3515,40 +3515,66 @@ function atcb_parseRRule(rruleStr, deep = true) {
3515
3515
  }, {});
3516
3516
  if (!parts.FREQ) throw new Error('RRULE must have FREQ');
3517
3517
  parts.FREQ = parts.FREQ.toUpperCase();
3518
- parts.INTERVAL = parseInt(parts.INTERVAL || 1, 10);
3519
- parts.COUNT = parts.COUNT ? parseInt(parts.COUNT, 10) : null;
3518
+ parts.INTERVAL = parseInt(parts.INTERVAL.toString() || '1', 10);
3519
+ parts.COUNT = parts.COUNT ? parseInt(parts.COUNT.toString(), 10) : null;
3520
3520
  if (parts.UNTIL) {
3521
- const untilStr = parts.UNTIL;
3522
- parts.UNTIL = deep ? new Date(Date.UTC(parseInt(untilStr.slice(0, 4), 10), parseInt(untilStr.slice(4, 6), 10) - 1, parseInt(untilStr.slice(6, 8), 10), parseInt(untilStr.slice(9, 11) || 0, 10), parseInt(untilStr.slice(11, 13) || 0, 10))) : untilStr;
3521
+ const untilStr = parts.UNTIL.toString();
3522
+ parts.UNTIL = deep ? new Date(Date.UTC(parseInt(untilStr.slice(0, 4), 10), parseInt(untilStr.slice(4, 6), 10) - 1, parseInt(untilStr.slice(6, 8), 10), parseInt(untilStr.slice(9, 11) || '0', 10), parseInt(untilStr.slice(11, 13) || '0', 10))) : untilStr;
3523
3523
  }
3524
3524
  if (parts.BYWEEKDAY || parts.BYDAY) {
3525
3525
  const dayMap = { SU: 0, MO: 1, TU: 2, WE: 3, TH: 4, FR: 5, SA: 6 };
3526
3526
  parts.BYWEEKDAY = deep
3527
3527
  ? (parts.BYWEEKDAY || parts.BYDAY)
3528
+ ?.toString()
3528
3529
  .split(',')
3529
3530
  .map((day) => dayMap[day.trim().toUpperCase()])
3530
3531
  .filter((n) => n !== undefined)
3531
3532
  : parts.BYWEEKDAY || parts.BYDAY;
3532
3533
  }
3533
- parts.BYMONTH = deep && parts.BYMONTH ? parts.BYMONTH.split(',').map((n) => parseInt(n, 10)) : parts.BYMONTH;
3534
- parts.BYYEARDAY = deep && parts.BYYEARDAY ? parts.BYYEARDAY.split(',').map((n) => parseInt(n, 10)) : parts.BYYEARDAY;
3535
- parts.BYMONTHDAY = deep && parts.BYMONTHDAY ? parts.BYMONTHDAY.split(',').map((n) => parseInt(n, 10)) : parts.BYMONTHDAY;
3536
- parts.BYWEEKNO = deep && parts.BYWEEKNO ? parts.BYWEEKNO.split(',').map((n) => parseInt(n, 10)) : parts.BYWEEKNO;
3537
- parts.BYHOUR = deep && parts.BYHOUR ? parts.BYHOUR.split(',').map((n) => parseInt(n, 10)) : parts.BYHOUR;
3534
+ parts.BYMONTH =
3535
+ deep && parts.BYMONTH
3536
+ ? parts.BYMONTH.toString()
3537
+ .split(',')
3538
+ .map((n) => parseInt(n, 10))
3539
+ : parts.BYMONTH;
3540
+ parts.BYYEARDAY =
3541
+ deep && parts.BYYEARDAY
3542
+ ? parts.BYYEARDAY.toString()
3543
+ .split(',')
3544
+ .map((n) => parseInt(n, 10))
3545
+ : parts.BYYEARDAY;
3546
+ parts.BYMONTHDAY =
3547
+ deep && parts.BYMONTHDAY
3548
+ ? parts.BYMONTHDAY.toString()
3549
+ .split(',')
3550
+ .map((n) => parseInt(n, 10))
3551
+ : parts.BYMONTHDAY;
3552
+ parts.BYWEEKNO =
3553
+ deep && parts.BYWEEKNO
3554
+ ? parts.BYWEEKNO.toString()
3555
+ .split(',')
3556
+ .map((n) => parseInt(n, 10))
3557
+ : parts.BYWEEKNO;
3558
+ parts.BYHOUR =
3559
+ deep && parts.BYHOUR
3560
+ ? parts.BYHOUR.toString()
3561
+ .split(',')
3562
+ .map((n) => parseInt(n, 10))
3563
+ : parts.BYHOUR;
3538
3564
  return parts;
3539
3565
  }
3540
3566
  function getDayOfYear(date) {
3541
3567
  const start = new Date(Date.UTC(date.getUTCFullYear(), 0, 1));
3542
- return Math.floor((date - start) / (1000 * 60 * 60 * 24)) + 1;
3568
+ return Math.floor((date.getTime() - start.getTime()) / (1000 * 60 * 60 * 24)) + 1;
3543
3569
  }
3544
3570
  function getWeekNumber(date) {
3545
3571
  const d = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()));
3546
3572
  d.setUTCDate(d.getUTCDate() + 4 - (d.getUTCDay() || 7));
3547
3573
  const yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));
3548
- return Math.ceil(((d - yearStart) / 86400000 + 1) / 7);
3574
+ return Math.ceil(((d.getTime() - yearStart.getTime()) / 86400000 + 1) / 7);
3549
3575
  }
3550
3576
  function matchesFreq(date, rrule, startDate) {
3551
- const interval = rrule.INTERVAL;
3577
+ const interval = parseInt(rrule.INTERVAL.toString(), 10) || 1;
3552
3578
  switch (rrule.FREQ) {
3553
3579
  case 'YEARLY':
3554
3580
  return (date.getUTCFullYear() - startDate.getUTCFullYear()) % interval === 0;
@@ -3557,12 +3583,12 @@ function matchesFreq(date, rrule, startDate) {
3557
3583
  return months % interval === 0;
3558
3584
  }
3559
3585
  case 'WEEKLY': {
3560
- const daysW = Math.floor((date - startDate) / 86400000);
3586
+ const daysW = Math.floor((date.getTime() - startDate.getTime()) / 86400000);
3561
3587
  const weeks = Math.floor(daysW / 7);
3562
3588
  return weeks % interval === 0;
3563
3589
  }
3564
3590
  case 'DAILY': {
3565
- const days = Math.floor((date - startDate) / 86400000);
3591
+ const days = Math.floor((date.getTime() - startDate.getTime()) / 86400000);
3566
3592
  return days % interval === 0;
3567
3593
  }
3568
3594
  default:
@@ -3628,8 +3654,15 @@ function atcb_getNextOccurrence(rruleStr, startDateTime, allday) {
3628
3654
  countDate++;
3629
3655
  }
3630
3656
  if (!nextDate) {
3631
- nextDate = occurrences.length > 1 ? occurrences[occurrences.length - 1] : null;
3632
- countDate = countDate - 1;
3657
+ if (occurrences.length > 1) {
3658
+ nextDate = occurrences[occurrences.length - 1];
3659
+ countDate = countDate - 1;
3660
+ } else if (occurrences.length === 1) {
3661
+ nextDate = occurrences[0];
3662
+ } else {
3663
+ nextDate = startDateTime;
3664
+ countDate = 1;
3665
+ }
3633
3666
  }
3634
3667
  return {
3635
3668
  nextOccurrence: nextDate,
@@ -223,14 +223,14 @@ function tzlib_get_timezones(jsonType = false) {
223
223
  * Add to Calendar Button
224
224
  * ++++++++++++++++++++++
225
225
  *
226
- * Version: 2.12.6
226
+ * Version: 2.12.8
227
227
  * Creator: Jens Kuerschner (https://jekuer.com)
228
228
  * Project: https://github.com/add2cal/add-to-calendar-button
229
229
  * License: Elastic License 2.0 (ELv2) (https://github.com/add2cal/add-to-calendar-button/blob/main/LICENSE.txt)
230
230
  * Note: DO NOT REMOVE THE COPYRIGHT NOTICE ABOVE!
231
231
  *
232
232
  */
233
- const atcbVersion = '2.12.6';
233
+ const atcbVersion = '2.12.8';
234
234
  const atcbCssTemplate = {};
235
235
  const atcbIsBrowser = () => {
236
236
  if (typeof window === 'undefined') {
@@ -495,7 +495,6 @@ async function atcb_decorate_data(data) {
495
495
  data.lightMode = atcb_decorate_light_mode(data.lightMode);
496
496
  data = atcb_decorate_data_i18n(data);
497
497
  data = atcb_decorate_data_dates(data);
498
- data = atcb_decorate_data_button_status_handling(data);
499
498
  data = await atcb_decorate_data_rsvp(data);
500
499
  return data;
501
500
  }
@@ -621,7 +620,7 @@ function atcb_decorate_data_recurring_events(data) {
621
620
  }
622
621
  const endDate = data.dates?.[0].endDate || data.endDate || startDate;
623
622
  const endTime = data.dates?.[0].endTime || data.endTime || '';
624
- const diff = new Date(endDate + (endTime && endTime !== '' ? 'T' + endTime : '')) - new Date(startDate + (startTime && startTime !== '' ? 'T' + startTime : ''));
623
+ const diff = new Date(endDate + (endTime && endTime !== '' ? 'T' + endTime : '')).getTime() - new Date(startDate + (startTime && startTime !== '' ? 'T' + startTime : '')).getTime();
625
624
  const newEndDateTime = new Date(occurenceData.nextOccurrence.getTime() + diff);
626
625
  const newEndDateTimeString =
627
626
  String(newEndDateTime.getFullYear()) +
@@ -835,6 +834,7 @@ function atcb_decorate_data_dates(data) {
835
834
  data = atcb_replace_custom_variables(data, i);
836
835
  data = atcb_set_online_event_flag(data, i);
837
836
  }
837
+ data = atcb_decorate_data_button_status_handling(data);
838
838
  const now = new Date();
839
839
  if (!data.created || data.created === '') {
840
840
  data.created = atcb_format_datetime(now, 'clean', true);
@@ -4236,40 +4236,66 @@ function atcb_parseRRule(rruleStr, deep = true) {
4236
4236
  }, {});
4237
4237
  if (!parts.FREQ) throw new Error('RRULE must have FREQ');
4238
4238
  parts.FREQ = parts.FREQ.toUpperCase();
4239
- parts.INTERVAL = parseInt(parts.INTERVAL || 1, 10);
4240
- parts.COUNT = parts.COUNT ? parseInt(parts.COUNT, 10) : null;
4239
+ parts.INTERVAL = parseInt(parts.INTERVAL.toString() || '1', 10);
4240
+ parts.COUNT = parts.COUNT ? parseInt(parts.COUNT.toString(), 10) : null;
4241
4241
  if (parts.UNTIL) {
4242
- const untilStr = parts.UNTIL;
4243
- parts.UNTIL = deep ? new Date(Date.UTC(parseInt(untilStr.slice(0, 4), 10), parseInt(untilStr.slice(4, 6), 10) - 1, parseInt(untilStr.slice(6, 8), 10), parseInt(untilStr.slice(9, 11) || 0, 10), parseInt(untilStr.slice(11, 13) || 0, 10))) : untilStr;
4242
+ const untilStr = parts.UNTIL.toString();
4243
+ parts.UNTIL = deep ? new Date(Date.UTC(parseInt(untilStr.slice(0, 4), 10), parseInt(untilStr.slice(4, 6), 10) - 1, parseInt(untilStr.slice(6, 8), 10), parseInt(untilStr.slice(9, 11) || '0', 10), parseInt(untilStr.slice(11, 13) || '0', 10))) : untilStr;
4244
4244
  }
4245
4245
  if (parts.BYWEEKDAY || parts.BYDAY) {
4246
4246
  const dayMap = { SU: 0, MO: 1, TU: 2, WE: 3, TH: 4, FR: 5, SA: 6 };
4247
4247
  parts.BYWEEKDAY = deep
4248
4248
  ? (parts.BYWEEKDAY || parts.BYDAY)
4249
+ ?.toString()
4249
4250
  .split(',')
4250
4251
  .map((day) => dayMap[day.trim().toUpperCase()])
4251
4252
  .filter((n) => n !== undefined)
4252
4253
  : parts.BYWEEKDAY || parts.BYDAY;
4253
4254
  }
4254
- parts.BYMONTH = deep && parts.BYMONTH ? parts.BYMONTH.split(',').map((n) => parseInt(n, 10)) : parts.BYMONTH;
4255
- parts.BYYEARDAY = deep && parts.BYYEARDAY ? parts.BYYEARDAY.split(',').map((n) => parseInt(n, 10)) : parts.BYYEARDAY;
4256
- parts.BYMONTHDAY = deep && parts.BYMONTHDAY ? parts.BYMONTHDAY.split(',').map((n) => parseInt(n, 10)) : parts.BYMONTHDAY;
4257
- parts.BYWEEKNO = deep && parts.BYWEEKNO ? parts.BYWEEKNO.split(',').map((n) => parseInt(n, 10)) : parts.BYWEEKNO;
4258
- parts.BYHOUR = deep && parts.BYHOUR ? parts.BYHOUR.split(',').map((n) => parseInt(n, 10)) : parts.BYHOUR;
4255
+ parts.BYMONTH =
4256
+ deep && parts.BYMONTH
4257
+ ? parts.BYMONTH.toString()
4258
+ .split(',')
4259
+ .map((n) => parseInt(n, 10))
4260
+ : parts.BYMONTH;
4261
+ parts.BYYEARDAY =
4262
+ deep && parts.BYYEARDAY
4263
+ ? parts.BYYEARDAY.toString()
4264
+ .split(',')
4265
+ .map((n) => parseInt(n, 10))
4266
+ : parts.BYYEARDAY;
4267
+ parts.BYMONTHDAY =
4268
+ deep && parts.BYMONTHDAY
4269
+ ? parts.BYMONTHDAY.toString()
4270
+ .split(',')
4271
+ .map((n) => parseInt(n, 10))
4272
+ : parts.BYMONTHDAY;
4273
+ parts.BYWEEKNO =
4274
+ deep && parts.BYWEEKNO
4275
+ ? parts.BYWEEKNO.toString()
4276
+ .split(',')
4277
+ .map((n) => parseInt(n, 10))
4278
+ : parts.BYWEEKNO;
4279
+ parts.BYHOUR =
4280
+ deep && parts.BYHOUR
4281
+ ? parts.BYHOUR.toString()
4282
+ .split(',')
4283
+ .map((n) => parseInt(n, 10))
4284
+ : parts.BYHOUR;
4259
4285
  return parts;
4260
4286
  }
4261
4287
  function getDayOfYear(date) {
4262
4288
  const start = new Date(Date.UTC(date.getUTCFullYear(), 0, 1));
4263
- return Math.floor((date - start) / (1000 * 60 * 60 * 24)) + 1;
4289
+ return Math.floor((date.getTime() - start.getTime()) / (1000 * 60 * 60 * 24)) + 1;
4264
4290
  }
4265
4291
  function getWeekNumber(date) {
4266
4292
  const d = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()));
4267
4293
  d.setUTCDate(d.getUTCDate() + 4 - (d.getUTCDay() || 7));
4268
4294
  const yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));
4269
- return Math.ceil(((d - yearStart) / 86400000 + 1) / 7);
4295
+ return Math.ceil(((d.getTime() - yearStart.getTime()) / 86400000 + 1) / 7);
4270
4296
  }
4271
4297
  function matchesFreq(date, rrule, startDate) {
4272
- const interval = rrule.INTERVAL;
4298
+ const interval = parseInt(rrule.INTERVAL.toString(), 10) || 1;
4273
4299
  switch (rrule.FREQ) {
4274
4300
  case 'YEARLY':
4275
4301
  return (date.getUTCFullYear() - startDate.getUTCFullYear()) % interval === 0;
@@ -4278,12 +4304,12 @@ function matchesFreq(date, rrule, startDate) {
4278
4304
  return months % interval === 0;
4279
4305
  }
4280
4306
  case 'WEEKLY': {
4281
- const daysW = Math.floor((date - startDate) / 86400000);
4307
+ const daysW = Math.floor((date.getTime() - startDate.getTime()) / 86400000);
4282
4308
  const weeks = Math.floor(daysW / 7);
4283
4309
  return weeks % interval === 0;
4284
4310
  }
4285
4311
  case 'DAILY': {
4286
- const days = Math.floor((date - startDate) / 86400000);
4312
+ const days = Math.floor((date.getTime() - startDate.getTime()) / 86400000);
4287
4313
  return days % interval === 0;
4288
4314
  }
4289
4315
  default:
@@ -4349,8 +4375,15 @@ function atcb_getNextOccurrence(rruleStr, startDateTime, allday) {
4349
4375
  countDate++;
4350
4376
  }
4351
4377
  if (!nextDate) {
4352
- nextDate = occurrences.length > 1 ? occurrences[occurrences.length - 1] : null;
4353
- countDate = countDate - 1;
4378
+ if (occurrences.length > 1) {
4379
+ nextDate = occurrences[occurrences.length - 1];
4380
+ countDate = countDate - 1;
4381
+ } else if (occurrences.length === 1) {
4382
+ nextDate = occurrences[0];
4383
+ } else {
4384
+ nextDate = startDateTime;
4385
+ countDate = 1;
4386
+ }
4354
4387
  }
4355
4388
  return {
4356
4389
  nextOccurrence: nextDate,