@seatlayer/angular 0.48.2 → 0.50.0

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.
package/README.md CHANGED
@@ -5,9 +5,11 @@
5
5
  [![Angular](https://img.shields.io/badge/Angular-%E2%89%A517-DD0031.svg)](https://angular.dev/)
6
6
  [![License: MIT](https://img.shields.io/badge/license-MIT-111827.svg)](../../LICENSE)
7
7
 
8
- The official Angular component for SeatLayer reserved seating. Render an
9
- interactive chart, hold inventory in the browser, and complete the booking from
10
- your trusted server.
8
+ The official Angular wrapper for SeatLayer reserved seating provides one native
9
+ Angular component: `SeatLayerSeatingChartComponent`. The buyer modal and iframe
10
+ integration remain the framework-agnostic JavaScript `SeatPickerWidget` and
11
+ `attachPickerFrame` helpers exported by this package; they are not additional
12
+ Angular components.
11
13
 
12
14
  [Package on npm](https://www.npmjs.com/package/@seatlayer/angular) ·
13
15
  [SeatPicker docs](https://docs.seatlayer.io/buyer-sdk/seat-picker/) ·
@@ -62,7 +64,7 @@ export class CheckoutComponent {
62
64
  | `event` | `string` | **Required.** Changing it rebuilds the chart. |
63
65
  | `apiBase` | `string` | Defaults to the public API. |
64
66
  | `maxSelection` | `number` | Cap on how many seats a buyer may select. |
65
- | `publicKey` | `string` | Publishable key, when your integration uses one. |
67
+ | `publicKey` | `string` | Reserved compatibility input; stored by the chart but not transmitted to SeatLayer. |
66
68
  | `locale` | `string` | BCP-47 locale for built-in copy. |
67
69
  | `currency` | `string` | ISO currency for price formatting. |
68
70
  | `colorblindSafe` | `boolean` | Render colorblind-safe seat glyphs. |
@@ -112,8 +114,8 @@ re-enters the zone only to emit, which is the only part Angular needs to see.
112
114
 
113
115
  ## Also exported
114
116
 
115
- - `SeatPickerWidget` — the framework-agnostic one-call modal (`SeatPickerWidget.open()`).
116
- - `attachPickerFrame` — host-side iframe helper; grows on `seatlayer:height` and
117
+ - `SeatPickerWidget` — raw framework-agnostic JavaScript one-call modal (`SeatPickerWidget.open()`).
118
+ - `attachPickerFrame` — raw framework-agnostic JavaScript iframe helper; grows on `seatlayer:height` and
117
119
  pins on `seatlayer:fullscreen`.
118
120
 
119
121
  ## Related
package/dist/README.md CHANGED
@@ -5,9 +5,11 @@
5
5
  [![Angular](https://img.shields.io/badge/Angular-%E2%89%A517-DD0031.svg)](https://angular.dev/)
6
6
  [![License: MIT](https://img.shields.io/badge/license-MIT-111827.svg)](../../LICENSE)
7
7
 
8
- The official Angular component for SeatLayer reserved seating. Render an
9
- interactive chart, hold inventory in the browser, and complete the booking from
10
- your trusted server.
8
+ The official Angular wrapper for SeatLayer reserved seating provides one native
9
+ Angular component: `SeatLayerSeatingChartComponent`. The buyer modal and iframe
10
+ integration remain the framework-agnostic JavaScript `SeatPickerWidget` and
11
+ `attachPickerFrame` helpers exported by this package; they are not additional
12
+ Angular components.
11
13
 
12
14
  [Package on npm](https://www.npmjs.com/package/@seatlayer/angular) ·
13
15
  [SeatPicker docs](https://docs.seatlayer.io/buyer-sdk/seat-picker/) ·
@@ -62,7 +64,7 @@ export class CheckoutComponent {
62
64
  | `event` | `string` | **Required.** Changing it rebuilds the chart. |
63
65
  | `apiBase` | `string` | Defaults to the public API. |
64
66
  | `maxSelection` | `number` | Cap on how many seats a buyer may select. |
65
- | `publicKey` | `string` | Publishable key, when your integration uses one. |
67
+ | `publicKey` | `string` | Reserved compatibility input; stored by the chart but not transmitted to SeatLayer. |
66
68
  | `locale` | `string` | BCP-47 locale for built-in copy. |
67
69
  | `currency` | `string` | ISO currency for price formatting. |
68
70
  | `colorblindSafe` | `boolean` | Render colorblind-safe seat glyphs. |
@@ -112,8 +114,8 @@ re-enters the zone only to emit, which is the only part Angular needs to see.
112
114
 
113
115
  ## Also exported
114
116
 
115
- - `SeatPickerWidget` — the framework-agnostic one-call modal (`SeatPickerWidget.open()`).
116
- - `attachPickerFrame` — host-side iframe helper; grows on `seatlayer:height` and
117
+ - `SeatPickerWidget` — raw framework-agnostic JavaScript one-call modal (`SeatPickerWidget.open()`).
118
+ - `attachPickerFrame` — raw framework-agnostic JavaScript iframe helper; grows on `seatlayer:height` and
117
119
  pins on `seatlayer:fullscreen`.
118
120
 
119
121
  ## Related
@@ -1 +1 @@
1
- {"version":3,"file":"seatlayer-angular.mjs","sources":["../../src/seating-chart.component.ts","../../src/index.ts","../../src/seatlayer-angular.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n inject,\n} from '@angular/core';\nimport {\n SeatingChart as CoreSeatingChart,\n type SeatingChartOptions,\n type SelectedSeat,\n type HoldResult,\n type BestAvailableResult,\n type GAAreaAvailability,\n type SeatHoverDetails,\n type BuyerAccessToken,\n type BuyerAccessTokenProvider,\n type BuyerAccessExpiredEvent,\n type BuyerAccessUnavailableEvent,\n type SelectedObjectUnavailableEvent,\n} from '@seatlayer/js';\n\n/**\n * Angular wrapper around the framework-agnostic `@seatlayer/js` SDK.\n *\n * Standalone, so it is imported directly rather than through an NgModule.\n *\n * The canvas is created once and torn down on destroy. Only the inputs that\n * change the chart's identity — `event`, `apiBase`, `maxSelection`, `publicKey`,\n * `locale`, `currency`, `colorblindSafe` — trigger a rebuild, so an unrelated\n * change-detection pass never destroys the canvas mid-selection.\n *\n * @example\n * ```html\n * <seatlayer-seating-chart\n * #chart\n * event=\"summer-gala\"\n * (selectionChange)=\"onSelectionChange($event)\"\n * (hold)=\"onHold($event)\"\n * />\n * <button (click)=\"chart.hold()\">Continue</button>\n * ```\n */\n@Component({\n selector: 'seatlayer-seating-chart',\n standalone: true,\n template: '<div #container class=\"seatlayer-container\"></div>',\n styles: [':host { display: block; } .seatlayer-container { width: 100%; height: 100%; }'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SeatLayerSeatingChartComponent implements OnChanges {\n /** Event key to render. Changing it rebuilds the chart. */\n @Input({ required: true }) event!: string;\n\n /** API base URL. Defaults to the public API. */\n @Input() apiBase?: string;\n\n /** Cap on how many seats a buyer may select. */\n @Input() maxSelection?: number;\n\n /** Publishable key, when your integration uses one. */\n @Input() publicKey?: string;\n\n /** BCP-47 locale for built-in copy. */\n @Input() locale?: string;\n\n /** ISO currency for price formatting. */\n @Input() currency?: string;\n\n /** Render with colorblind-safe seat glyphs. */\n @Input() colorblindSafe?: boolean;\n\n /** Show the built-in seat tooltip. Set false to draw your own from `seatHover`. */\n @Input() seatTooltip?: boolean;\n\n /** Copy overrides, read once per rebuild. */\n @Input() messages?: SeatingChartOptions['messages'];\n\n /**\n * Sales Channels: mint a buyer access session on demand. Called with a\n * `reason`; returns `{ token, expiresAt }` from YOUR backend. The token is\n * held in memory only — never storage, never a URL, never a log.\n */\n @Input() buyerAccessTokenProvider?: BuyerAccessTokenProvider;\n\n /** One-shot session for hosts that own the lifecycle. Cannot be renewed. */\n @Input() buyerAccessToken?: string | BuyerAccessToken;\n\n /** The buyer's selection changed. */\n @Output() readonly selectionChange: EventEmitter<SelectedSeat[]> = new EventEmitter<SelectedSeat[]>();\n\n /** A hold succeeded. */\n @Output() readonly hold: EventEmitter<HoldResult> = new EventEmitter<HoldResult>();\n\n /** A previous hold was restored on mount. */\n @Output() readonly holdRestored: EventEmitter<HoldResult> = new EventEmitter<HoldResult>();\n\n /** The active hold lapsed. */\n @Output() readonly holdExpired: EventEmitter<void> = new EventEmitter<void>();\n\n /** A GA area was clicked. */\n @Output() readonly gaClick: EventEmitter<GAAreaAvailability> = new EventEmitter<GAAreaAvailability>();\n\n /** Something failed — a network error, a rejected hold. */\n @Output() readonly errored: EventEmitter<unknown> = new EventEmitter<unknown>();\n\n /** A floor deck was tapped in the 3D view. */\n @Output() readonly deckTap: EventEmitter<string> = new EventEmitter<string>();\n\n /** A transient hint worth showing the buyer, or `null` to clear it. */\n @Output() readonly hint: EventEmitter<string | null> = new EventEmitter<string | null>();\n\n /** The pointer moved onto a seat, or off one (`null`). */\n @Output() readonly seatHover: EventEmitter<SeatHoverDetails | null> = new EventEmitter<SeatHoverDetails | null>();\n\n /** The buyer access session lapsed; `refreshed` says whether it recovered. */\n @Output() readonly accessExpired: EventEmitter<BuyerAccessExpiredEvent> =\n new EventEmitter<BuyerAccessExpiredEvent>();\n\n /** Private inventory is unavailable and refreshing will not fix it. */\n @Output() readonly accessUnavailable: EventEmitter<BuyerAccessUnavailableEvent> =\n new EventEmitter<BuyerAccessUnavailableEvent>();\n\n /** Selected-but-unheld units stopped being selectable. */\n @Output() readonly selectedObjectUnavailable: EventEmitter<SelectedObjectUnavailableEvent> =\n new EventEmitter<SelectedObjectUnavailableEvent>();\n\n @ViewChild('container', { static: true })\n private readonly container!: ElementRef<HTMLDivElement>;\n\n private readonly zone = inject(NgZone);\n private chart: CoreSeatingChart | null = null;\n\n /** Inputs that require tearing the canvas down and rebuilding it. */\n private static readonly REBUILD_INPUTS = [\n 'event', 'apiBase', 'maxSelection', 'publicKey', 'locale', 'currency', 'colorblindSafe',\n ] as const;\n\n constructor() {\n inject(DestroyRef).onDestroy(() => this.destroy());\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const needsRebuild = SeatLayerSeatingChartComponent.REBUILD_INPUTS.some((name) => name in changes);\n if (needsRebuild) {\n this.build();\n }\n }\n\n // ---------- imperative API, for a template ref ----------\n\n /** Hold the current selection. Resolves the hold, or `null` on a 409 conflict. */\n holdSelection(options?: { ttlMs?: number }): Promise<HoldResult | null> {\n return this.chart?.hold(options) ?? Promise.resolve(null);\n }\n\n /** Restore an active hold by its opaque id. */\n resumeHold(holdId: string): Promise<HoldResult | null> {\n return this.chart?.resumeHold(holdId) ?? Promise.resolve(null);\n }\n\n /** Current active hold known to the chart. */\n getCurrentHold(): HoldResult | null {\n return this.chart?.getCurrentHold() ?? null;\n }\n\n /** GA areas with live remaining capacity. */\n getGAAreas(): GAAreaAvailability[] {\n return this.chart?.getGAAreas() ?? [];\n }\n\n /** Atomically hold a quantity from one GA area. */\n holdGA(\n areaId: string,\n qty: number,\n options?: { tierId?: string | null; ttlMs?: number },\n ): Promise<HoldResult | null> {\n return this.chart?.holdGA(areaId, qty, options) ?? Promise.resolve(null);\n }\n\n /** Ask the server for the `qty` best free seats and hold them atomically. */\n bestAvailable(qty: number, categoryKey?: string): Promise<BestAvailableResult | null> {\n return this.chart?.bestAvailable(qty, categoryKey) ?? Promise.resolve(null);\n }\n\n /** Release the current hold (if any). */\n release(): Promise<void> {\n return this.chart?.release() ?? Promise.resolve();\n }\n\n /** Release some held labels while keeping the remainder active. */\n releaseLabels(labels: string[]): Promise<boolean> {\n return this.chart?.releaseLabels(labels) ?? Promise.resolve(false);\n }\n\n /** The current selection, with prices resolved from the chart categories. */\n getSelection(): SelectedSeat[] {\n return this.chart?.getSelection() ?? [];\n }\n\n /** Choose a ticket tier for a selected seat; `null` reverts to the default. */\n setSeatTier(seatId: string, tierId: string | null): void {\n this.chart?.setSeatTier(seatId, tierId);\n }\n\n /** Floors of a multi-floor chart. Empty before the first render. */\n getFloors(): { id: string; name: string }[] {\n return this.chart?.getFloors() ?? [];\n }\n\n /** Switch the shown floor (2D). No-ops on single-floor charts. */\n setFloor(floorId: string): void {\n this.chart?.setFloor(floorId);\n }\n\n /** Toggle colorblind-safe rendering at runtime. */\n setColorblindSafe(on: boolean): void {\n this.chart?.setColorblindSafe(on);\n }\n\n /** Zoom in one step (same increment as the wheel/pinch gesture). */\n zoomIn(): void {\n this.chart?.zoomIn();\n }\n\n /** Zoom out one step. */\n zoomOut(): void {\n this.chart?.zoomOut();\n }\n\n /** Reset the camera so the whole chart fits the container. */\n zoomToFit(): void {\n this.chart?.zoomToFit();\n }\n\n /**\n * Re-acquire the buyer access session after your app re-authorizes the buyer\n * (Sales Channels). Resolves false when the chart is not access-scoped.\n */\n refreshAccess(): Promise<boolean> {\n return this.chart?.refreshAccess() ?? Promise.resolve(false);\n }\n\n // ---------- internals ----------\n\n private build(): void {\n const element = this.container?.nativeElement;\n if (!element) return;\n\n this.destroy();\n\n // The chart runs a rAF render loop and pointer handlers. Left inside the\n // Angular zone, every frame would schedule change detection for the whole\n // application — so it is built outside, and each callback re-enters the zone\n // only to emit, which is the only part Angular needs to see.\n this.zone.runOutsideAngular(() => {\n const emit = <T>(emitter: EventEmitter<T>, value: T) =>\n this.zone.run(() => emitter.emit(value));\n\n const instance = new CoreSeatingChart({\n container: element,\n event: this.event,\n apiBase: this.apiBase,\n maxSelection: this.maxSelection,\n publicKey: this.publicKey,\n locale: this.locale,\n currency: this.currency,\n colorblindSafe: this.colorblindSafe,\n seatTooltip: this.seatTooltip,\n messages: this.messages,\n onSelectionChange: (seats) => emit(this.selectionChange, seats),\n onHold: (result) => emit(this.hold, result),\n onHoldRestored: (result) => emit(this.holdRestored, result),\n onHoldExpired: () => this.zone.run(() => this.holdExpired.emit()),\n onGAClick: (area) => emit(this.gaClick, area),\n onError: (error) => emit(this.errored, error),\n onDeckTap: (floorId) => emit(this.deckTap, floorId),\n onHint: (message) => emit(this.hint, message),\n onSeatHover: (details) => emit(this.seatHover, details),\n buyerAccessTokenProvider: this.buyerAccessTokenProvider,\n buyerAccessToken: this.buyerAccessToken,\n onAccessExpired: (state) => emit(this.accessExpired, state),\n onAccessUnavailable: (state) => emit(this.accessUnavailable, state),\n onSelectedObjectUnavailable: (state) => emit(this.selectedObjectUnavailable, state),\n });\n\n this.chart = instance;\n void instance.render();\n });\n }\n\n private destroy(): void {\n this.chart?.destroy();\n this.chart = null;\n }\n}\n","/**\n * @seatlayer/angular — the Angular wrapper for the SeatLayer embed SDK.\n *\n * The component is standalone; import it directly rather than through an\n * NgModule.\n */\nexport { SeatLayerSeatingChartComponent } from './seating-chart.component';\n\nexport type {\n SelectedSeat,\n HoldResult,\n BestAvailableResult,\n GAAreaAvailability,\n HoldLineItem,\n SeatHoverDetails,\n} from '@seatlayer/js';\n\n// Sales Channels — buyer access sessions for private channel inventory.\nexport type {\n BuyerAccessToken,\n BuyerAccessTokenProvider,\n BuyerAccessRefreshReason,\n BuyerAccessUnavailableReason,\n BuyerAccessExpiredEvent,\n BuyerAccessUnavailableEvent,\n SelectedObjectUnavailableEvent,\n} from '@seatlayer/js';\n\n// The framework-agnostic widget class — for the one-call modal (SeatPickerWidget.open()).\nexport { SeatPicker as SeatPickerWidget } from '@seatlayer/js';\n\n// Host-side embed helper: grows the iframe on `seatlayer:height` and pins it on\n// `seatlayer:fullscreen`. Angular hosts depend on this package alone, so it has to\n// be reachable here rather than only from @seatlayer/js.\nexport { attachPickerFrame } from '@seatlayer/js';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["CoreSeatingChart"],"mappings":";;;;;AA6BA;;;;;;;;;;;;;;;;;;;;AAoBG;MAQU,8BAA8B,CAAA;;AAEd,IAAA,KAAK;;AAGvB,IAAA,OAAO;;AAGP,IAAA,YAAY;;AAGZ,IAAA,SAAS;;AAGT,IAAA,MAAM;;AAGN,IAAA,QAAQ;;AAGR,IAAA,cAAc;;AAGd,IAAA,WAAW;;AAGX,IAAA,QAAQ;AAEjB;;;;AAIG;AACM,IAAA,wBAAwB;;AAGxB,IAAA,gBAAgB;;AAGN,IAAA,eAAe,GAAiC,IAAI,YAAY,EAAkB;;AAGlF,IAAA,IAAI,GAA6B,IAAI,YAAY,EAAc;;AAG/D,IAAA,YAAY,GAA6B,IAAI,YAAY,EAAc;;AAGvE,IAAA,WAAW,GAAuB,IAAI,YAAY,EAAQ;;AAG1D,IAAA,OAAO,GAAqC,IAAI,YAAY,EAAsB;;AAGlF,IAAA,OAAO,GAA0B,IAAI,YAAY,EAAW;;AAG5D,IAAA,OAAO,GAAyB,IAAI,YAAY,EAAU;;AAG1D,IAAA,IAAI,GAAgC,IAAI,YAAY,EAAiB;;AAGrE,IAAA,SAAS,GAA0C,IAAI,YAAY,EAA2B;;AAG9F,IAAA,aAAa,GAC9B,IAAI,YAAY,EAA2B;;AAG1B,IAAA,iBAAiB,GAClC,IAAI,YAAY,EAA+B;;AAG9B,IAAA,yBAAyB,GAC1C,IAAI,YAAY,EAAkC;AAGnC,IAAA,SAAS;AAET,IAAA,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9B,KAAK,GAA4B,IAAI;;IAGrC,OAAgB,cAAc,GAAG;QACvC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB;KAC/E;AAEV,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACpD;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,MAAM,YAAY,GAAG,8BAA8B,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC;QAClG,IAAI,YAAY,EAAE;YAChB,IAAI,CAAC,KAAK,EAAE;QACd;IACF;;;AAKA,IAAA,aAAa,CAAC,OAA4B,EAAA;AACxC,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3D;;AAGA,IAAA,UAAU,CAAC,MAAc,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;IAChE;;IAGA,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,IAAI;IAC7C;;IAGA,UAAU,GAAA;QACR,OAAO,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;IACvC;;AAGA,IAAA,MAAM,CACJ,MAAc,EACd,GAAW,EACX,OAAoD,EAAA;AAEpD,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;IAC1E;;IAGA,aAAa,CAAC,GAAW,EAAE,WAAoB,EAAA;AAC7C,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;IAC7E;;IAGA,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE;IACnD;;AAGA,IAAA,aAAa,CAAC,MAAgB,EAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;IACpE;;IAGA,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE;IACzC;;IAGA,WAAW,CAAC,MAAc,EAAE,MAAqB,EAAA;QAC/C,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;IACzC;;IAGA,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IACtC;;AAGA,IAAA,QAAQ,CAAC,OAAe,EAAA;AACtB,QAAA,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;IAC/B;;AAGA,IAAA,iBAAiB,CAAC,EAAW,EAAA;AAC3B,QAAA,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,EAAE,CAAC;IACnC;;IAGA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;IACtB;;IAGA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE;IACvB;;IAGA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE;IACzB;AAEA;;;AAGG;IACH,aAAa,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;IAC9D;;IAIQ,KAAK,GAAA;AACX,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa;AAC7C,QAAA,IAAI,CAAC,OAAO;YAAE;QAEd,IAAI,CAAC,OAAO,EAAE;;;;;AAMd,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;YAC/B,MAAM,IAAI,GAAG,CAAI,OAAwB,EAAE,KAAQ,KACjD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAE1C,YAAA,MAAM,QAAQ,GAAG,IAAIA,YAAgB,CAAC;AACpC,gBAAA,SAAS,EAAE,OAAO;gBAClB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,gBAAA,iBAAiB,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC;AAC/D,gBAAA,MAAM,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;AAC3C,gBAAA,cAAc,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC;AAC3D,gBAAA,aAAa,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AACjE,gBAAA,SAAS,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC;AAC7C,gBAAA,OAAO,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;AAC7C,gBAAA,SAAS,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;AACnD,gBAAA,MAAM,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;AAC7C,gBAAA,WAAW,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;gBACvD,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;gBACvD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;AACvC,gBAAA,eAAe,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;AAC3D,gBAAA,mBAAmB,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC;AACnE,gBAAA,2BAA2B,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,KAAK,CAAC;AACpF,aAAA,CAAC;AAEF,YAAA,IAAI,CAAC,KAAK,GAAG,QAAQ;AACrB,YAAA,KAAK,QAAQ,CAAC,MAAM,EAAE;AACxB,QAAA,CAAC,CAAC;IACJ;IAEQ,OAAO,GAAA;AACb,QAAA,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE;AACrB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;IACnB;wGApPW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA9B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,u3BAJ/B,oDAAoD,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,oEAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAInD,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAP1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,cACvB,IAAI,EAAA,QAAA,EACN,oDAAoD,EAAA,eAAA,EAE7C,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,oEAAA,CAAA,EAAA;wDAIpB,KAAK,EAAA,CAAA;sBAA/B,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAGhB,OAAO,EAAA,CAAA;sBAAf;gBAGQ,YAAY,EAAA,CAAA;sBAApB;gBAGQ,SAAS,EAAA,CAAA;sBAAjB;gBAGQ,MAAM,EAAA,CAAA;sBAAd;gBAGQ,QAAQ,EAAA,CAAA;sBAAhB;gBAGQ,cAAc,EAAA,CAAA;sBAAtB;gBAGQ,WAAW,EAAA,CAAA;sBAAnB;gBAGQ,QAAQ,EAAA,CAAA;sBAAhB;gBAOQ,wBAAwB,EAAA,CAAA;sBAAhC;gBAGQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAGkB,eAAe,EAAA,CAAA;sBAAjC;gBAGkB,IAAI,EAAA,CAAA;sBAAtB;gBAGkB,YAAY,EAAA,CAAA;sBAA9B;gBAGkB,WAAW,EAAA,CAAA;sBAA7B;gBAGkB,OAAO,EAAA,CAAA;sBAAzB;gBAGkB,OAAO,EAAA,CAAA;sBAAzB;gBAGkB,OAAO,EAAA,CAAA;sBAAzB;gBAGkB,IAAI,EAAA,CAAA;sBAAtB;gBAGkB,SAAS,EAAA,CAAA;sBAA3B;gBAGkB,aAAa,EAAA,CAAA;sBAA/B;gBAIkB,iBAAiB,EAAA,CAAA;sBAAnC;gBAIkB,yBAAyB,EAAA,CAAA;sBAA3C;gBAIgB,SAAS,EAAA,CAAA;sBADzB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;ACtI1C;;;;;AAKG;;ACLH;;AAEG;;;;"}
1
+ {"version":3,"file":"seatlayer-angular.mjs","sources":["../../src/seating-chart.component.ts","../../src/index.ts","../../src/seatlayer-angular.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n inject,\n} from '@angular/core';\nimport {\n SeatingChart as CoreSeatingChart,\n type SeatingChartOptions,\n type SelectedSeat,\n type HoldResult,\n type BestAvailableResult,\n type GAAreaAvailability,\n type SeatHoverDetails,\n type BuyerAccessToken,\n type BuyerAccessTokenProvider,\n type BuyerAccessExpiredEvent,\n type BuyerAccessUnavailableEvent,\n type SelectedObjectUnavailableEvent,\n} from '@seatlayer/js';\n\n/**\n * Angular wrapper around the framework-agnostic `@seatlayer/js` SDK.\n *\n * Standalone, so it is imported directly rather than through an NgModule.\n *\n * The canvas is created once and torn down on destroy. Only the inputs that\n * change the chart's identity — `event`, `apiBase`, `maxSelection`, `publicKey`,\n * `locale`, `currency`, `colorblindSafe` — trigger a rebuild, so an unrelated\n * change-detection pass never destroys the canvas mid-selection.\n *\n * @example\n * ```html\n * <seatlayer-seating-chart\n * #chart\n * event=\"summer-gala\"\n * (selectionChange)=\"onSelectionChange($event)\"\n * (hold)=\"onHold($event)\"\n * />\n * <button (click)=\"chart.hold()\">Continue</button>\n * ```\n */\n@Component({\n selector: 'seatlayer-seating-chart',\n standalone: true,\n template: '<div #container class=\"seatlayer-container\"></div>',\n styles: [':host { display: block; } .seatlayer-container { width: 100%; height: 100%; }'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SeatLayerSeatingChartComponent implements OnChanges {\n /** Event key to render. Changing it rebuilds the chart. */\n @Input({ required: true }) event!: string;\n\n /** API base URL. Defaults to the public API. */\n @Input() apiBase?: string;\n\n /** Cap on how many seats a buyer may select. */\n @Input() maxSelection?: number;\n\n /** Publishable key, when your integration uses one. */\n @Input() publicKey?: string;\n\n /** BCP-47 locale for built-in copy. */\n @Input() locale?: string;\n\n /** ISO currency for price formatting. */\n @Input() currency?: string;\n\n /** Render with colorblind-safe seat glyphs. */\n @Input() colorblindSafe?: boolean;\n\n /** Show the built-in seat tooltip. Set false to draw your own from `seatHover`. */\n @Input() seatTooltip?: boolean;\n\n /** Copy overrides, read once per rebuild. */\n @Input() messages?: SeatingChartOptions['messages'];\n\n /**\n * Sales Channels: mint a buyer access session on demand. Called with a\n * `reason`; returns `{ token, expiresAt }` from YOUR backend. The token is\n * held in memory only — never storage, never a URL, never a log.\n */\n @Input() buyerAccessTokenProvider?: BuyerAccessTokenProvider;\n\n /** One-shot session for hosts that own the lifecycle. Cannot be renewed. */\n @Input() buyerAccessToken?: string | BuyerAccessToken;\n\n /** The buyer's selection changed. */\n @Output() readonly selectionChange: EventEmitter<SelectedSeat[]> = new EventEmitter<SelectedSeat[]>();\n\n /** A hold succeeded. */\n @Output() readonly hold: EventEmitter<HoldResult> = new EventEmitter<HoldResult>();\n\n /** A previous hold was restored on mount. */\n @Output() readonly holdRestored: EventEmitter<HoldResult> = new EventEmitter<HoldResult>();\n\n /** The active hold lapsed. */\n @Output() readonly holdExpired: EventEmitter<void> = new EventEmitter<void>();\n\n /** A GA area was clicked. */\n @Output() readonly gaClick: EventEmitter<GAAreaAvailability> = new EventEmitter<GAAreaAvailability>();\n\n /** Something failed — a network error, a rejected hold. */\n @Output() readonly errored: EventEmitter<unknown> = new EventEmitter<unknown>();\n\n /** A floor deck was tapped in the 3D view. */\n @Output() readonly deckTap: EventEmitter<string> = new EventEmitter<string>();\n\n /** A transient hint worth showing the buyer, or `null` to clear it. */\n @Output() readonly hint: EventEmitter<string | null> = new EventEmitter<string | null>();\n\n /** The pointer moved onto a seat, or off one (`null`). */\n @Output() readonly seatHover: EventEmitter<SeatHoverDetails | null> = new EventEmitter<SeatHoverDetails | null>();\n\n /** The buyer access session lapsed; `refreshed` says whether it recovered. */\n @Output() readonly accessExpired: EventEmitter<BuyerAccessExpiredEvent> =\n new EventEmitter<BuyerAccessExpiredEvent>();\n\n /** Private inventory is unavailable and refreshing will not fix it. */\n @Output() readonly accessUnavailable: EventEmitter<BuyerAccessUnavailableEvent> =\n new EventEmitter<BuyerAccessUnavailableEvent>();\n\n /** Selected-but-unheld units stopped being selectable. */\n @Output() readonly selectedObjectUnavailable: EventEmitter<SelectedObjectUnavailableEvent> =\n new EventEmitter<SelectedObjectUnavailableEvent>();\n\n @ViewChild('container', { static: true })\n private readonly container!: ElementRef<HTMLDivElement>;\n\n private readonly zone = inject(NgZone);\n private chart: CoreSeatingChart | null = null;\n\n /** Inputs that require tearing the canvas down and rebuilding it. */\n private static readonly REBUILD_INPUTS = [\n 'event', 'apiBase', 'maxSelection', 'publicKey', 'locale', 'currency', 'colorblindSafe',\n ] as const;\n\n constructor() {\n inject(DestroyRef).onDestroy(() => this.destroy());\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const needsRebuild = SeatLayerSeatingChartComponent.REBUILD_INPUTS.some((name) => name in changes);\n if (needsRebuild) {\n this.build();\n }\n }\n\n // ---------- imperative API, for a template ref ----------\n\n /** Hold the current selection. Resolves the hold, or `null` on a 409 conflict. */\n holdSelection(options?: { ttlMs?: number }): Promise<HoldResult | null> {\n return this.chart?.hold(options) ?? Promise.resolve(null);\n }\n\n /** Restore an active hold by its opaque id. */\n resumeHold(holdId: string): Promise<HoldResult | null> {\n return this.chart?.resumeHold(holdId) ?? Promise.resolve(null);\n }\n\n /** Current active hold known to the chart. */\n getCurrentHold(): HoldResult | null {\n return this.chart?.getCurrentHold() ?? null;\n }\n\n /** GA areas with live remaining capacity. */\n getGAAreas(): GAAreaAvailability[] {\n return this.chart?.getGAAreas() ?? [];\n }\n\n /** Atomically hold a quantity from one GA area. */\n holdGA(\n areaId: string,\n qty: number,\n options?: { tierId?: string | null; ttlMs?: number },\n ): Promise<HoldResult | null> {\n return this.chart?.holdGA(areaId, qty, options) ?? Promise.resolve(null);\n }\n\n /** Ask the server for the `qty` best free seats and hold them atomically. */\n bestAvailable(qty: number, categoryKey?: string): Promise<BestAvailableResult | null> {\n return this.chart?.bestAvailable(qty, categoryKey) ?? Promise.resolve(null);\n }\n\n /** Release the current hold (if any). */\n release(): Promise<void> {\n return this.chart?.release() ?? Promise.resolve();\n }\n\n /** Release some held labels while keeping the remainder active. */\n releaseLabels(labels: string[]): Promise<boolean> {\n return this.chart?.releaseLabels(labels) ?? Promise.resolve(false);\n }\n\n /** The current selection, with prices resolved from the chart categories. */\n getSelection(): SelectedSeat[] {\n return this.chart?.getSelection() ?? [];\n }\n\n /** Choose a ticket tier for a selected seat; `null` reverts to the default. */\n setSeatTier(seatId: string, tierId: string | null): void {\n this.chart?.setSeatTier(seatId, tierId);\n }\n\n /** Floors of a multi-floor chart. Empty before the first render. */\n getFloors(): { id: string; name: string }[] {\n return this.chart?.getFloors() ?? [];\n }\n\n /** Switch the shown floor (2D). No-ops on single-floor charts. */\n setFloor(floorId: string): void {\n this.chart?.setFloor(floorId);\n }\n\n /** Toggle colorblind-safe rendering at runtime. */\n setColorblindSafe(on: boolean): void {\n this.chart?.setColorblindSafe(on);\n }\n\n /** Zoom in one step (same increment as the wheel/pinch gesture). */\n zoomIn(): void {\n this.chart?.zoomIn();\n }\n\n /** Zoom out one step. */\n zoomOut(): void {\n this.chart?.zoomOut();\n }\n\n /** Reset the camera so the whole chart fits the container. */\n zoomToFit(): void {\n this.chart?.zoomToFit();\n }\n\n /**\n * Re-acquire the buyer access session after your app re-authorizes the buyer\n * (Sales Channels). Resolves false when the chart is not access-scoped.\n */\n refreshAccess(): Promise<boolean> {\n return this.chart?.refreshAccess() ?? Promise.resolve(false);\n }\n\n // ---------- internals ----------\n\n private build(): void {\n const element = this.container?.nativeElement;\n if (!element) return;\n\n this.destroy();\n\n // The chart runs a rAF render loop and pointer handlers. Left inside the\n // Angular zone, every frame would schedule change detection for the whole\n // application — so it is built outside, and each callback re-enters the zone\n // only to emit, which is the only part Angular needs to see.\n this.zone.runOutsideAngular(() => {\n const emit = <T>(emitter: EventEmitter<T>, value: T) =>\n this.zone.run(() => emitter.emit(value));\n\n const instance = new CoreSeatingChart({\n container: element,\n event: this.event,\n apiBase: this.apiBase,\n maxSelection: this.maxSelection,\n publicKey: this.publicKey,\n locale: this.locale,\n currency: this.currency,\n colorblindSafe: this.colorblindSafe,\n seatTooltip: this.seatTooltip,\n messages: this.messages,\n onSelectionChange: (seats) => emit(this.selectionChange, seats),\n onHold: (result) => emit(this.hold, result),\n onHoldRestored: (result) => emit(this.holdRestored, result),\n onHoldExpired: () => this.zone.run(() => this.holdExpired.emit()),\n onGAClick: (area) => emit(this.gaClick, area),\n onError: (error) => emit(this.errored, error),\n onDeckTap: (floorId) => emit(this.deckTap, floorId),\n onHint: (message) => emit(this.hint, message),\n onSeatHover: (details) => emit(this.seatHover, details),\n buyerAccessTokenProvider: this.buyerAccessTokenProvider,\n buyerAccessToken: this.buyerAccessToken,\n onAccessExpired: (state) => emit(this.accessExpired, state),\n onAccessUnavailable: (state) => emit(this.accessUnavailable, state),\n onSelectedObjectUnavailable: (state) => emit(this.selectedObjectUnavailable, state),\n });\n\n this.chart = instance;\n void instance.render();\n });\n }\n\n private destroy(): void {\n this.chart?.destroy();\n this.chart = null;\n }\n}\n","/**\n * @seatlayer/angular — the Angular wrapper for the SeatLayer embed SDK.\n *\n * The component is standalone; import it directly rather than through an\n * NgModule.\n */\nexport { SeatLayerSeatingChartComponent } from './seating-chart.component';\n\nexport type {\n SelectedSeat,\n HoldResult,\n BestAvailableResult,\n GAAreaAvailability,\n HoldLineItem,\n SeatHoverDetails,\n} from '@seatlayer/js';\n\n// Sales Channels — buyer access sessions for private channel inventory.\nexport type {\n BuyerAccessToken,\n BuyerAccessTokenProvider,\n BuyerAccessRefreshReason,\n BuyerAccessUnavailableReason,\n BuyerAccessExpiredEvent,\n BuyerAccessUnavailableEvent,\n SelectedObjectUnavailableEvent,\n} from '@seatlayer/js';\n\n// The framework-agnostic widget class — for the one-call modal (SeatPickerWidget.open()).\nexport { SeatPicker as SeatPickerWidget } from '@seatlayer/js';\n\n// Host-side embed helper: grows the iframe on `seatlayer:height` and pins it on\n// `seatlayer:fullscreen`. Angular hosts depend on this package alone, so it has to\n// be reachable here rather than only from @seatlayer/js.\nexport { attachPickerFrame } from '@seatlayer/js';\nexport type { AttachPickerFrameOptions } from '@seatlayer/js';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["CoreSeatingChart"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -9,3 +9,4 @@ export type { SelectedSeat, HoldResult, BestAvailableResult, GAAreaAvailability,
9
9
  export type { BuyerAccessToken, BuyerAccessTokenProvider, BuyerAccessRefreshReason, BuyerAccessUnavailableReason, BuyerAccessExpiredEvent, BuyerAccessUnavailableEvent, SelectedObjectUnavailableEvent, } from '@seatlayer/js';
10
10
  export { SeatPicker as SeatPickerWidget } from '@seatlayer/js';
11
11
  export { attachPickerFrame } from '@seatlayer/js';
12
+ export type { AttachPickerFrameOptions } from '@seatlayer/js';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@seatlayer/angular",
3
- "version": "0.48.2",
4
- "description": "Angular component for the SeatLayer embed SDK render an interactive seat picker and hold seats.",
3
+ "version": "0.50.0",
4
+ "description": "Angular SeatLayer SDK one native SeatingChart wrapper plus raw JS SeatPickerWidget and iframe helper.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://docs.seatlayer.io/buyer-sdk/seat-picker/",
7
7
  "repository": {
@@ -24,8 +24,8 @@
24
24
  ],
25
25
  "dependencies": {
26
26
  "tslib": "^2.8.1",
27
- "@seatlayer/core": "0.48.2",
28
- "@seatlayer/js": "0.48.2"
27
+ "@seatlayer/js": "0.50.0",
28
+ "@seatlayer/core": "0.50.0"
29
29
  },
30
30
  "peerDependencies": {
31
31
  "@angular/common": ">=17.0.0",