@getmicdrop/venue-calendar 4.3.18 → 4.3.19

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.
Files changed (42) hide show
  1. package/dist/{Calendar-V0u5h9jS.js → Calendar-CV3JOt9z.js} +1 -1
  2. package/dist/{CalendarFoundryView-8W0A4tl0.js → CalendarFoundryView-D7GS7Cij.js} +2 -2
  3. package/dist/{CollectionView-BxpZehV9.js → CollectionView-BO6G40d2.js} +2 -2
  4. package/dist/{Event-BhfnEP7c.js → Event-DzgB5HPq.js} +2 -2
  5. package/dist/{EventPage-DMeqzHxR.js → EventPage-D9p27Fer.js} +2 -2
  6. package/dist/{RecommendationsRail-8AVZ0aLE.js → RecommendationsRail-uUcHleoy.js} +1 -1
  7. package/dist/{SeriesPage-DynN1IWH.js → SeriesPage-D0g-3xlY.js} +2 -2
  8. package/dist/{Success-Cd3KhNfN.js → Success-Bg1sS3Ai.js} +1 -1
  9. package/dist/seo/HostSeoController.d.ts +9 -7
  10. package/dist/seo/seo.cjs +1 -1
  11. package/dist/seo/seo.mjs +13 -1
  12. package/dist/{to-event-card-props-a4k6D100.js → to-event-card-props-DRXpWEgl.js} +50 -43
  13. package/dist/types/index.d.ts +7 -0
  14. package/dist/venue-calendar.css +1 -1
  15. package/dist/venue-calendar.es.js +1316 -1282
  16. package/dist/venue-calendar.iife.js +58 -58
  17. package/dist/venue-calendar.umd.js +51 -51
  18. package/package.json +2 -2
  19. /package/dist/locales/{4.3.18 → 4.3.19}/flow/de.js +0 -0
  20. /package/dist/locales/{4.3.18 → 4.3.19}/flow/es.js +0 -0
  21. /package/dist/locales/{4.3.18 → 4.3.19}/flow/fr.js +0 -0
  22. /package/dist/locales/{4.3.18 → 4.3.19}/flow/id.js +0 -0
  23. /package/dist/locales/{4.3.18 → 4.3.19}/flow/it.js +0 -0
  24. /package/dist/locales/{4.3.18 → 4.3.19}/flow/ja.js +0 -0
  25. /package/dist/locales/{4.3.18 → 4.3.19}/flow/ko.js +0 -0
  26. /package/dist/locales/{4.3.18 → 4.3.19}/flow/nl.js +0 -0
  27. /package/dist/locales/{4.3.18 → 4.3.19}/flow/pl.js +0 -0
  28. /package/dist/locales/{4.3.18 → 4.3.19}/flow/pt-br.js +0 -0
  29. /package/dist/locales/{4.3.18 → 4.3.19}/flow/tr.js +0 -0
  30. /package/dist/locales/{4.3.18 → 4.3.19}/flow/zh.js +0 -0
  31. /package/dist/locales/{4.3.18 → 4.3.19}/main/de.js +0 -0
  32. /package/dist/locales/{4.3.18 → 4.3.19}/main/es.js +0 -0
  33. /package/dist/locales/{4.3.18 → 4.3.19}/main/fr.js +0 -0
  34. /package/dist/locales/{4.3.18 → 4.3.19}/main/id.js +0 -0
  35. /package/dist/locales/{4.3.18 → 4.3.19}/main/it.js +0 -0
  36. /package/dist/locales/{4.3.18 → 4.3.19}/main/ja.js +0 -0
  37. /package/dist/locales/{4.3.18 → 4.3.19}/main/ko.js +0 -0
  38. /package/dist/locales/{4.3.18 → 4.3.19}/main/nl.js +0 -0
  39. /package/dist/locales/{4.3.18 → 4.3.19}/main/pl.js +0 -0
  40. /package/dist/locales/{4.3.18 → 4.3.19}/main/pt-br.js +0 -0
  41. /package/dist/locales/{4.3.18 → 4.3.19}/main/tr.js +0 -0
  42. /package/dist/locales/{4.3.18 → 4.3.19}/main/zh.js +0 -0
@@ -2,7 +2,7 @@ import { A as e, C as t, O as n, S as r, b as i, i as a, s as o } from "./Button
2
2
  import { A as s, G as c, L as l, U as u, j as d, k as f, q as p, z as m } from "./scarcity-Ccj5RlrR.js";
3
3
  import { s as h, t as g } from "./z-index-BgKs9X9U.js";
4
4
  import { t as _ } from "./defaultLabels-CXCsTwix.js";
5
- import { c as v, i as y, r as b, s as x, t as S } from "./to-event-card-props-a4k6D100.js";
5
+ import { c as v, i as y, r as b, s as x, t as S } from "./to-event-card-props-DRXpWEgl.js";
6
6
  import { d as C, f as w, l as T, p as ee, u as te } from "./ModalFooter-CSoG_uic.js";
7
7
  import "svelte/internal/disclose-version";
8
8
  import * as E from "svelte/internal/client";
@@ -1,6 +1,6 @@
1
1
  import { n as e } from "./rolldown-runtime-DtPi1Y-2.js";
2
2
  import { A as t, C as n, E as r, O as i, S as a, T as o, _ as s, a as c, b as l, d as u, f as d, g as f, i as p, j as m, k as h, l as g, m as _, o as v, s as y, t as b, w as x, x as S, y as C } from "./Button-vmWb6wKc.js";
3
- import { a as w, c as T, i as E, n as D, o as O, r as k, s as A, t as j } from "./Calendar-V0u5h9jS.js";
3
+ import { a as w, c as T, i as E, n as D, o as O, r as k, s as A, t as j } from "./Calendar-CV3JOt9z.js";
4
4
  import { n as M, r as N, t as P } from "./WarningCircleIcon-AuYbQdPU.js";
5
5
  import { n as F, r as I, t as L } from "./CloseIcon-CyR73vpD.js";
6
6
  import { t as R } from "./CloseOutline-qpVa62mu.js";
@@ -23,7 +23,7 @@ import { n as et, r as tt, t as nt } from "./Badge-DCHGGod2.js";
23
23
  import { t as rt } from "./Image-M5RaWbKU.js";
24
24
  import { D as it, I as at, T as ot, b as st, i as Q, s as ct } from "./defaultLabels-CXCsTwix.js";
25
25
  import { t as lt } from "./LiveRegion-D9Me4kBs.js";
26
- import { c as ut, u as dt } from "./to-event-card-props-a4k6D100.js";
26
+ import { c as ut, u as dt } from "./to-event-card-props-DRXpWEgl.js";
27
27
  import { a as ft, i as pt, l as mt, n as ht, o as gt, r as _t, s as vt, t as yt } from "./ModalFooter-CSoG_uic.js";
28
28
  import { n as bt, t as xt } from "./Heading-Br1Yqnvg.js";
29
29
  import { t as St } from "./Checkbox-24CWEsty.js";
@@ -1,6 +1,6 @@
1
1
  import { E as e } from "./Button-vmWb6wKc.js";
2
- import { t } from "./Event-BhfnEP7c.js";
3
- import { i as n } from "./RecommendationsRail-8AVZ0aLE.js";
2
+ import { t } from "./Event-DzgB5HPq.js";
3
+ import { i as n } from "./RecommendationsRail-uUcHleoy.js";
4
4
  import { n as r } from "./ScarcityBadge-nK2AQY3W.js";
5
5
  import { i, t as a } from "./defaultLabels-CXCsTwix.js";
6
6
  import { t as o } from "./__SKIP_PATHS__-CnJ51yD_.js";
@@ -6,7 +6,7 @@ import { S as f, T as p, _ as m, a as h, b as g, d as _, h as v, i as y, l as b,
6
6
  import { t as w } from "./CalendarIcon-C8-UVSje.js";
7
7
  import { a as T, i as E, o as D, r as O, t as k } from "./href-DuxMJt4c.js";
8
8
  import { t as A } from "./ClockIcon-Dk9q65sX.js";
9
- import { n as j, o as M, t as N } from "./RecommendationsRail-8AVZ0aLE.js";
9
+ import { n as j, o as M, t as N } from "./RecommendationsRail-uUcHleoy.js";
10
10
  import { n as P } from "./copyToClipboard-3SejVveg.js";
11
11
  import { r as F, t as I } from "./ScarcityBadge-nK2AQY3W.js";
12
12
  import { d as L, n as R, t as z } from "./z-index-BgKs9X9U.js";
@@ -16,7 +16,7 @@ import { D as ee, I as H, R as te, b as U, h as W, i as G, k as ne, z as re } fr
16
16
  import { F as ie, M as ae, t as oe } from "./orders-rH0WZYOW.js";
17
17
  import { t as se } from "./serverTotals-Dk3z9sIA.js";
18
18
  import { l as K, o as ce, u as q } from "./__SKIP_PATHS__-CnJ51yD_.js";
19
- import { c as le, i as ue, l as de, s as fe, t as pe } from "./to-event-card-props-a4k6D100.js";
19
+ import { c as le, i as ue, l as de, s as fe, t as pe } from "./to-event-card-props-DRXpWEgl.js";
20
20
  import { n as me, t as J } from "./Heading-Br1Yqnvg.js";
21
21
  import { t as Y } from "./Text-CqjLjIF8.js";
22
22
  import { v as he } from "./api-C1M2t6HU.js";
@@ -1,10 +1,10 @@
1
1
  import { C as e, E as t, O as n, b as r, c as i, t as a } from "./Button-vmWb6wKc.js";
2
- import { t as o } from "./Event-BhfnEP7c.js";
2
+ import { t as o } from "./Event-DzgB5HPq.js";
3
3
  import { n as s, t as c } from "./Input-Bk8lP6TX.js";
4
4
  import { d as l, f as u, n as d, p as f } from "./phoneUtils-BFrVEwkQ.js";
5
5
  import { o as p } from "./href-DuxMJt4c.js";
6
6
  import { t as m } from "./ClockIcon-Dk9q65sX.js";
7
- import { r as h } from "./RecommendationsRail-8AVZ0aLE.js";
7
+ import { r as h } from "./RecommendationsRail-uUcHleoy.js";
8
8
  import { n as g } from "./ScarcityBadge-nK2AQY3W.js";
9
9
  import { N as _, i as v, j as y, t as b } from "./defaultLabels-CXCsTwix.js";
10
10
  import { d as x, p as S, y as C } from "./orders-rH0WZYOW.js";
@@ -2,7 +2,7 @@ import { i as e, p as t, q as n } from "./scarcity-Ccj5RlrR.js";
2
2
  import { t as r } from "./copyToClipboard-3SejVveg.js";
3
3
  import { D as i, b as a, h as o, x as s } from "./defaultLabels-CXCsTwix.js";
4
4
  import { I as c, R as l } from "./orders-rH0WZYOW.js";
5
- import { c as u, i as d, s as f, t as p } from "./to-event-card-props-a4k6D100.js";
5
+ import { c as u, i as d, s as f, t as p } from "./to-event-card-props-DRXpWEgl.js";
6
6
  import { t as m } from "./Heading-Br1Yqnvg.js";
7
7
  import { r as h, t as g } from "./event-DAjJ01GM.js";
8
8
  import { t as _ } from "./venue-CBos8YTa.js";
@@ -1,6 +1,6 @@
1
1
  import { E as e } from "./Button-vmWb6wKc.js";
2
- import { t } from "./Event-BhfnEP7c.js";
3
- import { a as n } from "./RecommendationsRail-8AVZ0aLE.js";
2
+ import { t } from "./Event-DzgB5HPq.js";
3
+ import { a as n } from "./RecommendationsRail-uUcHleoy.js";
4
4
  import { n as r } from "./ScarcityBadge-nK2AQY3W.js";
5
5
  import { t as i } from "./__SKIP_PATHS__-CnJ51yD_.js";
6
6
  import "svelte/internal/disclose-version";
@@ -4,7 +4,7 @@ import { t as i } from "./ArrowLeftIcon-BYu_Qbkb.js";
4
4
  import { t as a } from "./CalendarIcon-C8-UVSje.js";
5
5
  import { t as o } from "./ChevronDownIcon-C1uJ2yvz.js";
6
6
  import { n as s, t as c } from "./MailIcon-Ic2SruY-.js";
7
- import { n as l, o as u, r as d, t as f } from "./RecommendationsRail-8AVZ0aLE.js";
7
+ import { n as l, o as u, r as d, t as f } from "./RecommendationsRail-uUcHleoy.js";
8
8
  import { n as p } from "./copyToClipboard-3SejVveg.js";
9
9
  import { t as m } from "./Image-M5RaWbKU.js";
10
10
  import { R as h, i as g } from "./defaultLabels-CXCsTwix.js";
@@ -15,16 +15,17 @@ interface VenueData {
15
15
  }
16
16
  export declare class HostSeoController {
17
17
  /**
18
- * Single active instance. A venue page that mounts >1 calendar embed
19
- * (e.g. "upcoming shows" + "this weekend") will see the *later*
20
- * controller take over `<head>` — the earlier one is destroyed.
21
- *
22
- * KNOWN LIMITATION: multi-embed pages cannot run two SEO controllers
23
- * in parallel because they would both fight to own `<title>`/OG/etc.
24
- * Pass `data-inject-seo="false"` on all but one embed to opt out.
18
+ * Single active instance: two controllers would fight to own
19
+ * `<title>`/OG/etc, so constructing one destroys the one before it.
20
+ * Embeds go through `shared()` instead, so every calendar on a page with
21
+ * several (e.g. "upcoming shows" + "this weekend") drives the same one.
25
22
  */
26
23
  static _activeInstance: HostSeoController | null;
24
+ /** The page's live controller, or a new one when there is none. Each
25
+ * caller holds it until its own destroy(); the last one out tears it down. */
26
+ static shared(options: HostSeoControllerOptions): HostSeoController;
27
27
  private _state;
28
+ private _holders;
28
29
  private _venueName;
29
30
  private _venueAddress;
30
31
  private _venueTimeZone;
@@ -64,5 +65,6 @@ export declare class HostSeoController {
64
65
  * and restores originals. Clears the static active instance.
65
66
  */
66
67
  destroy(): void;
68
+ private _teardown;
67
69
  }
68
70
  export {};
package/dist/seo/seo.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(){return`America/Los_Angeles`}var t=/<\/(?:p|div|h[1-6]|li|ul|ol|blockquote|tr)>/gi,n=/<br\s*\/?>/gi,r=/<[^>]*>/g,i={"&amp;":`&`,"&lt;":`<`,"&gt;":`>`,"&quot;":`"`,"&#39;":`'`,"&apos;":`'`,"&nbsp;":` `};function a(e){return e.replace(/&#x([0-9a-f]+);/gi,(e,t)=>o(parseInt(t,16))).replace(/&#(\d+);/g,(e,t)=>o(Number(t))).replace(/&[a-z0-9]+;/gi,e=>i[e.toLowerCase()]??e)}function o(e){return Number.isFinite(e)&&e>0&&e<=1114111?String.fromCodePoint(e):``}function s(e,i){if(!e)return``;let o=String(e).replace(n,` `).replace(t,` `).replace(r,``);if(o=a(o).replace(/\s+/g,` `).trim(),i&&i>0&&o.length>i){let e=o.slice(0,i),t=e.lastIndexOf(` `);o=(t>40?e.slice(0,t):e).trimEnd()+`…`}return o}function c(){return new Date}var l=class extends Error{constructor(e,t,n={}){super(e),this.name=`AppError`,this.code=t,this.status=n.status??500,this.details=n.details,this.timestamp=c(),this.recoverable=n.recoverable??!0,this.cause=n.cause,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}toJSON(){return{name:this.name,code:this.code,message:this.message,status:this.status,details:this.details,timestamp:this.timestamp.toISOString(),recoverable:this.recoverable,stack:this.stack,cause:this.cause?.message}}getUserMessage(e){return this.message}isRetryable(){return this.recoverable}},u=class extends l{constructor(e,t,n={}){super(e,t,{status:422,recoverable:!1,...n}),this.name=`ValueGuardError`}},d=class extends u{constructor(e,t,n){super(e,t,{details:n}),this.name=`DateTimeError`}},f;(function(e){e.INVALID_TIMEZONE=`INVALID_TIMEZONE`,e.INVALID_ISO_STRING=`INVALID_ISO_STRING`,e.INVALID_DATE=`INVALID_DATE`,e.INVALID_TIME=`INVALID_TIME`,e.MISSING_TIMEZONE=`MISSING_TIMEZONE`,e.PARSE_ERROR=`PARSE_ERROR`})(f||={});function p(e,t,n,r=0,i=0,a=0){let o=new Date(Date.UTC(e,t-1,n,r,i,a));return e>=0&&e<=99&&o.setUTCFullYear(e),o}var m=/^(\d{4})-(\d{2})-(\d{2})(?:T\d{2}:\d{2}(?::\d{2}(?:\.\d{1,9})?)?(?:Z|[+-]\d{2}:\d{2}))?$/,h=/^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}(?::\d{2}(?:\.\d{1,9})?)?$/;function g(e,t,n){let r=p(e,t,n);return r.getUTCFullYear()===e&&r.getUTCMonth()===t-1&&r.getUTCDate()===n}var _=/^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})(?:\.(\d{1,9}))? ?([+-])(\d{2}):?(\d{2})(?: [A-Za-z][A-Za-z0-9_/+-]*)?(?: m=[+-][\d.]+)?$/,v=p(1,1,1).getTime();function y(e){let t=m.exec(e);if(t){let[,n,r,i]=t;return{iso:e,year:+n,month:+r,day:+i}}let n=_.exec(e);if(n){let[,e,t,r,i,a,o,s,c,l,u]=n;return{iso:`${e}-${t}-${r}T${i}:${a}:${o}${s?`.${s.slice(0,3).padEnd(3,`0`)}`:``}${c}${l}:${u}`,year:+e,month:+t,day:+r}}return null}function b(e){if(typeof e==`number`){if(!Number.isFinite(e))return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t}if(typeof e!=`string`)return null;let t=y(e.trim());if(!t||!g(t.year,t.month,t.day))return null;let n=new Date(t.iso);return Number.isNaN(n.getTime())?null:n}function x(e){let t=b(e);return t!==null&&t.getTime()===v}function S(e,t){if(e.getTime()===v)throw new d(`toInstant: ${JSON.stringify(t)} is the backend's UNSET marker (Go's zero time.Time), not a moment — the field was never filled in. toInstant is the REQUIRED-timestamp door, so an unset value here is a bug: returning the year-1 instant it names would sort this row ahead of every real date and answer "yes" to "has this started?". If the field is allowed to be unset, read it with toInstantOrNull (null), ask isAbsentTimestamp why it is missing, and order it with compareWireInstants.`,f.INVALID_ISO_STRING,{value:t})}function C(e,t){if(!(e instanceof Date)||Number.isNaN(e.getTime()))throw new d(`${t} must be a valid Date`,f.INVALID_DATE,{value:e})}function w(e,t){return C(e,`compareInstants(a)`),C(t,`compareInstants(b)`),e.getTime()-t.getTime()}function T(e){if(typeof e==`number`){if(!Number.isFinite(e))throw new d(`toInstant: epoch milliseconds must be a finite number, got ${e}`,f.INVALID_DATE,{value:e});let t=new Date(e);return C(t,`toInstant(value)`),S(t,e),t}if(typeof e!=`string`||e.trim()===``)throw new d(`toInstant: a UTC ISO timestamp or epoch ms is required, got ${JSON.stringify(e)}`,typeof e==`string`?f.INVALID_ISO_STRING:f.INVALID_DATE,{value:e});let t=y(e);if(!t)throw h.test(e)?new d(`toInstant: ${JSON.stringify(e)} carries a time but no timezone, so it is not an instant — it would resolve on the viewer's clock and land on a different calendar day for a viewer in Los Angeles than one in London. Send a UTC wire timestamp (2026-06-09T20:00:00Z) or an explicit offset (2026-06-09T13:00:00-07:00). If this is a local wall-clock value, it belongs in datetime/local or parseLocalToUTC(value, timezone), not here.`,f.MISSING_TIMEZONE,{value:e}):new d(`toInstant: not an ISO-8601 timestamp: ${JSON.stringify(e)}`,f.INVALID_ISO_STRING,{value:e});let{year:n,month:r,day:i}=t;if(!g(n,r,i))throw new d(`toInstant: ${n}-${r}-${i} is not a real calendar date: ${JSON.stringify(e)}`,f.INVALID_ISO_STRING,{value:e});let a=new Date(t.iso);if(Number.isNaN(a.getTime()))throw new d(`toInstant: ISO-8601 shaped but not a real instant: ${JSON.stringify(e)}`,f.INVALID_ISO_STRING,{value:e});return S(a,e),a}function E(e){if(e==null||typeof e==`string`&&e.trim()===``||x(e))return null;try{return T(e)}catch{return null}}function D(e){return Math.round((e+2**-52)*100)/100}function O(e){if(e==null)return null;let t=Number(e);return Number.isFinite(t)?t:null}function k(e){let t=O(e?.price);return t===null?null:t===0?0:D(t+(O(e?.fee)??0))}function A(e){return e.replace(/</g,`\\u003c`).replace(/>/g,`\\u003e`).replace(/&/g,`\\u0026`)}function j(t,n){if(!t)return null;let r=new Date(t);if(isNaN(r.getTime()))return null;let i={year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1,timeZoneName:`shortOffset`},a;try{a=new Intl.DateTimeFormat(`en-US`,{...i,timeZone:n})}catch{a=new Intl.DateTimeFormat(`en-US`,{...i,timeZone:e()})}let o=a.formatToParts(r),s=e=>o.find(t=>t.type===e)?.value||``,c=s(`year`),l=s(`month`),u=s(`day`),d=s(`hour`),f=s(`minute`),p=s(`second`),m=s(`timeZoneName`),h=`+00:00`;if(m){let e=m.match(/GMT([+-])(\d+)(?::(\d+))?/);e&&(h=`${e[1]}${e[2].padStart(2,`0`)}:${e[3]||`00`}`)}return`${c}-${l}-${u}T${d}:${f}:${p}${h}`}function M(e){if(!e)return null;let t=e.split(`,`).map(e=>e.trim());if(t.length<2)return{"@type":`PostalAddress`,streetAddress:e,addressCountry:`US`};let n=t[t.length-1].match(/^([A-Z]{2})\s+(\d{5}(?:-\d{4})?)$/);return n&&t.length>=3?{"@type":`PostalAddress`,streetAddress:t.slice(0,-2).join(`, `),addressLocality:t[t.length-2],addressRegion:n[1],postalCode:n[2],addressCountry:`US`}:{"@type":`PostalAddress`,streetAddress:t[0],addressLocality:t.slice(1).join(`, `),addressCountry:`US`}}function N(e,t){if(e&&(e.city||e.state||e.postalCode)){let t={"@type":`PostalAddress`};return e.address&&(t.streetAddress=e.address),e.city&&(t.addressLocality=e.city),e.state&&(t.addressRegion=e.state),e.postalCode&&(t.postalCode=e.postalCode),t.addressCountry=e.country||`US`,t}return M(e&&e.address||t||null)}function P(e){if(!e)return`https://schema.org/EventScheduled`;let t=e.toLowerCase();return t===`cancelled`||t===`canceled`?`https://schema.org/EventCancelled`:t===`postponed`?`https://schema.org/EventPostponed`:t===`rescheduled`?`https://schema.org/EventRescheduled`:`https://schema.org/EventScheduled`}function F(e){if((e.remainingCapacity??e.quantityRemaining??e.quantity)===0||e.soldOut)return`https://schema.org/SoldOut`;let t=c(),n=E(e.salesBegin||e.salesStart||e.saleBegin||e.onSaleStart),r=E(e.salesEnd||e.saleEnd||e.onSaleEnd);return n&&w(n,t)>0?`https://schema.org/PreOrder`:r&&w(r,t)<0?`https://schema.org/SoldOut`:`https://schema.org/InStock`}function I(e,t,n,r={}){return e===t?{"@type":`Offer`,price:e,priceCurrency:`USD`,availability:n,...r}:{"@type":`AggregateOffer`,lowPrice:e,highPrice:t,priceCurrency:`USD`,availability:n,...r}}function L(e,t){if(!e||e.length===0)return null;let n=e.filter(e=>{let t=e.visibility??0,n=t===0||t===1,r=e.salesChannel!==2;return n&&r});if(n.length===0)return null;let r=n.map(e=>k({price:e.price,fee:e.fee})).filter(e=>e!=null);if(r.length===0)return null;let i=Math.min(...r),a=Math.max(...r),o=n[0];return I(i,a,F(o),{url:t||void 0,validFrom:o?.salesBegin||o?.salesStart||void 0})}function R(e){if(!e||e.length===0)return null;let t=e.filter(e=>{let t=e.acceptedState===2,n=!e.shouldBeHidden,r=e.RosterPerformer?.User?.performerProfile,i=r?.firstName||r?.lastName||r?.displayName;return t&&n&&i});return t.length===0?null:t.map(e=>{let t=e.RosterPerformer?.User?.performerProfile;return{"@type":`PerformingGroup`,name:t?.displayName||[t?.firstName,t?.lastName].filter(Boolean).join(` `)}})}function z(t){let{event:n,venue:r,venueTimeZone:i=e(),eventUrl:a,organizer:o}=t;if(!n)return null;let c=j(n.startDateTime,i);if(!n.name||!c||!r?.name)return null;let l=N(r,r?.googleLocationNameCache),u={"@type":`Place`,name:r.name};l&&(u.address=l);let d={"@context":`https://schema.org`,"@type":`Event`,name:n.name,startDate:c,eventStatus:P(n.status),eventAttendanceMode:`https://schema.org/OfflineEventAttendanceMode`,location:u},f=j(n.endDateTime,i);f&&(d.endDate=f);let p=s(n.description)||n.eventSummary;p&&(d.description=p);let m=n.image||n.coverImage||n.ShowImage;m&&(d.image=[m]);let h=L(n.availableTickets,a);h&&(d.offers=h);let g=R(n.performers);if(g&&g.length>0&&(d.performer=g),o?.name){let e={"@type":`Organization`,name:o.name};o.url&&(e.url=o.url),d.organizer=e}return a&&(d.url=a),d}function B(e){switch(e){case`available`:return`https://schema.org/InStock`;case`sold_out`:return`https://schema.org/SoldOut`;case`coming_soon`:return`https://schema.org/PreOrder`;case`ended`:return`https://schema.org/SoldOut`;default:return`https://schema.org/InStock`}}function V(e,t){if(!e||e.length===0)return null;let n=e.filter(e=>e.status!==`sold_out`&&e.status!==`ended`);if(n.length===0){let t=e.map(e=>e.price).filter(e=>!isNaN(e));return t.length===0?null:I(Math.min(...t),Math.max(...t),`https://schema.org/SoldOut`)}let r=n.map(e=>e.price).filter(e=>!isNaN(e));return r.length===0?null:I(Math.min(...r),Math.max(...r),B(n[0].status))}function H(e){let{series:t,baseEventUrl:n}=e;if(!t.title||!t.occurrences||t.occurrences.length===0||!t.venue?.name)return null;let r=N(t.venue,t.venue.googleLocationNameCache),i={"@type":`Place`,name:t.venue.name};r&&(i.address=r);let a={"@context":`https://schema.org`,"@type":`EventSeries`,name:t.title,location:i},o=s(t.description)||t.eventSummary;o&&(a.description=o),t.image&&(a.image=[t.image]);let c=t.performers?.filter(e=>e.displayName);c&&c.length>0&&(a.performer=c.map(e=>({"@type":`PerformingGroup`,name:e.displayName})));let l=[];for(let e of t.occurrences){let r=j(e.startDateTime,t.timeZone);if(!r)continue;let a={"@type":`Event`,name:e.title,startDate:r,eventStatus:P(e.status),location:i};n&&(a[`@id`]=`${n}/${e.id}-${e.slug}`);let o=j(e.endDateTime,t.timeZone);o&&(a.endDate=o);let s=V(e.tickets,e.status);s&&(a.offers=s),l.push(a)}return l.length===0?null:(a.subEvent=l,a)}function U(e){let{collection:t,baseEventUrl:n}=e;if(!t.collectionTitle||!t.events||t.events.length===0)return null;let r=[];for(let e of t.events){if(!e.title)continue;let t={"@type":`ListItem`,position:r.length+1,name:e.title};n&&(t.url=e.slug?`${n}/${e.id}-${e.slug}`:`${n}/${e.id}`),r.push(t)}if(r.length===0)return null;let i={"@context":`https://schema.org`,"@type":`CollectionPage`,name:t.collectionTitle},a=s(t.description)||t.summary;return a&&(i.description=a),t.coverImage&&(i.image=[t.coverImage]),i.mainEntity={"@type":`ItemList`,numberOfItems:r.length,itemListElement:r},i}var W=70;function G(e){return e.normalize(`NFKD`).replace(/[\u0300-\u036f]/g,``).toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,W).replace(/-+$/g,``)}var K=class t{static _activeInstance=null;_state=`idle`;_venueName;_venueAddress;_venueTimeZone;_baseUrl;_originals=null;_originalsSaved=!1;_events=[];constructor(n){typeof document>`u`||(t._activeInstance&&t._activeInstance!==this&&t._activeInstance.destroy(),this._venueName=n.venueName,this._venueAddress=n.venueAddress,this._venueTimeZone=n.venueTimeZone||e(),this._baseUrl=n.baseUrl||window.location.origin+window.location.pathname,this._saveOriginals(),t._activeInstance=this)}_saveOriginals(){if(this._originalsSaved)return;let e=document.querySelector(`link[rel="canonical"]`),t=document.querySelector(`meta[property="og:title"]`),n=document.querySelector(`meta[property="og:description"]`),r=document.querySelector(`meta[property="og:image"]`),i=document.querySelector(`meta[property="og:url"]`),a=document.querySelector(`meta[property="og:type"]`),o=document.querySelector(`meta[name="description"]`);this._originals={title:document.title,canonicalHref:e?.getAttribute(`href`)??null,ogTitle:t?.getAttribute(`content`)??null,ogDescription:n?.getAttribute(`content`)??null,ogImage:r?.getAttribute(`content`)??null,ogUrl:i?.getAttribute(`content`)??null,ogType:a?.getAttribute(`content`)??null,metaDescription:o?.getAttribute(`content`)??null},this._originalsSaved=!0}_injectJsonLd(e){if(typeof document>`u`)return;document.querySelectorAll(`script[data-micdrop="jsonld"]`).forEach(e=>e.remove());let t=document.createElement(`script`);t.setAttribute(`type`,`application/ld+json`),t.setAttribute(`data-micdrop`,`jsonld`),t.textContent=JSON.stringify(e),document.head.appendChild(t)}_setMeta(e,t){if(!(typeof document>`u`)){if(e.startsWith(`og:`)){let n=document.querySelector(`meta[property="${e}"]`);n?n.setAttribute(`content`,t):(n=document.createElement(`meta`),n.setAttribute(`property`,e),n.setAttribute(`content`,t),n.setAttribute(`data-micdrop`,`og`),document.head.appendChild(n))}else{let n=document.querySelector(`meta[name="${e}"]`);n?n.setAttribute(`content`,t):(n=document.createElement(`meta`),n.setAttribute(`name`,e),n.setAttribute(`content`,t),n.setAttribute(`data-micdrop`,`meta`),document.head.appendChild(n))}}}_setCanonical(e){if(typeof document>`u`)return;let t=document.querySelector(`link[rel="canonical"]`);t?t.setAttribute(`href`,e):(t=document.createElement(`link`),t.setAttribute(`rel`,`canonical`),t.setAttribute(`href`,e),t.setAttribute(`data-micdrop`,`canonical`),document.head.appendChild(t))}_removeAllInjected(){typeof document>`u`||document.querySelectorAll(`[data-micdrop]`).forEach(e=>e.remove())}_restoreOriginals(){if(!(typeof document>`u`||!this._originals)){if(document.title=this._originals.title,this._originals.canonicalHref!==null){let e=document.querySelector(`link[rel="canonical"]`);e&&e.setAttribute(`href`,this._originals.canonicalHref)}this._restoreMetaProperty(`og:title`,this._originals.ogTitle),this._restoreMetaProperty(`og:description`,this._originals.ogDescription),this._restoreMetaProperty(`og:image`,this._originals.ogImage),this._restoreMetaProperty(`og:url`,this._originals.ogUrl),this._restoreMetaProperty(`og:type`,this._originals.ogType),this._restoreMetaName(`description`,this._originals.metaDescription),this._originalsSaved=!1}}_restoreMetaProperty(e,t){let n=document.querySelector(`meta[property="${e}"]`);t!==null&&n?n.setAttribute(`content`,t):t===null&&n?.hasAttribute(`data-micdrop`)&&n.remove()}_restoreMetaName(e,t){let n=document.querySelector(`meta[name="${e}"]`);t!==null&&n?n.setAttribute(`content`,t):t===null&&n?.hasAttribute(`data-micdrop`)&&n.remove()}_buildItemList(e){return{"@context":`https://schema.org`,"@type":`ItemList`,itemListElement:e.map((e,t)=>{let n=e.slug||G(e.name||``);return{"@type":`ListItem`,position:t+1,url:`${this._baseUrl}?e=${e.id}-${n}`}})}}_buildEntityUrl(e,t,n){let r=e===`event`?`e`:e===`series`?`s`:`c`;return`${this._baseUrl}?${r}=${t}-${n}`}onEventsLoaded(e,t){if(typeof document>`u`||this._state===`destroyed`)return;if(t){this._venueName=t.name||this._venueName,this._venueAddress=t.address||t.googleLocationNameCache||this._venueAddress;let e=t.timeZone||t.timezone;e&&(this._venueTimeZone=e)}this._events=e;let n=this._buildItemList(e);this._injectJsonLd(n),this._state=`listing`}onEntitySelected(e,t,n){if(typeof document>`u`||this._state===`destroyed`)return;if(this._saveOriginals(),n){this._venueName=n.name||this._venueName,this._venueAddress=n.address||n.googleLocationNameCache||this._venueAddress;let e=n.timeZone||n.timezone;e&&(this._venueTimeZone=e)}let r=null,i=``,a=``,o=``,c=``,l=``;if(e===`event`){let e=t.slug||G(t.name||``);l=this._buildEntityUrl(`event`,t.id||t.eventID||``,e),r=z({event:t,venue:{name:this._venueName,googleLocationNameCache:this._venueAddress},venueTimeZone:this._venueTimeZone,eventUrl:l}),i=t.name||``,a=t.description||``,o=t.eventSummary||``,c=t.image||t.coverImage||t.ShowImage||``}else if(e===`series`){let e=t.slug||G(t.title||``);l=this._buildEntityUrl(`series`,t.id||``,e),r=H({series:{...t,venue:{name:this._venueName,googleLocationNameCache:this._venueAddress},timeZone:this._venueTimeZone},baseEventUrl:l}),i=t.title||``,a=t.description||``,o=t.eventSummary||``,c=t.image||``}else if(e===`collection`){let e=t.slug||G(t.collectionTitle||``);l=this._buildEntityUrl(`collection`,t.id||``,e),r=U({collection:t,baseEventUrl:l,defaultTimeZone:this._venueTimeZone}),i=t.collectionTitle||``,a=t.description||``,o=t.summary||``,c=t.coverImage||``}r&&this._injectJsonLd(r),l&&this._setCanonical(l),i&&this._setMeta(`og:title`,i);let u=s(a,160)||s(o,160);u?this._setMeta(`og:description`,u):this._restoreMetaProperty(`og:description`,this._originals?.ogDescription??null),c&&this._setMeta(`og:image`,c),l&&this._setMeta(`og:url`,l),this._setMeta(`og:type`,`website`),this._setMeta(`twitter:card`,`summary_large_image`),u?this._setMeta(`description`,u):this._restoreMetaName(`description`,this._originals?.metaDescription??null),i&&(document.title=`${i} | ${this._venueName}`),this._state=`entity`}onBackToListing(){if(!(typeof document>`u`)&&this._state!==`destroyed`){if(this._restoreOriginals(),this._removeAllInjected(),this._events.length>0){let e=this._buildItemList(this._events);this._injectJsonLd(e)}this._saveOriginals(),this._state=`listing`}}destroy(){typeof document>`u`||this._state!==`destroyed`&&(this._removeAllInjected(),this._restoreOriginals(),t._activeInstance===this&&(t._activeInstance=null),this._state=`destroyed`)}};exports.HostSeoController=K,exports.buildCollectionJsonLd=U,exports.buildEventJsonLd=z,exports.buildOffers=L,exports.buildPerformers=R,exports.buildPostalAddress=N,exports.buildSeriesJsonLd=H,exports.escapeJsonLdForScript=A,exports.formatDateTimeWithOffset=j,exports.getEventStatus=P,exports.getTicketAvailability=F,exports.parseAddressToPostal=M;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(){return`America/Los_Angeles`}var t=/<\/(?:p|div|h[1-6]|li|ul|ol|blockquote|tr)>/gi,n=/<br\s*\/?>/gi,r=/<[^>]*>/g,i={"&amp;":`&`,"&lt;":`<`,"&gt;":`>`,"&quot;":`"`,"&#39;":`'`,"&apos;":`'`,"&nbsp;":` `};function a(e){return e.replace(/&#x([0-9a-f]+);/gi,(e,t)=>o(parseInt(t,16))).replace(/&#(\d+);/g,(e,t)=>o(Number(t))).replace(/&[a-z0-9]+;/gi,e=>i[e.toLowerCase()]??e)}function o(e){return Number.isFinite(e)&&e>0&&e<=1114111?String.fromCodePoint(e):``}function s(e,i){if(!e)return``;let o=String(e).replace(n,` `).replace(t,` `).replace(r,``);if(o=a(o).replace(/\s+/g,` `).trim(),i&&i>0&&o.length>i){let e=o.slice(0,i),t=e.lastIndexOf(` `);o=(t>40?e.slice(0,t):e).trimEnd()+`…`}return o}function c(){return new Date}var l=class extends Error{constructor(e,t,n={}){super(e),this.name=`AppError`,this.code=t,this.status=n.status??500,this.details=n.details,this.timestamp=c(),this.recoverable=n.recoverable??!0,this.cause=n.cause,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}toJSON(){return{name:this.name,code:this.code,message:this.message,status:this.status,details:this.details,timestamp:this.timestamp.toISOString(),recoverable:this.recoverable,stack:this.stack,cause:this.cause?.message}}getUserMessage(e){return this.message}isRetryable(){return this.recoverable}},u=class extends l{constructor(e,t,n={}){super(e,t,{status:422,recoverable:!1,...n}),this.name=`ValueGuardError`}},d=class extends u{constructor(e,t,n){super(e,t,{details:n}),this.name=`DateTimeError`}},f;(function(e){e.INVALID_TIMEZONE=`INVALID_TIMEZONE`,e.INVALID_ISO_STRING=`INVALID_ISO_STRING`,e.INVALID_DATE=`INVALID_DATE`,e.INVALID_TIME=`INVALID_TIME`,e.MISSING_TIMEZONE=`MISSING_TIMEZONE`,e.PARSE_ERROR=`PARSE_ERROR`})(f||={});function p(e,t,n,r=0,i=0,a=0){let o=new Date(Date.UTC(e,t-1,n,r,i,a));return e>=0&&e<=99&&o.setUTCFullYear(e),o}var m=/^(\d{4})-(\d{2})-(\d{2})(?:T\d{2}:\d{2}(?::\d{2}(?:\.\d{1,9})?)?(?:Z|[+-]\d{2}:\d{2}))?$/,h=/^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}(?::\d{2}(?:\.\d{1,9})?)?$/;function g(e,t,n){let r=p(e,t,n);return r.getUTCFullYear()===e&&r.getUTCMonth()===t-1&&r.getUTCDate()===n}var _=/^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})(?:\.(\d{1,9}))? ?([+-])(\d{2}):?(\d{2})(?: [A-Za-z][A-Za-z0-9_/+-]*)?(?: m=[+-][\d.]+)?$/,v=p(1,1,1).getTime();function y(e){let t=m.exec(e);if(t){let[,n,r,i]=t;return{iso:e,year:+n,month:+r,day:+i}}let n=_.exec(e);if(n){let[,e,t,r,i,a,o,s,c,l,u]=n;return{iso:`${e}-${t}-${r}T${i}:${a}:${o}${s?`.${s.slice(0,3).padEnd(3,`0`)}`:``}${c}${l}:${u}`,year:+e,month:+t,day:+r}}return null}function b(e){if(typeof e==`number`){if(!Number.isFinite(e))return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t}if(typeof e!=`string`)return null;let t=y(e.trim());if(!t||!g(t.year,t.month,t.day))return null;let n=new Date(t.iso);return Number.isNaN(n.getTime())?null:n}function x(e){let t=b(e);return t!==null&&t.getTime()===v}function S(e,t){if(e.getTime()===v)throw new d(`toInstant: ${JSON.stringify(t)} is the backend's UNSET marker (Go's zero time.Time), not a moment — the field was never filled in. toInstant is the REQUIRED-timestamp door, so an unset value here is a bug: returning the year-1 instant it names would sort this row ahead of every real date and answer "yes" to "has this started?". If the field is allowed to be unset, read it with toInstantOrNull (null), ask isAbsentTimestamp why it is missing, and order it with compareWireInstants.`,f.INVALID_ISO_STRING,{value:t})}function C(e,t){if(!(e instanceof Date)||Number.isNaN(e.getTime()))throw new d(`${t} must be a valid Date`,f.INVALID_DATE,{value:e})}function w(e,t){return C(e,`compareInstants(a)`),C(t,`compareInstants(b)`),e.getTime()-t.getTime()}function T(e){if(typeof e==`number`){if(!Number.isFinite(e))throw new d(`toInstant: epoch milliseconds must be a finite number, got ${e}`,f.INVALID_DATE,{value:e});let t=new Date(e);return C(t,`toInstant(value)`),S(t,e),t}if(typeof e!=`string`||e.trim()===``)throw new d(`toInstant: a UTC ISO timestamp or epoch ms is required, got ${JSON.stringify(e)}`,typeof e==`string`?f.INVALID_ISO_STRING:f.INVALID_DATE,{value:e});let t=y(e);if(!t)throw h.test(e)?new d(`toInstant: ${JSON.stringify(e)} carries a time but no timezone, so it is not an instant — it would resolve on the viewer's clock and land on a different calendar day for a viewer in Los Angeles than one in London. Send a UTC wire timestamp (2026-06-09T20:00:00Z) or an explicit offset (2026-06-09T13:00:00-07:00). If this is a local wall-clock value, it belongs in datetime/local or parseLocalToUTC(value, timezone), not here.`,f.MISSING_TIMEZONE,{value:e}):new d(`toInstant: not an ISO-8601 timestamp: ${JSON.stringify(e)}`,f.INVALID_ISO_STRING,{value:e});let{year:n,month:r,day:i}=t;if(!g(n,r,i))throw new d(`toInstant: ${n}-${r}-${i} is not a real calendar date: ${JSON.stringify(e)}`,f.INVALID_ISO_STRING,{value:e});let a=new Date(t.iso);if(Number.isNaN(a.getTime()))throw new d(`toInstant: ISO-8601 shaped but not a real instant: ${JSON.stringify(e)}`,f.INVALID_ISO_STRING,{value:e});return S(a,e),a}function E(e){if(e==null||typeof e==`string`&&e.trim()===``||x(e))return null;try{return T(e)}catch{return null}}function D(e){return Math.round((e+2**-52)*100)/100}function O(e){if(e==null)return null;let t=Number(e);return Number.isFinite(t)?t:null}function k(e){let t=O(e?.price);return t===null?null:t===0?0:D(t+(O(e?.fee)??0))}function A(e){return e.replace(/</g,`\\u003c`).replace(/>/g,`\\u003e`).replace(/&/g,`\\u0026`)}function j(t,n){if(!t)return null;let r=new Date(t);if(isNaN(r.getTime()))return null;let i={year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1,timeZoneName:`shortOffset`},a;try{a=new Intl.DateTimeFormat(`en-US`,{...i,timeZone:n})}catch{a=new Intl.DateTimeFormat(`en-US`,{...i,timeZone:e()})}let o=a.formatToParts(r),s=e=>o.find(t=>t.type===e)?.value||``,c=s(`year`),l=s(`month`),u=s(`day`),d=s(`hour`),f=s(`minute`),p=s(`second`),m=s(`timeZoneName`),h=`+00:00`;if(m){let e=m.match(/GMT([+-])(\d+)(?::(\d+))?/);e&&(h=`${e[1]}${e[2].padStart(2,`0`)}:${e[3]||`00`}`)}return`${c}-${l}-${u}T${d}:${f}:${p}${h}`}function M(e){if(!e)return null;let t=e.split(`,`).map(e=>e.trim());if(t.length<2)return{"@type":`PostalAddress`,streetAddress:e,addressCountry:`US`};let n=t[t.length-1].match(/^([A-Z]{2})\s+(\d{5}(?:-\d{4})?)$/);return n&&t.length>=3?{"@type":`PostalAddress`,streetAddress:t.slice(0,-2).join(`, `),addressLocality:t[t.length-2],addressRegion:n[1],postalCode:n[2],addressCountry:`US`}:{"@type":`PostalAddress`,streetAddress:t[0],addressLocality:t.slice(1).join(`, `),addressCountry:`US`}}function N(e,t){if(e&&(e.city||e.state||e.postalCode)){let t={"@type":`PostalAddress`};return e.address&&(t.streetAddress=e.address),e.city&&(t.addressLocality=e.city),e.state&&(t.addressRegion=e.state),e.postalCode&&(t.postalCode=e.postalCode),t.addressCountry=e.country||`US`,t}return M(e&&e.address||t||null)}function P(e){if(!e)return`https://schema.org/EventScheduled`;let t=e.toLowerCase();return t===`cancelled`||t===`canceled`?`https://schema.org/EventCancelled`:t===`postponed`?`https://schema.org/EventPostponed`:t===`rescheduled`?`https://schema.org/EventRescheduled`:`https://schema.org/EventScheduled`}function F(e){if((e.remainingCapacity??e.quantityRemaining??e.quantity)===0||e.soldOut)return`https://schema.org/SoldOut`;let t=c(),n=E(e.salesBegin||e.salesStart||e.saleBegin||e.onSaleStart),r=E(e.salesEnd||e.saleEnd||e.onSaleEnd);return n&&w(n,t)>0?`https://schema.org/PreOrder`:r&&w(r,t)<0?`https://schema.org/SoldOut`:`https://schema.org/InStock`}function I(e,t,n,r={}){return e===t?{"@type":`Offer`,price:e,priceCurrency:`USD`,availability:n,...r}:{"@type":`AggregateOffer`,lowPrice:e,highPrice:t,priceCurrency:`USD`,availability:n,...r}}function L(e,t){if(!e||e.length===0)return null;let n=e.filter(e=>{let t=e.visibility??0,n=t===0||t===1,r=e.salesChannel!==2;return n&&r});if(n.length===0)return null;let r=n.map(e=>k({price:e.price,fee:e.fee})).filter(e=>e!=null);if(r.length===0)return null;let i=Math.min(...r),a=Math.max(...r),o=n[0];return I(i,a,F(o),{url:t||void 0,validFrom:o?.salesBegin||o?.salesStart||void 0})}function R(e){if(!e||e.length===0)return null;let t=e.filter(e=>{let t=e.acceptedState===2,n=!e.shouldBeHidden,r=e.RosterPerformer?.User?.performerProfile,i=r?.firstName||r?.lastName||r?.displayName;return t&&n&&i});return t.length===0?null:t.map(e=>{let t=e.RosterPerformer?.User?.performerProfile;return{"@type":`PerformingGroup`,name:t?.displayName||[t?.firstName,t?.lastName].filter(Boolean).join(` `)}})}function z(t){let{event:n,venue:r,venueTimeZone:i=e(),eventUrl:a,organizer:o}=t;if(!n)return null;let c=j(n.startDateTime,i);if(!n.name||!c||!r?.name)return null;let l=N(r,r?.googleLocationNameCache),u={"@type":`Place`,name:r.name};l&&(u.address=l);let d={"@context":`https://schema.org`,"@type":`Event`,name:n.name,startDate:c,eventStatus:P(n.status),eventAttendanceMode:`https://schema.org/OfflineEventAttendanceMode`,location:u},f=j(n.endDateTime,i);f&&(d.endDate=f);let p=s(n.description)||n.eventSummary;p&&(d.description=p);let m=n.image||n.coverImage||n.ShowImage;m&&(d.image=[m]);let h=L(n.availableTickets,a);h&&(d.offers=h);let g=R(n.performers);if(g&&g.length>0&&(d.performer=g),o?.name){let e={"@type":`Organization`,name:o.name};o.url&&(e.url=o.url),d.organizer=e}return a&&(d.url=a),d}function B(e){switch(e){case`available`:return`https://schema.org/InStock`;case`sold_out`:return`https://schema.org/SoldOut`;case`coming_soon`:return`https://schema.org/PreOrder`;case`ended`:return`https://schema.org/SoldOut`;default:return`https://schema.org/InStock`}}function V(e,t){if(!e||e.length===0)return null;let n=e.filter(e=>e.status!==`sold_out`&&e.status!==`ended`);if(n.length===0){let t=e.map(e=>e.price).filter(e=>!isNaN(e));return t.length===0?null:I(Math.min(...t),Math.max(...t),`https://schema.org/SoldOut`)}let r=n.map(e=>e.price).filter(e=>!isNaN(e));return r.length===0?null:I(Math.min(...r),Math.max(...r),B(n[0].status))}function H(e){let{series:t,baseEventUrl:n}=e;if(!t.title||!t.occurrences||t.occurrences.length===0||!t.venue?.name)return null;let r=N(t.venue,t.venue.googleLocationNameCache),i={"@type":`Place`,name:t.venue.name};r&&(i.address=r);let a={"@context":`https://schema.org`,"@type":`EventSeries`,name:t.title,location:i},o=s(t.description)||t.eventSummary;o&&(a.description=o),t.image&&(a.image=[t.image]);let c=t.performers?.filter(e=>e.displayName);c&&c.length>0&&(a.performer=c.map(e=>({"@type":`PerformingGroup`,name:e.displayName})));let l=[];for(let e of t.occurrences){let r=j(e.startDateTime,t.timeZone);if(!r)continue;let a={"@type":`Event`,name:e.title,startDate:r,eventStatus:P(e.status),location:i};n&&(a[`@id`]=`${n}/${e.id}-${e.slug}`);let o=j(e.endDateTime,t.timeZone);o&&(a.endDate=o);let s=V(e.tickets,e.status);s&&(a.offers=s),l.push(a)}return l.length===0?null:(a.subEvent=l,a)}function U(e){let{collection:t,baseEventUrl:n}=e;if(!t.collectionTitle||!t.events||t.events.length===0)return null;let r=[];for(let e of t.events){if(!e.title)continue;let t={"@type":`ListItem`,position:r.length+1,name:e.title};n&&(t.url=e.slug?`${n}/${e.id}-${e.slug}`:`${n}/${e.id}`),r.push(t)}if(r.length===0)return null;let i={"@context":`https://schema.org`,"@type":`CollectionPage`,name:t.collectionTitle},a=s(t.description)||t.summary;return a&&(i.description=a),t.coverImage&&(i.image=[t.coverImage]),i.mainEntity={"@type":`ItemList`,numberOfItems:r.length,itemListElement:r},i}var W=70;function G(e){return e.normalize(`NFKD`).replace(/[\u0300-\u036f]/g,``).toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,W).replace(/-+$/g,``)}var K=class t{static _activeInstance=null;static shared(e){let n=t._activeInstance;return n?(n._holders+=1,n):new t(e)}_state=`idle`;_holders=1;_venueName;_venueAddress;_venueTimeZone;_baseUrl;_originals=null;_originalsSaved=!1;_events=[];constructor(n){typeof document>`u`||(t._activeInstance&&t._activeInstance!==this&&t._activeInstance._teardown(),this._venueName=n.venueName,this._venueAddress=n.venueAddress,this._venueTimeZone=n.venueTimeZone||e(),this._baseUrl=n.baseUrl||window.location.origin+window.location.pathname,this._saveOriginals(),t._activeInstance=this)}_saveOriginals(){if(this._originalsSaved)return;let e=document.querySelector(`link[rel="canonical"]`),t=document.querySelector(`meta[property="og:title"]`),n=document.querySelector(`meta[property="og:description"]`),r=document.querySelector(`meta[property="og:image"]`),i=document.querySelector(`meta[property="og:url"]`),a=document.querySelector(`meta[property="og:type"]`),o=document.querySelector(`meta[name="description"]`);this._originals={title:document.title,canonicalHref:e?.getAttribute(`href`)??null,ogTitle:t?.getAttribute(`content`)??null,ogDescription:n?.getAttribute(`content`)??null,ogImage:r?.getAttribute(`content`)??null,ogUrl:i?.getAttribute(`content`)??null,ogType:a?.getAttribute(`content`)??null,metaDescription:o?.getAttribute(`content`)??null},this._originalsSaved=!0}_injectJsonLd(e){if(typeof document>`u`)return;document.querySelectorAll(`script[data-micdrop="jsonld"]`).forEach(e=>e.remove());let t=document.createElement(`script`);t.setAttribute(`type`,`application/ld+json`),t.setAttribute(`data-micdrop`,`jsonld`),t.textContent=JSON.stringify(e),document.head.appendChild(t)}_setMeta(e,t){if(!(typeof document>`u`)){if(e.startsWith(`og:`)){let n=document.querySelector(`meta[property="${e}"]`);n?n.setAttribute(`content`,t):(n=document.createElement(`meta`),n.setAttribute(`property`,e),n.setAttribute(`content`,t),n.setAttribute(`data-micdrop`,`og`),document.head.appendChild(n))}else{let n=document.querySelector(`meta[name="${e}"]`);n?n.setAttribute(`content`,t):(n=document.createElement(`meta`),n.setAttribute(`name`,e),n.setAttribute(`content`,t),n.setAttribute(`data-micdrop`,`meta`),document.head.appendChild(n))}}}_setCanonical(e){if(typeof document>`u`)return;let t=document.querySelector(`link[rel="canonical"]`);t?t.setAttribute(`href`,e):(t=document.createElement(`link`),t.setAttribute(`rel`,`canonical`),t.setAttribute(`href`,e),t.setAttribute(`data-micdrop`,`canonical`),document.head.appendChild(t))}_removeAllInjected(){typeof document>`u`||document.querySelectorAll(`[data-micdrop]`).forEach(e=>e.remove())}_restoreOriginals(){if(!(typeof document>`u`||!this._originals)){if(document.title=this._originals.title,this._originals.canonicalHref!==null){let e=document.querySelector(`link[rel="canonical"]`);e&&e.setAttribute(`href`,this._originals.canonicalHref)}this._restoreMetaProperty(`og:title`,this._originals.ogTitle),this._restoreMetaProperty(`og:description`,this._originals.ogDescription),this._restoreMetaProperty(`og:image`,this._originals.ogImage),this._restoreMetaProperty(`og:url`,this._originals.ogUrl),this._restoreMetaProperty(`og:type`,this._originals.ogType),this._restoreMetaName(`description`,this._originals.metaDescription),this._originalsSaved=!1}}_restoreMetaProperty(e,t){let n=document.querySelector(`meta[property="${e}"]`);t!==null&&n?n.setAttribute(`content`,t):t===null&&n?.hasAttribute(`data-micdrop`)&&n.remove()}_restoreMetaName(e,t){let n=document.querySelector(`meta[name="${e}"]`);t!==null&&n?n.setAttribute(`content`,t):t===null&&n?.hasAttribute(`data-micdrop`)&&n.remove()}_buildItemList(e){return{"@context":`https://schema.org`,"@type":`ItemList`,itemListElement:e.map((e,t)=>{let n=e.slug||G(e.name||``);return{"@type":`ListItem`,position:t+1,url:`${this._baseUrl}?e=${e.id}-${n}`}})}}_buildEntityUrl(e,t,n){let r=e===`event`?`e`:e===`series`?`s`:`c`;return`${this._baseUrl}?${r}=${t}-${n}`}onEventsLoaded(e,t){if(typeof document>`u`||this._state===`destroyed`)return;if(t){this._venueName=t.name||this._venueName,this._venueAddress=t.address||t.googleLocationNameCache||this._venueAddress;let e=t.timeZone||t.timezone;e&&(this._venueTimeZone=e)}this._events=e;let n=this._buildItemList(e);this._injectJsonLd(n),this._state=`listing`}onEntitySelected(e,t,n){if(typeof document>`u`||this._state===`destroyed`)return;if(this._saveOriginals(),n){this._venueName=n.name||this._venueName,this._venueAddress=n.address||n.googleLocationNameCache||this._venueAddress;let e=n.timeZone||n.timezone;e&&(this._venueTimeZone=e)}let r=null,i=``,a=``,o=``,c=``,l=``;if(e===`event`){let e=t.slug||G(t.name||``);l=this._buildEntityUrl(`event`,t.id||t.eventID||``,e),r=z({event:t,venue:{name:this._venueName,googleLocationNameCache:this._venueAddress},venueTimeZone:this._venueTimeZone,eventUrl:l}),i=t.name||``,a=t.description||``,o=t.eventSummary||``,c=t.image||t.coverImage||t.ShowImage||``}else if(e===`series`){let e=t.slug||G(t.title||``);l=this._buildEntityUrl(`series`,t.id||``,e),r=H({series:{...t,venue:{name:this._venueName,googleLocationNameCache:this._venueAddress},timeZone:this._venueTimeZone},baseEventUrl:l}),i=t.title||``,a=t.description||``,o=t.eventSummary||``,c=t.image||``}else if(e===`collection`){let e=t.slug||G(t.collectionTitle||``);l=this._buildEntityUrl(`collection`,t.id||``,e),r=U({collection:t,baseEventUrl:l,defaultTimeZone:this._venueTimeZone}),i=t.collectionTitle||``,a=t.description||``,o=t.summary||``,c=t.coverImage||``}r&&this._injectJsonLd(r),l&&this._setCanonical(l),i&&this._setMeta(`og:title`,i);let u=s(a,160)||s(o,160);u?this._setMeta(`og:description`,u):this._restoreMetaProperty(`og:description`,this._originals?.ogDescription??null),c&&this._setMeta(`og:image`,c),l&&this._setMeta(`og:url`,l),this._setMeta(`og:type`,`website`),this._setMeta(`twitter:card`,`summary_large_image`),u?this._setMeta(`description`,u):this._restoreMetaName(`description`,this._originals?.metaDescription??null),i&&(document.title=`${i} | ${this._venueName}`),this._state=`entity`}onBackToListing(){if(!(typeof document>`u`)&&this._state!==`destroyed`){if(this._restoreOriginals(),this._removeAllInjected(),this._events.length>0){let e=this._buildItemList(this._events);this._injectJsonLd(e)}this._saveOriginals(),this._state=`listing`}}destroy(){if(this._holders>1){--this._holders;return}this._teardown()}_teardown(){typeof document>`u`||this._state!==`destroyed`&&(this._removeAllInjected(),this._restoreOriginals(),t._activeInstance===this&&(t._activeInstance=null),this._state=`destroyed`)}};exports.HostSeoController=K,exports.buildCollectionJsonLd=U,exports.buildEventJsonLd=z,exports.buildOffers=L,exports.buildPerformers=R,exports.buildPostalAddress=N,exports.buildSeriesJsonLd=H,exports.escapeJsonLdForScript=A,exports.formatDateTimeWithOffset=j,exports.getEventStatus=P,exports.getTicketAvailability=F,exports.parseAddressToPostal=M;
package/dist/seo/seo.mjs CHANGED
@@ -435,7 +435,12 @@ function G(e) {
435
435
  //#region src/lib/seo/HostSeoController.ts
436
436
  var K = class t {
437
437
  static _activeInstance = null;
438
+ static shared(e) {
439
+ let n = t._activeInstance;
440
+ return n ? (n._holders += 1, n) : new t(e);
441
+ }
438
442
  _state = "idle";
443
+ _holders = 1;
439
444
  _venueName;
440
445
  _venueAddress;
441
446
  _venueTimeZone;
@@ -444,7 +449,7 @@ var K = class t {
444
449
  _originalsSaved = !1;
445
450
  _events = [];
446
451
  constructor(n) {
447
- typeof document > "u" || (t._activeInstance && t._activeInstance !== this && t._activeInstance.destroy(), this._venueName = n.venueName, this._venueAddress = n.venueAddress, this._venueTimeZone = n.venueTimeZone || e(), this._baseUrl = n.baseUrl || window.location.origin + window.location.pathname, this._saveOriginals(), t._activeInstance = this);
452
+ typeof document > "u" || (t._activeInstance && t._activeInstance !== this && t._activeInstance._teardown(), this._venueName = n.venueName, this._venueAddress = n.venueAddress, this._venueTimeZone = n.venueTimeZone || e(), this._baseUrl = n.baseUrl || window.location.origin + window.location.pathname, this._saveOriginals(), t._activeInstance = this);
448
453
  }
449
454
  _saveOriginals() {
450
455
  if (this._originalsSaved) return;
@@ -585,6 +590,13 @@ var K = class t {
585
590
  }
586
591
  }
587
592
  destroy() {
593
+ if (this._holders > 1) {
594
+ --this._holders;
595
+ return;
596
+ }
597
+ this._teardown();
598
+ }
599
+ _teardown() {
588
600
  typeof document > "u" || this._state !== "destroyed" && (this._removeAllInjected(), this._restoreOriginals(), t._activeInstance === this && (t._activeInstance = null), this._state = "destroyed");
589
601
  }
590
602
  };
@@ -143,67 +143,74 @@ var b = {
143
143
  function S() {
144
144
  return x += 1;
145
145
  }
146
- var C = f.from_html("<div class=\"event-card__poster w-full aspect-video bg-muted shrink-0 overflow-hidden svelte-18ndok6\"><!></div>"), w = f.from_html("<span class=\"event-card__badge svelte-18ndok6\"><!></span>"), T = f.from_html("<span> </span>"), E = f.from_html("<div class=\"event-card__pills flex flex-wrap gap-2 relative svelte-18ndok6\"></div>"), D = f.from_html("<p class=\"event-card__description type-body tone-secondary m-0 svelte-18ndok6\"> </p>"), O = f.from_html("<article class=\"event-card relative rounded-lg border bg-card border-border overflow-hidden flex flex-col svelte-18ndok6\"><!> <div class=\"event-card__content flex flex-col flex-1 min-w-0 svelte-18ndok6\"><header class=\"event-card__header\"><h3><!> <a class=\"event-card__title-link svelte-18ndok6\" rel=\"external\"> </a></h3></header> <!> <!> <!></div></article>");
146
+ var C = f.from_html("<div class=\"event-card__poster aspect-video bg-muted shrink-0 overflow-hidden svelte-18ndok6\"><!></div>"), w = f.from_html("<span class=\"event-card__badge svelte-18ndok6\"><!></span>"), T = f.from_html("<span> </span>"), E = f.from_html("<div class=\"event-card__pills flex flex-wrap gap-2 relative svelte-18ndok6\"></div>"), D = f.from_html("<p class=\"event-card__description type-body tone-secondary m-0 svelte-18ndok6\"> </p>"), O = f.from_html("<article class=\"event-card relative rounded-lg border bg-card border-border overflow-hidden svelte-18ndok6\"><!> <div class=\"event-card__content flex flex-col flex-1 min-w-0 svelte-18ndok6\"><header class=\"event-card__header\"><h3><!> <a class=\"event-card__title-link svelte-18ndok6\" rel=\"external\"> </a></h3></header> <!> <!> <!></div></article>");
147
147
  function k(t, n) {
148
148
  f.push(n, !0);
149
- let r = f.prop(n, "layout", 3, "vertical"), i = f.prop(n, "density", 3, "standard"), o = f.prop(n, "imageUrl", 3, ""), s = f.prop(n, "placeholderImage", 3, ""), c = f.prop(n, "hidePoster", 3, !1), u = f.prop(n, "dateLabel", 3, ""), d = f.prop(n, "description", 3, ""), p = f.prop(n, "badge", 3, null), m = f.prop(n, "pills", 19, () => []), h = f.prop(n, "pillVariant", 3, "alternative"), _ = f.prop(n, "showDescription", 3, !1), v = f.prop(n, "hideDate", 3, !1), y = f.derived(() => b[i()]), x = `event-card-title-${S()}`, k = f.derived(() => _() && !!d() && (i() === "standard" || i() === "featured")), A = f.derived(() => !v() && i() !== "micro" && !!u());
150
- function j(e, t) {
149
+ let r = f.prop(n, "layout", 3, "vertical"), i = f.prop(n, "density", 3, "standard"), o = f.prop(n, "imageUrl", 3, ""), s = f.prop(n, "placeholderImage", 3, ""), c = f.prop(n, "hidePoster", 3, !1), u = f.prop(n, "posterFit", 3, "fit"), d = f.prop(n, "dateLabel", 3, ""), p = f.prop(n, "description", 3, ""), m = f.prop(n, "badge", 3, null), h = f.prop(n, "pills", 19, () => []), _ = f.prop(n, "pillVariant", 3, "alternative"), v = f.prop(n, "showDescription", 3, !1), y = f.prop(n, "hideDate", 3, !1), x = f.derived(() => b[i()]), k = `event-card-title-${S()}`, A = f.derived(() => v() && !!p() && (i() === "standard" || i() === "featured")), j = f.derived(() => !y() && i() !== "micro" && !!d());
150
+ function M(e, t) {
151
151
  t.metaKey || t.ctrlKey || t.shiftKey || t.altKey || n.onpillclick && (t.preventDefault(), t.stopPropagation(), n.onpillclick(e));
152
152
  }
153
- function M(e) {
153
+ function N(e) {
154
154
  e.metaKey || e.ctrlKey || e.shiftKey || e.altKey || n.onclick && (e.preventDefault(), n.onclick());
155
155
  }
156
- var N = O(), P = f.child(N), F = (e) => {
157
- var t = C();
158
- g(f.child(t), {
159
- get src() {
160
- return o();
161
- },
162
- get fallback() {
163
- return s();
164
- },
165
- class: "event-card__poster-fill"
166
- }), f.reset(t), f.append(e, t);
156
+ var P = O(), F = f.child(P), I = (e) => {
157
+ var t = C(), n = f.child(t);
158
+ {
159
+ let e = f.derived(() => u() === "fill");
160
+ g(n, {
161
+ get src() {
162
+ return o();
163
+ },
164
+ get fallback() {
165
+ return s();
166
+ },
167
+ get fill() {
168
+ return f.get(e);
169
+ },
170
+ class: "event-card__poster-fill"
171
+ });
172
+ }
173
+ f.reset(t), f.append(e, t);
167
174
  };
168
- f.if(P, (e) => {
169
- c() || e(F);
175
+ f.if(F, (e) => {
176
+ c() || e(I);
170
177
  });
171
- var I = f.sibling(P, 2), L = f.child(I), R = f.child(L), z = f.child(R), B = (e) => {
178
+ var L = f.sibling(F, 2), R = f.child(L), z = f.child(R), B = f.child(z), V = (e) => {
172
179
  var t = w(), n = f.child(t);
173
180
  a(n, {
174
181
  get variant() {
175
- return p().variant;
182
+ return m().variant;
176
183
  },
177
184
  get size() {
178
- return f.get(y).badgeSize;
185
+ return f.get(x).badgeSize;
179
186
  },
180
187
  children: (e, t) => {
181
188
  f.next();
182
189
  var n = f.text();
183
- f.template_effect(() => f.set_text(n, p().text)), f.append(e, n);
190
+ f.template_effect(() => f.set_text(n, m().text)), f.append(e, n);
184
191
  },
185
192
  $$slots: { default: !0 }
186
193
  }), f.reset(t), f.append(e, t);
187
194
  };
188
- f.if(z, (e) => {
189
- p() && e(B);
195
+ f.if(B, (e) => {
196
+ m() && e(V);
190
197
  });
191
- var V = f.sibling(z, 2), H = f.child(V, !0);
192
- f.reset(V), f.reset(R), f.reset(L);
193
- var U = f.sibling(L, 2), W = (t) => {
198
+ var H = f.sibling(B, 2), U = f.child(H, !0);
199
+ f.reset(H), f.reset(z), f.reset(R);
200
+ var W = f.sibling(R, 2), G = (t) => {
194
201
  var n = T(), r = f.child(n, !0);
195
202
  f.reset(n), f.template_effect(() => {
196
- f.set_class(n, 1, `event-card__date tone-secondary ${e.emphasis ?? ""}`, "svelte-18ndok6"), f.set_text(r, u());
203
+ f.set_class(n, 1, `event-card__date tone-secondary ${e.emphasis ?? ""}`, "svelte-18ndok6"), f.set_text(r, d());
197
204
  }), f.append(t, n);
198
205
  };
199
- f.if(U, (e) => {
200
- f.get(A) && e(W);
206
+ f.if(W, (e) => {
207
+ f.get(j) && e(G);
201
208
  });
202
- var G = f.sibling(U, 2), K = (e) => {
209
+ var K = f.sibling(W, 2), q = (e) => {
203
210
  var t = E();
204
- f.each(t, 21, m, f.index, (e, t, n) => {
211
+ f.each(t, 21, h, f.index, (e, t, n) => {
205
212
  {
206
- let r = f.derived(() => h() === "primary" ? "default" : "alternative"), i = f.derived(() => f.get(t).ariaLabel ?? f.get(t).timeLabel);
213
+ let r = f.derived(() => _() === "primary" ? "default" : "alternative"), i = f.derived(() => f.get(t).ariaLabel ?? f.get(t).timeLabel);
207
214
  l(e, {
208
215
  get href() {
209
216
  return f.get(t).href;
@@ -212,9 +219,9 @@ function k(t, n) {
212
219
  return f.get(r);
213
220
  },
214
221
  get size() {
215
- return f.get(y).pillSize;
222
+ return f.get(x).pillSize;
216
223
  },
217
- onclick: (e) => j(n, e),
224
+ onclick: (e) => M(n, e),
218
225
  get "aria-label"() {
219
226
  return f.get(i);
220
227
  },
@@ -228,18 +235,18 @@ function k(t, n) {
228
235
  }
229
236
  }), f.reset(t), f.append(e, t);
230
237
  };
231
- f.if(G, (e) => {
232
- m().length > 0 && e(K);
238
+ f.if(K, (e) => {
239
+ h().length > 0 && e(q);
233
240
  });
234
- var q = f.sibling(G, 2), J = (e) => {
241
+ var J = f.sibling(K, 2), Y = (e) => {
235
242
  var t = D(), n = f.child(t, !0);
236
- f.reset(t), f.template_effect(() => f.set_text(n, d())), f.append(e, t);
243
+ f.reset(t), f.template_effect(() => f.set_text(n, p())), f.append(e, t);
237
244
  };
238
- f.if(q, (e) => {
239
- f.get(k) && e(J);
240
- }), f.reset(I), f.reset(N), f.template_effect(() => {
241
- f.set_attribute(N, "data-layout", r()), f.set_attribute(N, "data-density", i()), f.set_attribute(N, "data-hide-poster", c()), f.set_attribute(N, "aria-labelledby", x), f.set_class(R, 1, `event-card__title ${e.strong ?? ""} tone-primary m-0`, "svelte-18ndok6"), f.set_attribute(R, "id", x), f.set_attribute(V, "href", n.href), f.set_attribute(V, "aria-label", n.ariaLabel ?? n.title), f.set_text(H, n.title);
242
- }), f.delegated("click", V, M), f.append(t, N), f.pop();
245
+ f.if(J, (e) => {
246
+ f.get(A) && e(Y);
247
+ }), f.reset(L), f.reset(P), f.template_effect(() => {
248
+ f.set_attribute(P, "data-layout", r()), f.set_attribute(P, "data-density", i()), f.set_attribute(P, "data-hide-poster", c()), f.set_attribute(P, "aria-labelledby", k), f.set_class(z, 1, `event-card__title ${e.strong ?? ""} tone-primary m-0`, "svelte-18ndok6"), f.set_attribute(z, "id", k), f.set_attribute(H, "href", n.href), f.set_attribute(H, "aria-label", n.ariaLabel ?? n.title), f.set_text(U, n.title);
249
+ }), f.delegated("click", H, N), f.append(t, P), f.pop();
243
250
  }
244
251
  f.delegate(["click"]);
245
252
  //#endregion
@@ -160,6 +160,13 @@ export interface CalendarProps extends BaseInitOptions {
160
160
  /** How big each view draws its events: S packs more in, L gives each
161
161
  * event more room, M is the default look (default: 'M') */
162
162
  size?: 'S' | 'M' | 'L';
163
+ /** Level of the calendar's screen-reader heading: 2 when the host page
164
+ * already carries its h1 (default: 1) */
165
+ headingLevel?: 1 | 2;
166
+ /** Opening a show rewrites the host page's title and share tags to the
167
+ * show's, restoring them on close. Both embeds turn it on unless the host
168
+ * sets inject-seo="false" (default for a direct call: false) */
169
+ injectSeo?: boolean;
163
170
  /** Current month store (Svelte writable store) */
164
171
  currentMonth?: import('svelte/store').Writable<number>;
165
172
  /** Current year store (Svelte writable store) */