@seathold/sdk 0.1.1 → 0.1.3

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.
@@ -61,7 +61,7 @@ class u {
61
61
  (d = (c = this.config).onViewChanged) == null || d.call(c, e.zoom, e.position);
62
62
  break;
63
63
  case "seathold:hold_created":
64
- (g = (l = this.config).onHoldCreated) == null || g.call(l, e.holdId, e.expiresAt, e.seatIds, e.ticketTypes);
64
+ (g = (l = this.config).onHoldCreated) == null || g.call(l, e.holdId, e.holdToken, e.expiresAt, e.seatIds, e.ticketTypes);
65
65
  break;
66
66
  case "seathold:hold_released":
67
67
  (m = (f = this.config).onHoldReleased) == null || m.call(f);
@@ -1 +1 @@
1
- (function(t,n){typeof exports=="object"&&typeof module<"u"?n(exports):typeof define=="function"&&define.amd?define(["exports"],n):(t=typeof globalThis<"u"?globalThis:t||self,n(t.SeatHold={}))})(this,function(t){"use strict";class n{constructor(e){this.iframe=null,this.messageHandler=null,this.iframeOrigin="",this.config=e}render(){const e=document.getElementById(this.config.divId);if(!e)throw new Error(`[SeatHold] Element #${this.config.divId} not found.`);const s=this.buildEmbedUrl();this.iframeOrigin=new URL(this.config.baseUrl).origin;const i=document.createElement("iframe");return i.src=s,i.style.width=this.resolveSize(this.config.width,"100%"),i.style.height=this.resolveSize(this.config.height,"600px"),i.style.border="none",i.allow="fullscreen",this.iframe=i,e.innerHTML="",e.appendChild(i),this.messageHandler=o=>{o.origin===this.iframeOrigin&&this.handleMessage(o.data)},window.addEventListener("message",this.messageHandler),this}destroy(){this.messageHandler&&(window.removeEventListener("message",this.messageHandler),this.messageHandler=null),this.iframe&&(this.iframe.remove(),this.iframe=null)}setSelectedSeats(e){this.send({type:"seathold:set_selected_seats",seatIds:e})}createHold(e){this.send({type:"seathold:create_hold",seatIds:e})}releaseHold(){this.send({type:"seathold:release_hold"})}updateSession(e,s){this.send({type:"seathold:update_session",sessionToken:e,expiresAt:s})}requestState(){this.send({type:"seathold:request_state"})}setPricing(e){this.send({type:"seathold:set_pricing",pricing:e})}send(e){var s;if(!((s=this.iframe)!=null&&s.contentWindow)){console.warn("[SeatHold] iframe not ready yet.");return}this.iframe.contentWindow.postMessage(e,this.iframeOrigin)}handleMessage(e){var s,i,o,r,h,a,d,c,l,g,f,m,p,u,y,b;switch(e.type){case"seathold:ready":this.config.pricing&&this.config.pricing.length>0&&this.setPricing(this.config.pricing),(i=(s=this.config).onReady)==null||i.call(s,e.eventId);break;case"seathold:selection_changed":(r=(o=this.config).onSelectionChanged)==null||r.call(o,e.seatIds,e.ticketTypes);break;case"seathold:object_clicked":(a=(h=this.config).onObjectClicked)==null||a.call(h,e.objectId,e.objectType);break;case"seathold:category_changed":(c=(d=this.config).onCategoryChanged)==null||c.call(d,e.categoryId);break;case"seathold:view_changed":(g=(l=this.config).onViewChanged)==null||g.call(l,e.zoom,e.position);break;case"seathold:hold_created":(m=(f=this.config).onHoldCreated)==null||m.call(f,e.holdId,e.expiresAt,e.seatIds,e.ticketTypes);break;case"seathold:hold_released":(u=(p=this.config).onHoldReleased)==null||u.call(p);break;case"seathold:error":(b=(y=this.config).onError)==null||b.call(y,e.action,e.message);break}}buildEmbedUrl(){const e=this.config.baseUrl.replace(/\/$/,""),s=new URLSearchParams({workspace_key:this.config.workspaceKey,...this.config.sessionToken?{session_token:this.config.sessionToken}:{}});return`${e}/embed/${this.config.event}?${s.toString()}`}resolveSize(e,s){return e==null?s:typeof e=="number"?`${e}px`:e}}t.SeatingChart=n,Object.defineProperty(t,Symbol.toStringTag,{value:"Module"})});
1
+ (function(t,n){typeof exports=="object"&&typeof module<"u"?n(exports):typeof define=="function"&&define.amd?define(["exports"],n):(t=typeof globalThis<"u"?globalThis:t||self,n(t.SeatHold={}))})(this,function(t){"use strict";class n{constructor(e){this.iframe=null,this.messageHandler=null,this.iframeOrigin="",this.config=e}render(){const e=document.getElementById(this.config.divId);if(!e)throw new Error(`[SeatHold] Element #${this.config.divId} not found.`);const s=this.buildEmbedUrl();this.iframeOrigin=new URL(this.config.baseUrl).origin;const i=document.createElement("iframe");return i.src=s,i.style.width=this.resolveSize(this.config.width,"100%"),i.style.height=this.resolveSize(this.config.height,"600px"),i.style.border="none",i.allow="fullscreen",this.iframe=i,e.innerHTML="",e.appendChild(i),this.messageHandler=o=>{o.origin===this.iframeOrigin&&this.handleMessage(o.data)},window.addEventListener("message",this.messageHandler),this}destroy(){this.messageHandler&&(window.removeEventListener("message",this.messageHandler),this.messageHandler=null),this.iframe&&(this.iframe.remove(),this.iframe=null)}setSelectedSeats(e){this.send({type:"seathold:set_selected_seats",seatIds:e})}createHold(e){this.send({type:"seathold:create_hold",seatIds:e})}releaseHold(){this.send({type:"seathold:release_hold"})}updateSession(e,s){this.send({type:"seathold:update_session",sessionToken:e,expiresAt:s})}requestState(){this.send({type:"seathold:request_state"})}setPricing(e){this.send({type:"seathold:set_pricing",pricing:e})}send(e){var s;if(!((s=this.iframe)!=null&&s.contentWindow)){console.warn("[SeatHold] iframe not ready yet.");return}this.iframe.contentWindow.postMessage(e,this.iframeOrigin)}handleMessage(e){var s,i,o,r,h,d,a,c,l,g,f,m,p,u,y,b;switch(e.type){case"seathold:ready":this.config.pricing&&this.config.pricing.length>0&&this.setPricing(this.config.pricing),(i=(s=this.config).onReady)==null||i.call(s,e.eventId);break;case"seathold:selection_changed":(r=(o=this.config).onSelectionChanged)==null||r.call(o,e.seatIds,e.ticketTypes);break;case"seathold:object_clicked":(d=(h=this.config).onObjectClicked)==null||d.call(h,e.objectId,e.objectType);break;case"seathold:category_changed":(c=(a=this.config).onCategoryChanged)==null||c.call(a,e.categoryId);break;case"seathold:view_changed":(g=(l=this.config).onViewChanged)==null||g.call(l,e.zoom,e.position);break;case"seathold:hold_created":(m=(f=this.config).onHoldCreated)==null||m.call(f,e.holdId,e.holdToken,e.expiresAt,e.seatIds,e.ticketTypes);break;case"seathold:hold_released":(u=(p=this.config).onHoldReleased)==null||u.call(p);break;case"seathold:error":(b=(y=this.config).onError)==null||b.call(y,e.action,e.message);break}}buildEmbedUrl(){const e=this.config.baseUrl.replace(/\/$/,""),s=new URLSearchParams({workspace_key:this.config.workspaceKey,...this.config.sessionToken?{session_token:this.config.sessionToken}:{}});return`${e}/embed/${this.config.event}?${s.toString()}`}resolveSize(e,s){return e==null?s:typeof e=="number"?`${e}px`:e}}t.SeatingChart=n,Object.defineProperty(t,Symbol.toStringTag,{value:"Module"})});
package/dist/types.d.ts CHANGED
@@ -51,6 +51,7 @@ export type OutgoingMessage = {
51
51
  } | {
52
52
  type: 'seathold:hold_created';
53
53
  holdId: number | string;
54
+ holdToken: string | null;
54
55
  expiresAt: number | null;
55
56
  seatIds: Array<string | number>;
56
57
  ticketTypes: Record<string, string | null>;
@@ -93,7 +94,7 @@ export type SeatingChartConfig = {
93
94
  x: number;
94
95
  y: number;
95
96
  }) => void;
96
- onHoldCreated?: (holdId: number | string, expiresAt: number | null, seatIds: Array<string | number>, ticketTypes: Record<string, string | null>) => void;
97
+ onHoldCreated?: (holdId: number | string, holdToken: string | null, expiresAt: number | null, seatIds: Array<string | number>, ticketTypes: Record<string, string | null>) => void;
97
98
  onHoldReleased?: () => void;
98
99
  onError?: (action: string, message: string) => void;
99
100
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seathold/sdk",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "SeatHold embed SDK — renders an interactive seat map inside an iframe and communicates via postMessage",
5
5
  "main": "dist/seathold.umd.js",
6
6
  "module": "dist/seathold.esm.js",