add-to-calendar-button 2.6.19 → 2.6.21

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.
@@ -1,4 +1,3 @@
1
- // eslint-disable-next-line @typescript-eslint/no-var-requires
2
1
  const tzlibActions = require('timezones-ical-library');
3
2
  /*!
4
3
  * @preserve
@@ -7,14 +6,14 @@ const tzlibActions = require('timezones-ical-library');
7
6
  * Add to Calendar Button
8
7
  * ++++++++++++++++++++++
9
8
  *
10
- * Version: 2.6.19
9
+ * Version: 2.6.21
11
10
  * Creator: Jens Kuerschner (https://jekuer.com)
12
11
  * Project: https://github.com/add2cal/add-to-calendar-button
13
12
  * License: Elastic License 2.0 (ELv2) (https://github.com/add2cal/add-to-calendar-button/blob/main/LICENSE.txt)
14
13
  * Note: DO NOT REMOVE THE COPYRIGHT NOTICE ABOVE!
15
14
  *
16
15
  */
17
- const atcbVersion = '2.6.19';
16
+ const atcbVersion = '2.6.21';
18
17
  const atcbCssTemplate = {};
19
18
  const atcbIsBrowser = () => {
20
19
  if (typeof window === 'undefined') {
@@ -58,7 +57,7 @@ const atcbIsAndroid = atcbIsBrowser()
58
57
  };*/
59
58
  const atcbIsSafari = atcbIsBrowser()
60
59
  ? () => {
61
- if (/^((?!chrome|android|crios|fxios).)*safari/i.test(navigator.userAgent)) {
60
+ if (/^(?:(?!chrome|android|crios|fxios).)*safari/i.test(navigator.userAgent)) {
62
61
  return true;
63
62
  } else {
64
63
  return false;
@@ -76,7 +75,7 @@ const atcbIsMobile = () => {
76
75
  };
77
76
  const atcbIsWebView = atcbIsBrowser()
78
77
  ? () => {
79
- if (/(; ?wv|(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari))/i.test(navigator.userAgent)) {
78
+ if (/; ?wv|(?:iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(navigator.userAgent)) {
80
79
  return true;
81
80
  } else {
82
81
  return false;
@@ -87,7 +86,7 @@ const atcbIsWebView = atcbIsBrowser()
87
86
  };
88
87
  const atcbIsProblematicWebView = atcbIsBrowser()
89
88
  ? () => {
90
- if (/(Instagram)/i.test(navigator.userAgent)) {
89
+ if (/Instagram/i.test(navigator.userAgent)) {
91
90
  return true;
92
91
  } else {
93
92
  return false;
@@ -306,7 +305,7 @@ function atcb_decorate_data_timezone(tz = null) {
306
305
  function atcb_decorate_data_rrule(data) {
307
306
  if (data.recurrence && data.recurrence !== '') {
308
307
  data.recurrence = data.recurrence.replace(/\s+/g, '').toUpperCase();
309
- if (!/^(RRULE:[\w=;,:+-/\\]+|daily|weekly|monthly|yearly)$/im.test(data.recurrence)) {
308
+ if (!/^(?:RRULE:[\w=;,:+\-/\\]+|daily|weekly|monthly|yearly)$/im.test(data.recurrence)) {
310
309
  data.recurrence = '!wrong rrule format!';
311
310
  } else {
312
311
  if (/^RRULE:/i.test(data.recurrence)) {
@@ -549,8 +548,7 @@ function atcb_decorate_data_description(data, i) {
549
548
  description = cleanDescription(description);
550
549
  if (data.customVar) {
551
550
  for (const key in data.customVar) {
552
- const sanitizedKey = key.replace(/[^a-zA-Z0-9\-_.]/g, '');
553
- // eslint-disable-next-line security/detect-non-literal-regexp
551
+ const sanitizedKey = key.replace(/[^\w\-.]/g, '');
554
552
  description = description.replace(new RegExp(`%%${sanitizedKey}%%`, 'g'), data.customVar[`${key}`]);
555
553
  }
556
554
  }
@@ -609,10 +607,8 @@ function atcb_decorate_data_extend(data) {
609
607
  }
610
608
  if (data.customVar) {
611
609
  for (const key in data.customVar) {
612
- const sanitizedKey = key.replace(/[^a-zA-Z0-9\-_.]/g, '');
613
- // eslint-disable-next-line security/detect-non-literal-regexp
610
+ const sanitizedKey = key.replace(/[^\w\-.]/g, '');
614
611
  data.dates[`${i}`].name = data.dates[`${i}`].name.replace(new RegExp(`%%${sanitizedKey}%%`, 'g'), data.customVar[`${key}`]);
615
- // eslint-disable-next-line security/detect-non-literal-regexp
616
612
  data.dates[`${i}`].location = data.dates[`${i}`].location.replace(new RegExp(`%%${sanitizedKey}%%`, 'g'), data.customVar[`${key}`]);
617
613
  }
618
614
  }
@@ -631,7 +627,7 @@ function atcb_date_cleanup(dateTimeData) {
631
627
  }
632
628
  const endpoints = ['start', 'end'];
633
629
  endpoints.forEach(function (point) {
634
- if (!/^(\d{4}-\d{2}-\d{2}T?(?:\d{2}:\d{2}|)Z?|today(?:\+\d{1,4}|))$/i.test(dateTimeData[point + 'Date'])) {
630
+ if (!/^(?:\d{4}-\d{2}-\d{2}T?(?:\d{2}:\d{2})?Z?|today(?:\+\d{1,4})?)$/i.test(dateTimeData[point + 'Date'])) {
635
631
  dateTimeData[point + 'Date'] = 'badly-formed';
636
632
  } else {
637
633
  dateTimeData[point + 'Date'] = atcb_date_calculation(dateTimeData[point + 'Date']);
@@ -836,7 +832,7 @@ async function atcb_validate_buttonStyle(data, msgPrefix) {
836
832
  if (!availableStyles.includes(data.buttonStyle)) {
837
833
  throw new Error(msgPrefix + ' failed: provided buttonStyle invalid');
838
834
  }
839
- if (data.customCss && data.customCss !== '' && (!atcb_secure_url(data.customCss, false) || !/\.css($|\?)/.test(data.customCss))) {
835
+ if (data.customCss && data.customCss !== '' && (!atcb_secure_url(data.customCss, false) || !/\.css(?:$|\?)/.test(data.customCss))) {
840
836
  throw new Error(msgPrefix + ' failed: customCss provided, but no valid url');
841
837
  }
842
838
  if ((!data.customCss || data.customCss === '') && data.buttonStyle === 'custom') {
@@ -915,7 +911,7 @@ async function atcb_validate_availability(data, msgPrefix, i, msgSuffix) {
915
911
  async function atcb_validate_organizer(data, msgPrefix, i, msgSuffix) {
916
912
  if (data.dates[`${i}`].organizer && data.dates[`${i}`].organizer !== '') {
917
913
  const organizerParts = data.dates[`${i}`].organizer.split('|');
918
- if (organizerParts.length !== 2 || organizerParts[0].length > 50 || organizerParts[1].length > 80 || !atcb_validEmail(organizerParts[1])) {
914
+ if (organizerParts.length !== 2 || organizerParts[0].length > 50 || organizerParts[1].length > 100 || !atcb_validEmail(organizerParts[1])) {
919
915
  throw new Error(msgPrefix + ' failed: organizer needs to match the schema "NAME|EMAIL" with a valid email address' + msgSuffix);
920
916
  }
921
917
  }
@@ -930,14 +926,14 @@ async function atcb_validate_attendee(data, msgPrefix, i, msgSuffix) {
930
926
  if (attendeeParts.length === 1 && atcb_validEmail(attendeeParts[0])) {
931
927
  return true;
932
928
  }
933
- if (attendeeParts.length !== 2 || attendeeParts[0].length > 50 || attendeeParts[1].length > 80 || !atcb_validEmail(attendeeParts[1])) {
929
+ if (attendeeParts.length !== 2 || attendeeParts[0].length > 50 || attendeeParts[1].length > 100 || !atcb_validEmail(attendeeParts[1])) {
934
930
  throw new Error(msgPrefix + ' failed: attendee needs to be a valid email address or match the schema "NAME|EMAIL" with EMAIL being a valid email address' + msgSuffix);
935
931
  }
936
932
  }
937
933
  return true;
938
934
  }
939
935
  async function atcb_validate_uid(data, msgPrefix, i, msgSuffix) {
940
- if (!/^(\w|-){1,254}$/.test(data.dates[`${i}`].uid)) {
936
+ if (!/^(?:\w|-){1,254}$/.test(data.dates[`${i}`].uid)) {
941
937
  if (data.debug) {
942
938
  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);
943
939
  }
@@ -1006,7 +1002,7 @@ async function atcb_validate_rrule(data, msgPrefix) {
1006
1002
  if (data.recurrence && data.recurrence !== '' && data.dates.length > 1) {
1007
1003
  throw new Error(msgPrefix + ' failed: RRULE and multi-date set at the same time');
1008
1004
  }
1009
- if (data.recurrence && data.recurrence !== '' && !/^RRULE:[\w=;,:+-/\\]+$/i.test(data.recurrence)) {
1005
+ if (data.recurrence && data.recurrence !== '' && !/^RRULE:[\w=;,:+\-/\\]+$/i.test(data.recurrence)) {
1010
1006
  throw new Error(msgPrefix + ' failed: RRULE data misspelled');
1011
1007
  }
1012
1008
  return true;
@@ -1015,22 +1011,22 @@ async function atcb_validate_rrule_simplyfied(data, msgPrefix) {
1015
1011
  if (data.recurrence_interval && (data.recurrence_interval < 1 || data.recurrence_interval % 1 !== 0)) {
1016
1012
  throw new Error(msgPrefix + ' failed: recurrence data (interval) misspelled');
1017
1013
  }
1018
- if (data.recurrence_until && data.recurrence_until !== '' && !/^(\d|-|:)+$/i.test(data.recurrence_until)) {
1014
+ if (data.recurrence_until && data.recurrence_until !== '' && !/^[\d\-:]+$/.test(data.recurrence_until)) {
1019
1015
  throw new Error(msgPrefix + ' failed: recurrence data (until) misspelled');
1020
1016
  }
1021
1017
  if (data.recurrence_count && (data.recurrence_count < 1 || data.recurrence_count % 1 !== 0)) {
1022
1018
  throw new Error(msgPrefix + ' failed: recurrence data (interval) misspelled');
1023
1019
  }
1024
- if (data.recurrence_byMonth && data.recurrence_byMonth !== '' && !/^(\d|,)+$/.test(data.recurrence_byMonth)) {
1020
+ if (data.recurrence_byMonth && data.recurrence_byMonth !== '' && !/^[\d,]+$/.test(data.recurrence_byMonth)) {
1025
1021
  throw new Error(msgPrefix + ' failed: recurrence data (byMonth) misspelled');
1026
1022
  }
1027
- if (data.recurrence_byMonthDay && data.recurrence_byMonthDay !== '' && !/^(\d|,)+$/.test(data.recurrence_byMonthDay)) {
1023
+ if (data.recurrence_byMonthDay && data.recurrence_byMonthDay !== '' && !/^[\d,]+$/.test(data.recurrence_byMonthDay)) {
1028
1024
  throw new Error(msgPrefix + ' failed: recurrence data (byMonthDay) misspelled');
1029
1025
  }
1030
- if (data.recurrence_byDay && data.recurrence_byDay !== '' && !/^(\d|-|MO|TU|WE|TH|FR|SA|SU|,)+$/im.test(data.recurrence_byDay)) {
1026
+ if (data.recurrence_byDay && data.recurrence_byDay !== '' && !/^(?:[\d,-]|MO|TU|WE|TH|FR|SA|SU)+$/im.test(data.recurrence_byDay)) {
1031
1027
  throw new Error(msgPrefix + ' failed: recurrence data (byDay) misspelled');
1032
1028
  }
1033
- if (data.recurrence_weekstart && data.recurrence_weekstart !== '' && !/^(MO|TU|WE|TH|FR|SA|SU)$/im.test(data.recurrence_weekstart)) {
1029
+ if (data.recurrence_weekstart && data.recurrence_weekstart !== '' && !/^(?:MO|TU|WE|TH|FR|SA|SU)$/im.test(data.recurrence_weekstart)) {
1034
1030
  throw new Error(msgPrefix + ' failed: recurrence data (weekstart) misspelled');
1035
1031
  }
1036
1032
  return true;
@@ -1471,7 +1467,7 @@ async function atcb_generate_rsvp_form(host, data, hostEl, keyboardTrigger = fal
1471
1467
  } else {
1472
1468
  rsvpData.fields = rsvpData.fields.map((field) => {
1473
1469
  if (field.name === 'email') {
1474
- return { ...field, required: true, type: 'email', default: attendee !== '' && attendee || field.default };
1470
+ return { ...field, required: true, type: 'email', default: attendee !== '' ? attendee : field.default };
1475
1471
  }
1476
1472
  return field;
1477
1473
  });
@@ -2237,24 +2233,36 @@ function atcb_generate_bg_overlay(host, trigger = '', modal = false, darken = tr
2237
2233
  }
2238
2234
  return bgOverlay;
2239
2235
  }
2240
- function atcb_create_atcbl(host, atList = true, returnEl = false) {
2236
+ /*!
2237
+ * @preserve
2238
+ * PER LICENSE AGREEMENT, YOU ARE NOT ALLOWED TO REMOVE OR CHANGE THIS FUNCTION!
2239
+ */
2240
+ function atcb_create_atcbl(host, atList = true, returnEl = false, licenseNoteOnly = false) {
2241
2241
  const atcbL = document.createElement('div');
2242
2242
  atcbL.id = 'atcb-reference';
2243
- setTimeout(() => {
2244
- const svg =
2245
- '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 52.916 2.8305"><path d="M51.446 1.2565c.0708-.2518.293-.4511.5555-.4783.2211-.042.4641.0128.622.18.2474.2472.3045.6146.2916.9503v.8594h-.8307l-.0027-1.0447c-.0079-.1547-.1075-.343-.2868-.3238-.2049.0128-.3115.2421-.295.4257v.9428h-.823l-.0027-1.0435c-.0076-.1569-.1131-.3412-.2918-.3252-.2069.008-.311.2351-.2939.4188v.9499h-.8307V.8237h.8307v.4019c.0906-.2264.2876-.4188.5368-.449.2878-.0533.6071.0705.7509.3331.0279.0465.0509.0959.0699.1468zm-3.9843.5228c-.0102.1874.107.3914.3024.424.1869.0419.3799-.0941.4215-.2776.0535-.1967-.0023-.4493-.2015-.5411-.1767-.0892-.4107.0032-.483.1865-.0297.0649-.0391.1374-.0392.2082zm-.7691 0c.0037-.2984.1395-.5957.3792-.7774.3035-.2327.7168-.2798 1.0829-.2005.3299.0729.6352.3018.7481.6275.1337.3797.0441.8526-.2795 1.1099-.3184.2561-.7624.3092-1.152.2184-.3379-.0788-.6426-.3312-.7369-.6717a1.092 1.092 0 0 1-.0417-.3063zm-.2351-.3308c-.1638-.0482-.3406-.0889-.5104-.0492s-.2742.2154-.2664.3837c-.0082.1705.0998.3468.2712.3876.1657.0389.3389.0016.4979-.0492l.0769.5499c-.2369.1272-.5165.1434-.7791.1149-.3236-.0401-.6353-.2311-.7805-.529-.1237-.2511-.139-.5539-.0485-.8181.108-.3075.3782-.5432.6902-.6287.2064-.058.4286-.0585.6371-.0119.1027.0253.198.0732.2884.1269l-.0769.523zm-2.6877.9806c-.003-.1221.066-.2371.1643-.3062.1303-.0934.3092-.1186.4572-.0533.132.054.2426.1752.2607.3197s-.0575.2836-.1746.3603c-.1633.1093-.3947.1063-.5517-.0135-.0951-.0715-.1577-.187-.1559-.307zm-3.046-1.0111c-.0091-.4276.1794-.8577.5181-1.1231.3714-.2958.8865-.3488 1.3384-.2477.4065.0946.7695.3811.9242.7731.2302.553.1173 1.2562-.3406 1.6606-.4021.3563-.9997.4264-1.5018.273-.4407-.1312-.7876-.5106-.8926-.9564a1.565 1.565 0 0 1-.0458-.3795zm1.4499.6961c.2631.014.4813-.2093.5326-.4557.0785-.3033.0224-.6834-.2491-.8753-.2182-.159-.5514-.1019-.704.1211-.1692.2437-.1902.5756-.088.8501.0775.2087.2816.3661.5085.3597zm-1.631.6458c-.1978.0602-.4078.0938-.6123.0464-.2697-.0443-.5044-.2371-.6009-.4927-.0701-.1852-.1026-.3819-.154-.5728h-.1846v1.0268h-.8614V.0601l1.3192.0034c.3398.0217.7177.1323.9118.434.152.2456.127.584-.0389.8163-.0979.1284-.2387.2162-.3846.2807.0316.1513.0475.3167.1461.4418.1193.1187.3064.1031.4596.0812v.6422zm-.871-1.8651c.0103-.138-.1243-.231-.25-.2384-.1427-.0193-.2871-.0088-.4307-.0115v.5422c.1905-.0038.3947.0138.5678-.0796a.234.234 0 0 0 .1128-.2126zM35.573.0603l1.1424.0047c.3439.0209.7218.1098.9446.3944.2252.2934.2163.7545-.0512 1.0195-.279.2859-.698.3701-1.0838.362-.0329.0105-.1126-.0258-.102.0281v.8987h-.8499V.0603zm1.0192 1.2345c.1672.0054.3805-.0562.4233-.2409.0425-.1434-.0225-.3102-.1619-.3724-.1328-.0705-.2859-.0537-.4306-.0559v.6615c.0561.0073.1128.0073.1692.0077zm-2.5176.2226h1.0576v.4653h-1.0576zM32.3311.8234h.8307v.4019q.0942-.2384.25-.348.1577-.1115.3615-.1115l.1154.6442q-.375 0-.5519.0808-.175.0788-.175.2538v1.023h-.8307zm-1.2257 1.5791c-.0937.2116-.2986.3716-.5319.3897-.3887.0533-.7844-.1743-.9578-.5217-.2044-.381-.1519-.892.1543-1.2049.2461-.2614.6627-.389.9973-.2285.1574.0799.2779.2236.3381.3886V.7662h.8268v2.0017h-.8268v-.3653zm0-.6345c-.0052-.2449-.2747-.4425-.5088-.3585-.217.0615-.3402.3271-.243.5316.0896.2161.3875.3078.5783.1678.1106-.0747.179-.2073.1735-.3408zM27.7118.7662c.2401-.008.4923.1021.6064.3222.0351.0816.045.0806.0397.0023V.1721l.8307-.1231v2.7189h-.8307v-.3653c-.0907.2158-.3003.3744-.5356.39-.3605.0507-.7279-.1432-.9123-.4525-.2569-.3983-.1992-.9693.1456-1.2985.173-.1702.412-.2772.6563-.2754zm.6461 1.0018c-.0048-.2526-.2909-.4519-.5276-.3518-.2324.0782-.3309.3933-.1843.5898.1239.1938.425.2285.5871.0636.0811-.0768.1287-.1897.1248-.3015zM24.139.8233h.7922v.4019c.1006-.2169.2949-.397.5347-.4408.2696-.0572.58.0085.76.2293.2045.2403.2438.5692.2358.8734v.8802h-.8268l-.0022-1.1213c-.004-.1252-.0677-.2748-.2066-.2939-.2045-.0306-.3739.1457-.4412.3226-.0292.0785-.0098.1646-.0154.2467v.8459h-.8306V.8233zm-1.0416 1.4236c.2011-.0002.3981-.0574.5807-.1384l.0961.5288c-.3198.1421-.6806.1894-1.027.145-.3369-.0473-.6587-.2545-.8007-.5699-.1588-.3469-.1132-.7886.1413-1.0788.2741-.3191.7406-.4335 1.1413-.3308.2768.0734.5008.3019.5751.5779.0429.146.0624.3015.043.453l-1.1806.1538c.0368.134.158.2311.2944.2482.0449.0082.0907.0114.1363.0114zm.1461-.7557c-.0268-.1234-.1257-.237-.2578-.244-.143-.0241-.2868.0725-.325.2111-.0103.0527-.0737.2029.0271.1552l.5558-.1223zm-1.4939 1.1721c-.2463.1208-.5356.1686-.805.1092-.227-.0527-.3993-.2481-.4518-.4712-.0545-.2125-.0296-.4333-.0353-.6502V.1714l.8307-.1231.0011 1.9292c.002.1378.1537.1938.2711.1813.0651.0169.1819-.1.162.0152l.0274.4893zm-2.5115-.2609c-.0937.2116-.2986.3716-.5319.3897-.3887.0533-.7844-.1743-.9578-.5217-.2044-.381-.1519-.892.1543-1.2049.2461-.2614.6627-.389.9973-.2285.1574.0799.2779.2236.3381.3886V.7661h.8268v2.0017h-.8268v-.3653zm0-.6345c-.0052-.2449-.2747-.4425-.5088-.3585-.217.0615-.3402.3271-.243.5316.0896.2161.3875.3078.5783.1678.1106-.0747.179-.2073.1735-.3408zm-2.3726.35c.1696.0054.3334-.0479.4884-.1115l.1077.6249c-.5137.3026-1.2229.2625-1.6732-.1399-.2959-.2444-.4693-.6191-.4819-1.0009-.0323-.4791.181-.9792.5853-1.2496.4565-.3128 1.0898-.3142 1.5659-.0438l-.1038.6115c-.2721-.1029-.5957-.168-.8667-.0274-.2291.1239-.3077.4039-.2984.6481-.0043.2465.1061.5161.3427.6212.1037.0495.2198.0676.3339.0676zm-2.923-.6005h1.0576v.4653h-1.0576zm-1.7829.2619c-.0102.1874.107.3914.3024.424.1869.0419.3799-.0941.4215-.2776.0535-.1967-.0023-.4493-.2015-.5411-.1767-.0892-.4107.0032-.4831.1865-.0297.0649-.0391.1374-.0392.2082zm-.7691 0c.0037-.2984.1395-.5957.3792-.7774.3035-.2327.7168-.2798 1.0829-.2005.33.0729.6352.3018.7481.6275.1337.3797.0441.8526-.2795 1.1099-.3184.2561-.7624.3092-1.152.2184-.3379-.0788-.6426-.3312-.7369-.6717a1.092 1.092 0 0 1-.0417-.3063zm-.1976.8841c-.2463.1208-.5356.1686-.805.1092-.227-.0527-.3993-.2481-.4518-.4712-.0557-.2169-.0286-.4422-.0334-.6635l.0019-.3551h-.25V.7943h.3115l.3653-.7461h.4v.7461h.4538v.4884h-.4538l.0011.6943c.0034.1365.1541.1943.2715.1818.0768.006.1848-.0959.1624.0301l.0265.4744zm-2.7861-1.146h1.0575v.4653H8.4068zM6.5412.7662c.2401-.008.4923.1021.6064.3223.0351.0816.045.0806.0397.0023V.172l.8307-.1231v2.7189h-.8307v-.3653c-.0907.2158-.3003.3744-.5356.39-.3605.0507-.7279-.1432-.9123-.4525-.2569-.3983-.1992-.9693.1456-1.2985.173-.1702.412-.2772.6563-.2754zm.6461 1.0018c-.0048-.2526-.2909-.4519-.5276-.3518-.2324.0782-.3308.3933-.1843.5898.1239.1938.425.2285.5871.0636.0811-.0768.1287-.1897.1248-.3015zM3.7956.7662c.2401-.008.4923.1021.6064.3222.0351.0816.045.0806.0397.0023V.172l.8307-.1231v2.7189h-.8307v-.3653c-.0907.2158-.3003.3744-.5356.39-.3605.0507-.7279-.1432-.9123-.4525-.2569-.3983-.1992-.9693.1456-1.2985.173-.1702.4119-.2772.6563-.2754zm.6461 1.0018c-.0048-.2526-.2909-.4519-.5276-.3518-.2324.0782-.3308.3933-.1843.5898.1239.1938.425.2285.5871.0636.0811-.0768.1287-.1897.1248-.3015zM.7498.0603h1.196l.7845 2.7074h-.9268l-.1038-.5192H.9997l-.1115.5192h-.8883zm.8576 1.7037L1.3497.5795 1.0843 1.764z"/></svg>';
2246
- atcbL.innerHTML = '<a href="https://add-to-calendar-pro.com" target="_blank" rel="noopener">' + svg + '</a>';
2247
- }, 500);
2248
- if (atList) {
2249
- host.querySelector('.atcb-initialized .atcb-list-wrapper').append(atcbL);
2250
- } else if (returnEl) {
2251
- return atcbL;
2252
- } else {
2253
- if (window.innerHeight > 1000 || window.innerWidth > 1000) {
2254
- host.append(atcbL);
2255
- atcbL.classList.add('fixed-ref');
2243
+ if (!licenseNoteOnly) {
2244
+ setTimeout(() => {
2245
+ const svg =
2246
+ '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 52.916 2.8305"><path d="M51.446 1.2565c.0708-.2518.293-.4511.5555-.4783.2211-.042.4641.0128.622.18.2474.2472.3045.6146.2916.9503v.8594h-.8307l-.0027-1.0447c-.0079-.1547-.1075-.343-.2868-.3238-.2049.0128-.3115.2421-.295.4257v.9428h-.823l-.0027-1.0435c-.0076-.1569-.1131-.3412-.2918-.3252-.2069.008-.311.2351-.2939.4188v.9499h-.8307V.8237h.8307v.4019c.0906-.2264.2876-.4188.5368-.449.2878-.0533.6071.0705.7509.3331.0279.0465.0509.0959.0699.1468zm-3.9843.5228c-.0102.1874.107.3914.3024.424.1869.0419.3799-.0941.4215-.2776.0535-.1967-.0023-.4493-.2015-.5411-.1767-.0892-.4107.0032-.483.1865-.0297.0649-.0391.1374-.0392.2082zm-.7691 0c.0037-.2984.1395-.5957.3792-.7774.3035-.2327.7168-.2798 1.0829-.2005.3299.0729.6352.3018.7481.6275.1337.3797.0441.8526-.2795 1.1099-.3184.2561-.7624.3092-1.152.2184-.3379-.0788-.6426-.3312-.7369-.6717a1.092 1.092 0 0 1-.0417-.3063zm-.2351-.3308c-.1638-.0482-.3406-.0889-.5104-.0492s-.2742.2154-.2664.3837c-.0082.1705.0998.3468.2712.3876.1657.0389.3389.0016.4979-.0492l.0769.5499c-.2369.1272-.5165.1434-.7791.1149-.3236-.0401-.6353-.2311-.7805-.529-.1237-.2511-.139-.5539-.0485-.8181.108-.3075.3782-.5432.6902-.6287.2064-.058.4286-.0585.6371-.0119.1027.0253.198.0732.2884.1269l-.0769.523zm-2.6877.9806c-.003-.1221.066-.2371.1643-.3062.1303-.0934.3092-.1186.4572-.0533.132.054.2426.1752.2607.3197s-.0575.2836-.1746.3603c-.1633.1093-.3947.1063-.5517-.0135-.0951-.0715-.1577-.187-.1559-.307zm-3.046-1.0111c-.0091-.4276.1794-.8577.5181-1.1231.3714-.2958.8865-.3488 1.3384-.2477.4065.0946.7695.3811.9242.7731.2302.553.1173 1.2562-.3406 1.6606-.4021.3563-.9997.4264-1.5018.273-.4407-.1312-.7876-.5106-.8926-.9564a1.565 1.565 0 0 1-.0458-.3795zm1.4499.6961c.2631.014.4813-.2093.5326-.4557.0785-.3033.0224-.6834-.2491-.8753-.2182-.159-.5514-.1019-.704.1211-.1692.2437-.1902.5756-.088.8501.0775.2087.2816.3661.5085.3597zm-1.631.6458c-.1978.0602-.4078.0938-.6123.0464-.2697-.0443-.5044-.2371-.6009-.4927-.0701-.1852-.1026-.3819-.154-.5728h-.1846v1.0268h-.8614V.0601l1.3192.0034c.3398.0217.7177.1323.9118.434.152.2456.127.584-.0389.8163-.0979.1284-.2387.2162-.3846.2807.0316.1513.0475.3167.1461.4418.1193.1187.3064.1031.4596.0812v.6422zm-.871-1.8651c.0103-.138-.1243-.231-.25-.2384-.1427-.0193-.2871-.0088-.4307-.0115v.5422c.1905-.0038.3947.0138.5678-.0796a.234.234 0 0 0 .1128-.2126zM35.573.0603l1.1424.0047c.3439.0209.7218.1098.9446.3944.2252.2934.2163.7545-.0512 1.0195-.279.2859-.698.3701-1.0838.362-.0329.0105-.1126-.0258-.102.0281v.8987h-.8499V.0603zm1.0192 1.2345c.1672.0054.3805-.0562.4233-.2409.0425-.1434-.0225-.3102-.1619-.3724-.1328-.0705-.2859-.0537-.4306-.0559v.6615c.0561.0073.1128.0073.1692.0077zm-2.5176.2226h1.0576v.4653h-1.0576zM32.3311.8234h.8307v.4019q.0942-.2384.25-.348.1577-.1115.3615-.1115l.1154.6442q-.375 0-.5519.0808-.175.0788-.175.2538v1.023h-.8307zm-1.2257 1.5791c-.0937.2116-.2986.3716-.5319.3897-.3887.0533-.7844-.1743-.9578-.5217-.2044-.381-.1519-.892.1543-1.2049.2461-.2614.6627-.389.9973-.2285.1574.0799.2779.2236.3381.3886V.7662h.8268v2.0017h-.8268v-.3653zm0-.6345c-.0052-.2449-.2747-.4425-.5088-.3585-.217.0615-.3402.3271-.243.5316.0896.2161.3875.3078.5783.1678.1106-.0747.179-.2073.1735-.3408zM27.7118.7662c.2401-.008.4923.1021.6064.3222.0351.0816.045.0806.0397.0023V.1721l.8307-.1231v2.7189h-.8307v-.3653c-.0907.2158-.3003.3744-.5356.39-.3605.0507-.7279-.1432-.9123-.4525-.2569-.3983-.1992-.9693.1456-1.2985.173-.1702.412-.2772.6563-.2754zm.6461 1.0018c-.0048-.2526-.2909-.4519-.5276-.3518-.2324.0782-.3309.3933-.1843.5898.1239.1938.425.2285.5871.0636.0811-.0768.1287-.1897.1248-.3015zM24.139.8233h.7922v.4019c.1006-.2169.2949-.397.5347-.4408.2696-.0572.58.0085.76.2293.2045.2403.2438.5692.2358.8734v.8802h-.8268l-.0022-1.1213c-.004-.1252-.0677-.2748-.2066-.2939-.2045-.0306-.3739.1457-.4412.3226-.0292.0785-.0098.1646-.0154.2467v.8459h-.8306V.8233zm-1.0416 1.4236c.2011-.0002.3981-.0574.5807-.1384l.0961.5288c-.3198.1421-.6806.1894-1.027.145-.3369-.0473-.6587-.2545-.8007-.5699-.1588-.3469-.1132-.7886.1413-1.0788.2741-.3191.7406-.4335 1.1413-.3308.2768.0734.5008.3019.5751.5779.0429.146.0624.3015.043.453l-1.1806.1538c.0368.134.158.2311.2944.2482.0449.0082.0907.0114.1363.0114zm.1461-.7557c-.0268-.1234-.1257-.237-.2578-.244-.143-.0241-.2868.0725-.325.2111-.0103.0527-.0737.2029.0271.1552l.5558-.1223zm-1.4939 1.1721c-.2463.1208-.5356.1686-.805.1092-.227-.0527-.3993-.2481-.4518-.4712-.0545-.2125-.0296-.4333-.0353-.6502V.1714l.8307-.1231.0011 1.9292c.002.1378.1537.1938.2711.1813.0651.0169.1819-.1.162.0152l.0274.4893zm-2.5115-.2609c-.0937.2116-.2986.3716-.5319.3897-.3887.0533-.7844-.1743-.9578-.5217-.2044-.381-.1519-.892.1543-1.2049.2461-.2614.6627-.389.9973-.2285.1574.0799.2779.2236.3381.3886V.7661h.8268v2.0017h-.8268v-.3653zm0-.6345c-.0052-.2449-.2747-.4425-.5088-.3585-.217.0615-.3402.3271-.243.5316.0896.2161.3875.3078.5783.1678.1106-.0747.179-.2073.1735-.3408zm-2.3726.35c.1696.0054.3334-.0479.4884-.1115l.1077.6249c-.5137.3026-1.2229.2625-1.6732-.1399-.2959-.2444-.4693-.6191-.4819-1.0009-.0323-.4791.181-.9792.5853-1.2496.4565-.3128 1.0898-.3142 1.5659-.0438l-.1038.6115c-.2721-.1029-.5957-.168-.8667-.0274-.2291.1239-.3077.4039-.2984.6481-.0043.2465.1061.5161.3427.6212.1037.0495.2198.0676.3339.0676zm-2.923-.6005h1.0576v.4653h-1.0576zm-1.7829.2619c-.0102.1874.107.3914.3024.424.1869.0419.3799-.0941.4215-.2776.0535-.1967-.0023-.4493-.2015-.5411-.1767-.0892-.4107.0032-.4831.1865-.0297.0649-.0391.1374-.0392.2082zm-.7691 0c.0037-.2984.1395-.5957.3792-.7774.3035-.2327.7168-.2798 1.0829-.2005.33.0729.6352.3018.7481.6275.1337.3797.0441.8526-.2795 1.1099-.3184.2561-.7624.3092-1.152.2184-.3379-.0788-.6426-.3312-.7369-.6717a1.092 1.092 0 0 1-.0417-.3063zm-.1976.8841c-.2463.1208-.5356.1686-.805.1092-.227-.0527-.3993-.2481-.4518-.4712-.0557-.2169-.0286-.4422-.0334-.6635l.0019-.3551h-.25V.7943h.3115l.3653-.7461h.4v.7461h.4538v.4884h-.4538l.0011.6943c.0034.1365.1541.1943.2715.1818.0768.006.1848-.0959.1624.0301l.0265.4744zm-2.7861-1.146h1.0575v.4653H8.4068zM6.5412.7662c.2401-.008.4923.1021.6064.3223.0351.0816.045.0806.0397.0023V.172l.8307-.1231v2.7189h-.8307v-.3653c-.0907.2158-.3003.3744-.5356.39-.3605.0507-.7279-.1432-.9123-.4525-.2569-.3983-.1992-.9693.1456-1.2985.173-.1702.412-.2772.6563-.2754zm.6461 1.0018c-.0048-.2526-.2909-.4519-.5276-.3518-.2324.0782-.3308.3933-.1843.5898.1239.1938.425.2285.5871.0636.0811-.0768.1287-.1897.1248-.3015zM3.7956.7662c.2401-.008.4923.1021.6064.3222.0351.0816.045.0806.0397.0023V.172l.8307-.1231v2.7189h-.8307v-.3653c-.0907.2158-.3003.3744-.5356.39-.3605.0507-.7279-.1432-.9123-.4525-.2569-.3983-.1992-.9693.1456-1.2985.173-.1702.4119-.2772.6563-.2754zm.6461 1.0018c-.0048-.2526-.2909-.4519-.5276-.3518-.2324.0782-.3308.3933-.1843.5898.1239.1938.425.2285.5871.0636.0811-.0768.1287-.1897.1248-.3015zM.7498.0603h1.196l.7845 2.7074h-.9268l-.1038-.5192H.9997l-.1115.5192h-.8883zm.8576 1.7037L1.3497.5795 1.0843 1.764z"/></svg>';
2247
+ atcbL.innerHTML = '<a href="https://add-to-calendar-pro.com" target="_blank" rel="noopener">' + svg + '</a>';
2248
+ }, 500);
2249
+ if (atList) {
2250
+ host.querySelector('.atcb-initialized .atcb-list-wrapper').append(atcbL);
2251
+ } else if (returnEl) {
2252
+ return atcbL;
2253
+ } else {
2254
+ if (window.innerHeight > 1000 || window.innerWidth > 1000) {
2255
+ host.append(atcbL);
2256
+ atcbL.classList.add('fixed-ref');
2257
+ }
2256
2258
  }
2259
+ } else {
2260
+ atcbL.innerHTML = 'Using the <a href="https://add-to-calendar-pro.com" target="_blank" rel="noopener referrer">Add to Calendar Button</a>, licensed under the Elastic License 2.0 (ELv2).';
2261
+ atcbL.setAttribute('style', 'display:none !important');
2262
+ atcbL.classList.add('atcb-attribution');
2263
+ host.append(atcbL);
2257
2264
  }
2265
+ if (returnEl) return null;
2258
2266
  }
2259
2267
  async function atcb_create_modal(mainHost, data, icon = '', headline, content = '', buttons = [], subEvents = [], keyboardTrigger = false, goto = {}, closable = true) {
2260
2268
  atcbStates['active'] = data.identifier;
@@ -2928,7 +2936,7 @@ function atcb_subscribe_ical(data, fileUrl) {
2928
2936
  function atcb_subscribe_google(data, fileUrl) {
2929
2937
  const baseUrl = 'https://calendar.google.com/calendar/r?cid=';
2930
2938
  const baseUrlApp = 'calendar.google.com/calendar?cid=';
2931
- const fileUrlRegex = /^(https?:\/\/|webcal:\/\/|\/\/)calendar\.google\.com\//;
2939
+ const fileUrlRegex = /^(?:https?:\/\/|webcal:\/\/|\/\/)calendar\.google\.com\//;
2932
2940
  const newFileUrl = (function () {
2933
2941
  if (fileUrlRegex.test(fileUrl)) {
2934
2942
  return fileUrl.replace(/^(.)*\?cid=/, '');
@@ -2963,7 +2971,7 @@ function atcb_generate_google(data, date, subEvent = 'all') {
2963
2971
  urlParts.push('https://calendar.google.com/calendar/render?action=TEMPLATE');
2964
2972
  const formattedDate = atcb_generate_time(date, 'clean', 'google');
2965
2973
  urlParts.push('dates=' + encodeURIComponent(formattedDate.start) + '%2F' + encodeURIComponent(formattedDate.end));
2966
- if (date.timeZone && date.timeZone !== '' && !/(GMT[+|-]\d{1,2}|Etc\/U|Etc\/Zulu|CET|CST6CDT|EET|EST|EST5EDT|MET|MST|MST7MDT|PST8PDT|WET)/i.test(date.timeZone) && !formattedDate.allday) {
2974
+ if (date.timeZone && date.timeZone !== '' && !/GMT[+|-]\d{1,2}|Etc\/U|Etc\/Zulu|CET|CST6CDT|EET|EST|MET|MST|PST8PDT|WET/i.test(date.timeZone) && !formattedDate.allday) {
2967
2975
  urlParts.push('ctz=' + date.timeZone);
2968
2976
  }
2969
2977
  if (date.name && date.name !== '') {
@@ -3114,7 +3122,6 @@ function atcb_open_cal_url(data, type, url, subscribe = false, subEvent = null,
3114
3122
  return;
3115
3123
  }
3116
3124
  }
3117
- // eslint-disable-next-line security/detect-non-literal-fs-filename
3118
3125
  const newTab = window.open(url, target);
3119
3126
  if (newTab) {
3120
3127
  newTab.focus();
@@ -3336,7 +3343,7 @@ function atcb_generate_time(data, style = 'delimiters', targetCal = 'general', a
3336
3343
  }
3337
3344
  return durationHours + ':' + ('0' + durationMinutes).slice(-2);
3338
3345
  })();
3339
- 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))) {
3346
+ if (targetCal == 'ical' || (targetCal == 'google' && !/GMT[+|-]\d{1,2}|Etc\/U|Etc\/Zulu|CET|CST6CDT|EET|EST|MET|MST|PST8PDT|WET/i.test(data.timeZone))) {
3340
3347
  return {
3341
3348
  start: atcb_format_datetime(newStartDate, 'clean', true, true),
3342
3349
  end: atcb_format_datetime(newEndDate, 'clean', true, true),
@@ -3658,7 +3665,7 @@ function atcb_secure_url(url, throwError = true) {
3658
3665
  }
3659
3666
  }
3660
3667
  function atcb_validEmail(email) {
3661
- if (!/^.{0,70}@.{1,30}\.[a-zA-Z]{2,9}$/.test(email)) {
3668
+ if (!/^.{0,70}@.{1,30}\.[a-z]{2,9}$/i.test(email)) {
3662
3669
  return false;
3663
3670
  }
3664
3671
  return true;
@@ -3676,9 +3683,9 @@ function atcb_rewrite_html_elements(content, clear = false, iCalBreaks = false)
3676
3683
  content = content.replace(/\{url\}(.+?)\{\/url\}/gi, (match, p1) => {
3677
3684
  return p1.split('|')[0];
3678
3685
  });
3679
- content = content.replace(/\[(|\/)(hr|p|b|strong|u|i|em|li|ul|ol|h\d)\]/gi, '');
3680
- content = content.replace(/\{(|\/)(hr|p|b|strong|u|i|em|li|ul|ol|h\d)\}/gi, '');
3681
- content = content.replace(/&[#a-zA-Z0-9]{1,9};/gi, '');
3686
+ content = content.replace(/\[\/?(hr|[pbui]|strong|em|li|ul|ol|h\d)\]/gi, '');
3687
+ content = content.replace(/\{\/?(hr|[pbui]|strong|em|li|ul|ol|h\d)\}/gi, '');
3688
+ content = content.replace(/&[#a-z0-9]{1,9};/gi, '');
3682
3689
  } else {
3683
3690
  content = content.replace(/\[url\]((?:(?!\[\/url\]).)*)\[\/url\]/gi, function (match, p1) {
3684
3691
  return atcb_parse_url_code(p1);
@@ -3686,8 +3693,8 @@ function atcb_rewrite_html_elements(content, clear = false, iCalBreaks = false)
3686
3693
  content = content.replace(/\{url\}((?:(?!\[\/url\]).)*)\{\/url\}/gi, function (match, p1) {
3687
3694
  return atcb_parse_url_code(p1);
3688
3695
  });
3689
- content = content.replace(/\[(\/|)(br|hr|p|b|strong|u|i|em|li|ul|ol|h\d)(\s?\/?)\]/gi, '<$1$2$3>');
3690
- content = content.replace(/\{(\/|)(br|hr|p|b|strong|u|i|em|li|ul|ol|h\d)(\s?\/?)\}/gi, '<$1$2$3>');
3696
+ content = content.replace(/\[(\/)?(br|hr|[pbui]|strong|em|li|ul|ol|h\d)(\s?\/?)\]/gi, '<$1$2$3>');
3697
+ content = content.replace(/\{(\/)?(br|hr|[pbui]|strong|em|li|ul|ol|h\d)(\s?\/?)\}/gi, '<$1$2$3>');
3691
3698
  }
3692
3699
  return content;
3693
3700
  }
@@ -4897,7 +4904,7 @@ if (atcbIsBrowser()) {
4897
4904
  this.data.identifier = this.identifier;
4898
4905
  } else {
4899
4906
  if (this.data.identifier && this.data.identifier !== '') {
4900
- if (!/^[\w\-_]+$/.test(this.data.identifier)) {
4907
+ if (!/^[\w-]+$/.test(this.data.identifier)) {
4901
4908
  this.data.identifier = '';
4902
4909
  if (this.debug) {
4903
4910
  let prefix = 'Add to Calendar Button';
@@ -4916,7 +4923,6 @@ if (atcbIsBrowser()) {
4916
4923
  this.identifier = this.data.identifier;
4917
4924
  }
4918
4925
  this.setAttribute('atcb-button-id', this.data.identifier);
4919
- this.classList.add('add-to-calendar');
4920
4926
  try {
4921
4927
  this.setAttribute('style', 'visibility:visible;opacity:1;position:relative;outline:none !important;');
4922
4928
  await atcb_build_button(this.shadowRoot, this.data);
@@ -5011,6 +5017,7 @@ function atcb_read_attributes(el, params = atcbWcParams) {
5011
5017
  }
5012
5018
  async function atcb_build_button(host, data) {
5013
5019
  try {
5020
+ host.host.classList.add('add-to-calendar');
5014
5021
  data = await atcb_decorate_data(data);
5015
5022
  await atcb_validate(data);
5016
5023
  const rootObj = host.querySelector('.atcb-initialized');
@@ -5035,6 +5042,9 @@ async function atcb_build_button(host, data) {
5035
5042
  }
5036
5043
  }
5037
5044
  atcb_log_event('initialization', data.identifier, data.identifier);
5045
+ if (!data.proKey && data.hideBranding && !document.getElementById('atcb-reference')) {
5046
+ atcb_create_atcbl(document.body, false, false, true);
5047
+ }
5038
5048
  return true;
5039
5049
  } catch (e) {
5040
5050
  throw new Error(e.message);
@@ -5092,7 +5102,7 @@ async function atcb_load_css(host, rootObj = null, data) {
5092
5102
  const cssGlobalContent = document.createElement('style');
5093
5103
  cssGlobalContent.id = 'atcb-global-style';
5094
5104
  const scrollBarWidth = window.innerWidth - document.documentElement.clientWidth;
5095
- cssGlobalContent.innerText = '.atcb-modal-no-scroll{overflow-y:hidden !important;-webkit-overflow-scrolling:touch;} body.atcb-modal-no-scroll{padding-right:' + scrollBarWidth + 'px;}';
5105
+ cssGlobalContent.innerText = '.atcb-modal-no-scroll{overflow-y:hidden !important;-webkit-overflow-scrolling:touch;} body.atcb-modal-no-scroll{padding-right:' + scrollBarWidth + 'px;}.atcb-attribution{display:none;}';
5096
5106
  if (nonceVal) {
5097
5107
  cssGlobalContent.setAttribute('nonce', nonceVal);
5098
5108
  }
@@ -5241,7 +5251,7 @@ async function atcb_action(inputData, triggerElement, keyboardTrigger = false) {
5241
5251
  if (triggerElement.id && triggerElement.id !== '') {
5242
5252
  data.identifier = triggerElement.id;
5243
5253
  } else {
5244
- if (data.identifier && data.identifier != '' && /^[\w\-_]+$/.test(data.identifier)) {
5254
+ if (data.identifier && data.identifier != '' && /^[\w-]+$/.test(data.identifier)) {
5245
5255
  data.identifier = 'atcb-btn-' + data.identifier;
5246
5256
  } else {
5247
5257
  data.identifier = 'atcb-btn-custom';