@seatlayer/angular 0.71.4 → 0.72.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 +21 -2
- package/dist/README.md +21 -2
- package/dist/fesm2022/seatlayer-angular.mjs +153 -2
- package/dist/fesm2022/seatlayer-angular.mjs.map +1 -1
- package/dist/index.d.ts +62 -3
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -15,8 +15,8 @@ also re-exports the plain JavaScript `SeatPickerWidget` class and the
|
|
|
15
15
|
`attachPickerFrame` helper, so an Angular host depends on one package.
|
|
16
16
|
|
|
17
17
|
[SeatLayer Angular SDK on npm](https://www.npmjs.com/package/@seatlayer/angular) ·
|
|
18
|
-
[Angular seat-map documentation](https://docs.seatlayer.io/buyer-sdk/
|
|
19
|
-
[SeatLayer
|
|
18
|
+
[Angular seat-map documentation](https://docs.seatlayer.io/buyer-sdk/angular/) ·
|
|
19
|
+
[SeatLayer SDK and API overview](https://seatlayer.io/developers/) ·
|
|
20
20
|
[Buyer seat-map demo](https://app.seatlayer.io/demo/play/grand-theatre) ·
|
|
21
21
|
[SeatLayer JavaScript seat map SDK](https://www.npmjs.com/package/@seatlayer/js) ·
|
|
22
22
|
[SeatLayer React seat map SDK](https://www.npmjs.com/package/@seatlayer/react) ·
|
|
@@ -27,6 +27,8 @@ also re-exports the plain JavaScript `SeatPickerWidget` class and the
|
|
|
27
27
|
|
|
28
28
|
- `SeatLayerSeatingChartComponent` — one standalone Angular component with the
|
|
29
29
|
`seatlayer-seating-chart` selector.
|
|
30
|
+
- `SeatLayerSeasonPickerComponent` — an unpublished fixed-inclusion Season
|
|
31
|
+
source candidate with the `seatlayer-season-picker` selector.
|
|
30
32
|
- `SeatPickerWidget` — the framework-agnostic one-call buyer modal.
|
|
31
33
|
- `attachPickerFrame` — the host-side iframe helper for embedded pickers.
|
|
32
34
|
- An Angular Package Format build (`fesm2022`) with TypeScript declarations at
|
|
@@ -79,6 +81,23 @@ export class CheckoutComponent {
|
|
|
79
81
|
}
|
|
80
82
|
```
|
|
81
83
|
|
|
84
|
+
### Fixed renewable Season source candidate
|
|
85
|
+
|
|
86
|
+
```html
|
|
87
|
+
<seatlayer-season-picker
|
|
88
|
+
#seasonPicker
|
|
89
|
+
season="sea_2027"
|
|
90
|
+
[buyerAccessToken]="session.token"
|
|
91
|
+
(continued)="continueOnYourServer($event.operationId)"
|
|
92
|
+
/>
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
The Season handoff is opaque and price-free. Its `pricingAuthority: "host"`
|
|
96
|
+
and `authoritativeAmountIncluded: false` flags mean trusted server code must
|
|
97
|
+
apply the package price, tax, and payment decision before booking the
|
|
98
|
+
identity-only allocation. This source is not a published framework support
|
|
99
|
+
claim.
|
|
100
|
+
|
|
82
101
|
## Inputs
|
|
83
102
|
|
|
84
103
|
| Input | Type | Notes |
|
package/dist/README.md
CHANGED
|
@@ -15,8 +15,8 @@ also re-exports the plain JavaScript `SeatPickerWidget` class and the
|
|
|
15
15
|
`attachPickerFrame` helper, so an Angular host depends on one package.
|
|
16
16
|
|
|
17
17
|
[SeatLayer Angular SDK on npm](https://www.npmjs.com/package/@seatlayer/angular) ·
|
|
18
|
-
[Angular seat-map documentation](https://docs.seatlayer.io/buyer-sdk/
|
|
19
|
-
[SeatLayer
|
|
18
|
+
[Angular seat-map documentation](https://docs.seatlayer.io/buyer-sdk/angular/) ·
|
|
19
|
+
[SeatLayer SDK and API overview](https://seatlayer.io/developers/) ·
|
|
20
20
|
[Buyer seat-map demo](https://app.seatlayer.io/demo/play/grand-theatre) ·
|
|
21
21
|
[SeatLayer JavaScript seat map SDK](https://www.npmjs.com/package/@seatlayer/js) ·
|
|
22
22
|
[SeatLayer React seat map SDK](https://www.npmjs.com/package/@seatlayer/react) ·
|
|
@@ -27,6 +27,8 @@ also re-exports the plain JavaScript `SeatPickerWidget` class and the
|
|
|
27
27
|
|
|
28
28
|
- `SeatLayerSeatingChartComponent` — one standalone Angular component with the
|
|
29
29
|
`seatlayer-seating-chart` selector.
|
|
30
|
+
- `SeatLayerSeasonPickerComponent` — an unpublished fixed-inclusion Season
|
|
31
|
+
source candidate with the `seatlayer-season-picker` selector.
|
|
30
32
|
- `SeatPickerWidget` — the framework-agnostic one-call buyer modal.
|
|
31
33
|
- `attachPickerFrame` — the host-side iframe helper for embedded pickers.
|
|
32
34
|
- An Angular Package Format build (`fesm2022`) with TypeScript declarations at
|
|
@@ -79,6 +81,23 @@ export class CheckoutComponent {
|
|
|
79
81
|
}
|
|
80
82
|
```
|
|
81
83
|
|
|
84
|
+
### Fixed renewable Season source candidate
|
|
85
|
+
|
|
86
|
+
```html
|
|
87
|
+
<seatlayer-season-picker
|
|
88
|
+
#seasonPicker
|
|
89
|
+
season="sea_2027"
|
|
90
|
+
[buyerAccessToken]="session.token"
|
|
91
|
+
(continued)="continueOnYourServer($event.operationId)"
|
|
92
|
+
/>
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
The Season handoff is opaque and price-free. Its `pricingAuthority: "host"`
|
|
96
|
+
and `authoritativeAmountIncluded: false` flags mean trusted server code must
|
|
97
|
+
apply the package price, tax, and payment decision before booking the
|
|
98
|
+
identity-only allocation. This source is not a published framework support
|
|
99
|
+
claim.
|
|
100
|
+
|
|
82
101
|
## Inputs
|
|
83
102
|
|
|
84
103
|
| Input | Type | Notes |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { EventEmitter, inject, NgZone, DestroyRef, ViewChild, Output, Input, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
-
import { SEATING_CHART_IDENTITY_PROPS, bindSeatingChartHandle, SeatingChart, buildSeatingChartOptions } from '@seatlayer/js';
|
|
3
|
+
import { SEATING_CHART_IDENTITY_PROPS, bindSeatingChartHandle, SeatingChart, buildSeatingChartOptions, SeasonPicker } from '@seatlayer/js';
|
|
4
4
|
export { SeatPicker as SeatPickerWidget, attachPickerFrame } from '@seatlayer/js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -359,6 +359,157 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.29", ngImpo
|
|
|
359
359
|
args: ['container', { static: true }]
|
|
360
360
|
}] } });
|
|
361
361
|
|
|
362
|
+
/** Standalone Angular adapter for the distinct fixed-inclusion Season buyer flow. */
|
|
363
|
+
class SeatLayerSeasonPickerComponent {
|
|
364
|
+
/** Season key to render. */
|
|
365
|
+
season;
|
|
366
|
+
/** Public API base override. */
|
|
367
|
+
apiBase;
|
|
368
|
+
/** Refreshable one-time browser bearer provider. */
|
|
369
|
+
buyerAccessTokenProvider;
|
|
370
|
+
/** One-time Season browser bearer. */
|
|
371
|
+
buyerAccessToken;
|
|
372
|
+
/** Operation restored after an uncertain create response. */
|
|
373
|
+
initialOperationId;
|
|
374
|
+
/** Maximum recovery polling time. */
|
|
375
|
+
recoveryTimeoutMs;
|
|
376
|
+
/** Test or host fetch implementation. */
|
|
377
|
+
fetch;
|
|
378
|
+
/** A same-seat hold reached a safe handoff. */
|
|
379
|
+
hold = new EventEmitter();
|
|
380
|
+
/** The active handoff changed or was released. */
|
|
381
|
+
holdChange = new EventEmitter();
|
|
382
|
+
/** The buyer continued with an opaque handoff. */
|
|
383
|
+
continued = new EventEmitter();
|
|
384
|
+
/** A returning holder recorded browser intent only. */
|
|
385
|
+
renewalIntent = new EventEmitter();
|
|
386
|
+
/** Buyer access expired. */
|
|
387
|
+
accessExpired = new EventEmitter();
|
|
388
|
+
/** Buyer access cannot be recovered. */
|
|
389
|
+
accessUnavailable = new EventEmitter();
|
|
390
|
+
/** Buyer-visible operation status changed. */
|
|
391
|
+
statusChange = new EventEmitter();
|
|
392
|
+
/** The Season buyer flow failed. */
|
|
393
|
+
errored = new EventEmitter();
|
|
394
|
+
container;
|
|
395
|
+
static REBUILD_INPUTS = new Set([
|
|
396
|
+
'season', 'apiBase', 'buyerAccessTokenProvider', 'buyerAccessToken',
|
|
397
|
+
'initialOperationId', 'recoveryTimeoutMs', 'fetch',
|
|
398
|
+
]);
|
|
399
|
+
zone = inject(NgZone);
|
|
400
|
+
picker = null;
|
|
401
|
+
constructor() {
|
|
402
|
+
inject(DestroyRef).onDestroy(() => this.destroy());
|
|
403
|
+
}
|
|
404
|
+
ngOnChanges(changes) {
|
|
405
|
+
if (Object.keys(changes).some((name) => SeatLayerSeasonPickerComponent.REBUILD_INPUTS.has(name))) {
|
|
406
|
+
this.build();
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
/** Holds the same labels across every included occurrence. */
|
|
410
|
+
holdSameSeat(labels, operationId) {
|
|
411
|
+
return this.current().holdSameSeat(labels, operationId);
|
|
412
|
+
}
|
|
413
|
+
/** Restores a caller-stable Season operation after uncertainty. */
|
|
414
|
+
restoreOperation(operationId) {
|
|
415
|
+
return this.current().restoreOperation(operationId);
|
|
416
|
+
}
|
|
417
|
+
/** Releases the active selection with a caller-stable action id. */
|
|
418
|
+
release(releaseActionId) {
|
|
419
|
+
return this.current().release(releaseActionId);
|
|
420
|
+
}
|
|
421
|
+
/** Records renewal intent; trusted server code still inspects and commits it. */
|
|
422
|
+
createRenewalIntent(offerId) {
|
|
423
|
+
return this.current().createRenewalIntent(offerId);
|
|
424
|
+
}
|
|
425
|
+
/** Current immutable Season descriptor. */
|
|
426
|
+
getDescriptor() {
|
|
427
|
+
return this.picker?.getDescriptor() ?? null;
|
|
428
|
+
}
|
|
429
|
+
/** Current same-seat aggregate availability. */
|
|
430
|
+
getAvailability() {
|
|
431
|
+
return this.picker?.getAvailability() ?? null;
|
|
432
|
+
}
|
|
433
|
+
/** Current opaque checkout handoff. */
|
|
434
|
+
getHandoff() {
|
|
435
|
+
return this.picker?.getHandoff() ?? null;
|
|
436
|
+
}
|
|
437
|
+
build() {
|
|
438
|
+
this.destroy();
|
|
439
|
+
this.zone.runOutsideAngular(() => {
|
|
440
|
+
const picker = new SeasonPicker({
|
|
441
|
+
container: this.container.nativeElement,
|
|
442
|
+
season: this.season,
|
|
443
|
+
apiBase: this.apiBase,
|
|
444
|
+
buyerAccessTokenProvider: this.buyerAccessTokenProvider,
|
|
445
|
+
buyerAccessToken: this.buyerAccessToken,
|
|
446
|
+
initialOperationId: this.initialOperationId,
|
|
447
|
+
recoveryTimeoutMs: this.recoveryTimeoutMs,
|
|
448
|
+
fetch: this.fetch,
|
|
449
|
+
onHold: (value) => this.zone.run(() => this.hold.emit(value)),
|
|
450
|
+
onHoldChange: (value) => this.zone.run(() => this.holdChange.emit(value)),
|
|
451
|
+
onContinue: (value) => this.zone.run(() => this.continued.emit(value)),
|
|
452
|
+
onRenewalIntent: (value) => this.zone.run(() => this.renewalIntent.emit(value)),
|
|
453
|
+
onAccessExpired: (value) => this.zone.run(() => this.accessExpired.emit(value)),
|
|
454
|
+
onAccessUnavailable: (value) => this.zone.run(() => this.accessUnavailable.emit(value)),
|
|
455
|
+
onStatusChange: (value) => this.zone.run(() => this.statusChange.emit(value)),
|
|
456
|
+
onError: (value) => this.zone.run(() => this.errored.emit(value)),
|
|
457
|
+
});
|
|
458
|
+
this.picker = picker;
|
|
459
|
+
void picker.render().catch(() => undefined);
|
|
460
|
+
});
|
|
461
|
+
}
|
|
462
|
+
current() {
|
|
463
|
+
if (!this.picker)
|
|
464
|
+
throw new Error('seatlayer: Angular SeasonPicker is not mounted');
|
|
465
|
+
return this.picker;
|
|
466
|
+
}
|
|
467
|
+
destroy() {
|
|
468
|
+
this.picker?.destroy();
|
|
469
|
+
this.picker = null;
|
|
470
|
+
}
|
|
471
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.29", ngImport: i0, type: SeatLayerSeasonPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
472
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.29", type: SeatLayerSeasonPickerComponent, isStandalone: true, selector: "seatlayer-season-picker", inputs: { season: "season", apiBase: "apiBase", buyerAccessTokenProvider: "buyerAccessTokenProvider", buyerAccessToken: "buyerAccessToken", initialOperationId: "initialOperationId", recoveryTimeoutMs: "recoveryTimeoutMs", fetch: "fetch" }, outputs: { hold: "hold", holdChange: "holdChange", continued: "continued", renewalIntent: "renewalIntent", accessExpired: "accessExpired", accessUnavailable: "accessUnavailable", statusChange: "statusChange", errored: "errored" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: '<div #container class="seatlayer-season-container"></div>', isInline: true, styles: [":host{display:block}.seatlayer-season-container{width:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
473
|
+
}
|
|
474
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.29", ngImport: i0, type: SeatLayerSeasonPickerComponent, decorators: [{
|
|
475
|
+
type: Component,
|
|
476
|
+
args: [{ selector: 'seatlayer-season-picker', standalone: true, template: '<div #container class="seatlayer-season-container"></div>', changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}.seatlayer-season-container{width:100%}\n"] }]
|
|
477
|
+
}], ctorParameters: () => [], propDecorators: { season: [{
|
|
478
|
+
type: Input,
|
|
479
|
+
args: [{ required: true }]
|
|
480
|
+
}], apiBase: [{
|
|
481
|
+
type: Input
|
|
482
|
+
}], buyerAccessTokenProvider: [{
|
|
483
|
+
type: Input
|
|
484
|
+
}], buyerAccessToken: [{
|
|
485
|
+
type: Input
|
|
486
|
+
}], initialOperationId: [{
|
|
487
|
+
type: Input
|
|
488
|
+
}], recoveryTimeoutMs: [{
|
|
489
|
+
type: Input
|
|
490
|
+
}], fetch: [{
|
|
491
|
+
type: Input
|
|
492
|
+
}], hold: [{
|
|
493
|
+
type: Output
|
|
494
|
+
}], holdChange: [{
|
|
495
|
+
type: Output
|
|
496
|
+
}], continued: [{
|
|
497
|
+
type: Output
|
|
498
|
+
}], renewalIntent: [{
|
|
499
|
+
type: Output
|
|
500
|
+
}], accessExpired: [{
|
|
501
|
+
type: Output
|
|
502
|
+
}], accessUnavailable: [{
|
|
503
|
+
type: Output
|
|
504
|
+
}], statusChange: [{
|
|
505
|
+
type: Output
|
|
506
|
+
}], errored: [{
|
|
507
|
+
type: Output
|
|
508
|
+
}], container: [{
|
|
509
|
+
type: ViewChild,
|
|
510
|
+
args: ['container', { static: true }]
|
|
511
|
+
}] } });
|
|
512
|
+
|
|
362
513
|
/**
|
|
363
514
|
* @seatlayer/angular — the Angular wrapper for the SeatLayer embed SDK.
|
|
364
515
|
*
|
|
@@ -370,5 +521,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.29", ngImpo
|
|
|
370
521
|
* Generated bundle index. Do not edit.
|
|
371
522
|
*/
|
|
372
523
|
|
|
373
|
-
export { SeatLayerSeatingChartComponent };
|
|
524
|
+
export { SeatLayerSeasonPickerComponent, SeatLayerSeatingChartComponent };
|
|
374
525
|
//# sourceMappingURL=seatlayer-angular.mjs.map
|
|
@@ -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 SEATING_CHART_IDENTITY_PROPS,\n bindSeatingChartHandle,\n buildSeatingChartOptions,\n type RendererViewMode,\n type SeatingChartHandle,\n type SeatingChartOptions,\n type SelectedSeat,\n type HoldResult,\n type BestAvailableResult,\n type GAAreaAvailability,\n type SeatHoverDetails,\n type PickerSelectionValidity,\n type PickerSelectionValidator,\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 (`SEATING_CHART_IDENTITY_PROPS`: `event`,\n * `apiBase`, `maxSelection`, `numberOfPlacesToSelect`, `publicKey`, `locale`, `currency`,\n * `colorblindSafe`, `initialView`, `errorDisplay`) trigger a rebuild, so an\n * unrelated 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 /** Object ids or public labels selected after availability loads. */\n @Input() selectedObjects?: string[];\n\n /** Object ids or public labels the buyer may select. */\n @Input() selectableObjects?: string[] | null;\n\n /** Exact ticket count required for a valid selection. */\n @Input() numberOfPlacesToSelect?: number;\n\n /** Local buyer selection guards. Changing them rebuilds the chart. */\n @Input() selectionValidators?: PickerSelectionValidator[];\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 /**\n * Initial canvas projection. Read once when the chart is built, so changing\n * it rebuilds.\n * @deprecated `'isometric'` and `'perspective'` are retired in favour of the\n * real 3D venue view; use `'flat'`.\n */\n @Input() initialView?: RendererViewMode;\n\n /**\n * What the BUYER sees when the chart cannot load: `'message'` (default) is a\n * styleable notice with a Try again button, `'none'` is silent for hosts that\n * render their own failure UI from `errored`.\n */\n @Input() errorDisplay?: 'message' | 'none';\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 /** Exact-count state changed. */\n @Output() readonly selectionValidityChange: EventEmitter<PickerSelectionValidity> =\n new EventEmitter<PickerSelectionValidity>();\n\n /** The exact count was reached. */\n @Output() readonly selectionValid: EventEmitter<SelectedSeat[]> = new EventEmitter<SelectedSeat[]>();\n\n /** The selection is not at the exact count. */\n @Output() readonly selectionInvalid: EventEmitter<PickerSelectionValidity> =\n new EventEmitter<PickerSelectionValidity>();\n\n /** The active selection cap was reached. */\n @Output() readonly selectionLimit: EventEmitter<number> = new EventEmitter<number>();\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 /**\n * Inputs that require tearing the canvas down and rebuilding it. The shared\n * list from `@seatlayer/js`, not a hand-copied one — this is exactly the place\n * Angular fell two inputs behind React.\n */\n private static readonly REBUILD_INPUTS = SEATING_CHART_IDENTITY_PROPS;\n\n /**\n * The canonical forwarding object. Every imperative method below is a\n * one-line delegate to it, so the component cannot forward a method the other\n * wrappers do not, or miss one they do.\n */\n private readonly handle: SeatingChartHandle = bindSeatingChartHandle(() => this.chart);\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.handle.hold(options);\n }\n\n /** Restore an active hold by its opaque id. */\n resumeHold(holdId: string): Promise<HoldResult | null> {\n return this.handle.resumeHold(holdId);\n }\n\n /** Current active hold known to the chart. */\n getCurrentHold(): HoldResult | null {\n return this.handle.getCurrentHold();\n }\n\n /** GA areas with live remaining capacity. */\n getGAAreas(): GAAreaAvailability[] {\n return this.handle.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.handle.holdGA(areaId, qty, options);\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.handle.bestAvailable(qty, categoryKey);\n }\n\n /** Release the current hold (if any). */\n release(): Promise<void> {\n return this.handle.release();\n }\n\n /** Release some held labels while keeping the remainder active. */\n releaseLabels(labels: string[]): Promise<boolean> {\n return this.handle.releaseLabels(labels);\n }\n\n /** The current selection, with prices resolved from the chart categories. */\n getSelection(): SelectedSeat[] {\n return this.handle.getSelection();\n }\n\n selectObjects(objects: string[]): SelectedSeat[] {\n return this.handle.selectObjects(objects);\n }\n\n deselectObjects(objects: string[]): void {\n this.handle.deselectObjects(objects);\n }\n\n clearSelection(): void {\n this.handle.clearSelection();\n }\n\n selectCategories(categoryKeys: string[]): SelectedSeat[] {\n return this.handle.selectCategories(categoryKeys);\n }\n\n deselectCategories(categoryKeys: string[]): void {\n this.handle.deselectCategories(categoryKeys);\n }\n\n setSelectableObjects(objects: string[] | null): void {\n this.handle.setSelectableObjects(objects);\n }\n\n setMaxSelection(maxSelection: number): void {\n this.handle.setMaxSelection(maxSelection);\n }\n\n getSelectionValidity(): PickerSelectionValidity | null {\n return this.handle.getSelectionValidity();\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.handle.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.handle.getFloors();\n }\n\n /** Switch the shown floor (2D). No-ops on single-floor charts. */\n setFloor(floorId: string): void {\n this.handle.setFloor(floorId);\n }\n\n /** Toggle colorblind-safe rendering at runtime. */\n setColorblindSafe(on: boolean): void {\n this.handle.setColorblindSafe(on);\n }\n\n /** Zoom in one step (same increment as the wheel/pinch gesture). */\n zoomIn(): void {\n this.handle.zoomIn();\n }\n\n /** Zoom out one step. */\n zoomOut(): void {\n this.handle.zoomOut();\n }\n\n /** Reset the camera so the whole chart fits the container. */\n zoomToFit(): void {\n this.handle.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.handle.refreshAccess();\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(buildSeatingChartOptions(\n element,\n {\n event: this.event,\n apiBase: this.apiBase,\n maxSelection: this.maxSelection,\n selectedObjects: this.selectedObjects,\n selectableObjects: this.selectableObjects,\n numberOfPlacesToSelect: this.numberOfPlacesToSelect,\n selectionValidators: this.selectionValidators,\n publicKey: this.publicKey,\n locale: this.locale,\n currency: this.currency,\n colorblindSafe: this.colorblindSafe,\n initialView: this.initialView,\n errorDisplay: this.errorDisplay,\n messages: this.messages,\n seatTooltip: this.seatTooltip,\n buyerAccessTokenProvider: this.buyerAccessTokenProvider,\n buyerAccessToken: this.buyerAccessToken,\n },\n {\n onSelectionChange: (seats) => emit(this.selectionChange, seats),\n onSelectionValidityChange: (state) => emit(this.selectionValidityChange, state),\n onSelectionValid: (seats) => emit(this.selectionValid, seats),\n onSelectionInvalid: (state) => emit(this.selectionInvalid, state),\n onSelectionLimit: (max) => emit(this.selectionLimit, max),\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 onAccessExpired: (state) => emit(this.accessExpired, state),\n onAccessUnavailable: (state) => emit(this.accessUnavailable, state),\n onSelectedObjectUnavailable: (state) => emit(this.selectedObjectUnavailable, state),\n },\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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"}
|
|
1
|
+
{"version":3,"file":"seatlayer-angular.mjs","sources":["../../src/seating-chart.component.ts","../../src/season-picker.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 SEATING_CHART_IDENTITY_PROPS,\n bindSeatingChartHandle,\n buildSeatingChartOptions,\n type RendererViewMode,\n type SeatingChartHandle,\n type SeatingChartOptions,\n type SelectedSeat,\n type HoldResult,\n type BestAvailableResult,\n type GAAreaAvailability,\n type SeatHoverDetails,\n type PickerSelectionValidity,\n type PickerSelectionValidator,\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 (`SEATING_CHART_IDENTITY_PROPS`: `event`,\n * `apiBase`, `maxSelection`, `numberOfPlacesToSelect`, `publicKey`, `locale`, `currency`,\n * `colorblindSafe`, `initialView`, `errorDisplay`) trigger a rebuild, so an\n * unrelated 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 /** Object ids or public labels selected after availability loads. */\n @Input() selectedObjects?: string[];\n\n /** Object ids or public labels the buyer may select. */\n @Input() selectableObjects?: string[] | null;\n\n /** Exact ticket count required for a valid selection. */\n @Input() numberOfPlacesToSelect?: number;\n\n /** Local buyer selection guards. Changing them rebuilds the chart. */\n @Input() selectionValidators?: PickerSelectionValidator[];\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 /**\n * Initial canvas projection. Read once when the chart is built, so changing\n * it rebuilds.\n * @deprecated `'isometric'` and `'perspective'` are retired in favour of the\n * real 3D venue view; use `'flat'`.\n */\n @Input() initialView?: RendererViewMode;\n\n /**\n * What the BUYER sees when the chart cannot load: `'message'` (default) is a\n * styleable notice with a Try again button, `'none'` is silent for hosts that\n * render their own failure UI from `errored`.\n */\n @Input() errorDisplay?: 'message' | 'none';\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 /** Exact-count state changed. */\n @Output() readonly selectionValidityChange: EventEmitter<PickerSelectionValidity> =\n new EventEmitter<PickerSelectionValidity>();\n\n /** The exact count was reached. */\n @Output() readonly selectionValid: EventEmitter<SelectedSeat[]> = new EventEmitter<SelectedSeat[]>();\n\n /** The selection is not at the exact count. */\n @Output() readonly selectionInvalid: EventEmitter<PickerSelectionValidity> =\n new EventEmitter<PickerSelectionValidity>();\n\n /** The active selection cap was reached. */\n @Output() readonly selectionLimit: EventEmitter<number> = new EventEmitter<number>();\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 /**\n * Inputs that require tearing the canvas down and rebuilding it. The shared\n * list from `@seatlayer/js`, not a hand-copied one — this is exactly the place\n * Angular fell two inputs behind React.\n */\n private static readonly REBUILD_INPUTS = SEATING_CHART_IDENTITY_PROPS;\n\n /**\n * The canonical forwarding object. Every imperative method below is a\n * one-line delegate to it, so the component cannot forward a method the other\n * wrappers do not, or miss one they do.\n */\n private readonly handle: SeatingChartHandle = bindSeatingChartHandle(() => this.chart);\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.handle.hold(options);\n }\n\n /** Restore an active hold by its opaque id. */\n resumeHold(holdId: string): Promise<HoldResult | null> {\n return this.handle.resumeHold(holdId);\n }\n\n /** Current active hold known to the chart. */\n getCurrentHold(): HoldResult | null {\n return this.handle.getCurrentHold();\n }\n\n /** GA areas with live remaining capacity. */\n getGAAreas(): GAAreaAvailability[] {\n return this.handle.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.handle.holdGA(areaId, qty, options);\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.handle.bestAvailable(qty, categoryKey);\n }\n\n /** Release the current hold (if any). */\n release(): Promise<void> {\n return this.handle.release();\n }\n\n /** Release some held labels while keeping the remainder active. */\n releaseLabels(labels: string[]): Promise<boolean> {\n return this.handle.releaseLabels(labels);\n }\n\n /** The current selection, with prices resolved from the chart categories. */\n getSelection(): SelectedSeat[] {\n return this.handle.getSelection();\n }\n\n selectObjects(objects: string[]): SelectedSeat[] {\n return this.handle.selectObjects(objects);\n }\n\n deselectObjects(objects: string[]): void {\n this.handle.deselectObjects(objects);\n }\n\n clearSelection(): void {\n this.handle.clearSelection();\n }\n\n selectCategories(categoryKeys: string[]): SelectedSeat[] {\n return this.handle.selectCategories(categoryKeys);\n }\n\n deselectCategories(categoryKeys: string[]): void {\n this.handle.deselectCategories(categoryKeys);\n }\n\n setSelectableObjects(objects: string[] | null): void {\n this.handle.setSelectableObjects(objects);\n }\n\n setMaxSelection(maxSelection: number): void {\n this.handle.setMaxSelection(maxSelection);\n }\n\n getSelectionValidity(): PickerSelectionValidity | null {\n return this.handle.getSelectionValidity();\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.handle.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.handle.getFloors();\n }\n\n /** Switch the shown floor (2D). No-ops on single-floor charts. */\n setFloor(floorId: string): void {\n this.handle.setFloor(floorId);\n }\n\n /** Toggle colorblind-safe rendering at runtime. */\n setColorblindSafe(on: boolean): void {\n this.handle.setColorblindSafe(on);\n }\n\n /** Zoom in one step (same increment as the wheel/pinch gesture). */\n zoomIn(): void {\n this.handle.zoomIn();\n }\n\n /** Zoom out one step. */\n zoomOut(): void {\n this.handle.zoomOut();\n }\n\n /** Reset the camera so the whole chart fits the container. */\n zoomToFit(): void {\n this.handle.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.handle.refreshAccess();\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(buildSeatingChartOptions(\n element,\n {\n event: this.event,\n apiBase: this.apiBase,\n maxSelection: this.maxSelection,\n selectedObjects: this.selectedObjects,\n selectableObjects: this.selectableObjects,\n numberOfPlacesToSelect: this.numberOfPlacesToSelect,\n selectionValidators: this.selectionValidators,\n publicKey: this.publicKey,\n locale: this.locale,\n currency: this.currency,\n colorblindSafe: this.colorblindSafe,\n initialView: this.initialView,\n errorDisplay: this.errorDisplay,\n messages: this.messages,\n seatTooltip: this.seatTooltip,\n buyerAccessTokenProvider: this.buyerAccessTokenProvider,\n buyerAccessToken: this.buyerAccessToken,\n },\n {\n onSelectionChange: (seats) => emit(this.selectionChange, seats),\n onSelectionValidityChange: (state) => emit(this.selectionValidityChange, state),\n onSelectionValid: (seats) => emit(this.selectionValid, seats),\n onSelectionInvalid: (state) => emit(this.selectionInvalid, state),\n onSelectionLimit: (max) => emit(this.selectionLimit, max),\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 onAccessExpired: (state) => emit(this.accessExpired, state),\n onAccessUnavailable: (state) => emit(this.accessUnavailable, state),\n onSelectedObjectUnavailable: (state) => emit(this.selectedObjectUnavailable, state),\n },\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","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 SeasonPicker as CoreSeasonPicker,\n type SeasonAvailability,\n type SeasonCheckoutHandoff,\n type SeasonDescriptor,\n type SeasonPickerOptions,\n type SeasonRenewalIntent,\n type SeasonStatusEvent,\n} from '@seatlayer/js';\n\n/** Standalone Angular adapter for the distinct fixed-inclusion Season buyer flow. */\n@Component({\n selector: 'seatlayer-season-picker',\n standalone: true,\n template: '<div #container class=\"seatlayer-season-container\"></div>',\n styles: [':host { display: block; } .seatlayer-season-container { width: 100%; }'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SeatLayerSeasonPickerComponent implements OnChanges {\n /** Season key to render. */\n @Input({ required: true }) season!: string;\n\n /** Public API base override. */\n @Input() apiBase?: string;\n\n /** Refreshable one-time browser bearer provider. */\n @Input() buyerAccessTokenProvider?: SeasonPickerOptions['buyerAccessTokenProvider'];\n\n /** One-time Season browser bearer. */\n @Input() buyerAccessToken?: SeasonPickerOptions['buyerAccessToken'];\n\n /** Operation restored after an uncertain create response. */\n @Input() initialOperationId?: string;\n\n /** Maximum recovery polling time. */\n @Input() recoveryTimeoutMs?: number;\n\n /** Test or host fetch implementation. */\n @Input() fetch?: typeof fetch;\n\n /** A same-seat hold reached a safe handoff. */\n @Output() readonly hold = new EventEmitter<SeasonCheckoutHandoff>();\n\n /** The active handoff changed or was released. */\n @Output() readonly holdChange = new EventEmitter<SeasonCheckoutHandoff | null>();\n\n /** The buyer continued with an opaque handoff. */\n @Output() readonly continued = new EventEmitter<SeasonCheckoutHandoff>();\n\n /** A returning holder recorded browser intent only. */\n @Output() readonly renewalIntent = new EventEmitter<SeasonRenewalIntent>();\n\n /** Buyer access expired. */\n @Output() readonly accessExpired = new EventEmitter<unknown>();\n\n /** Buyer access cannot be recovered. */\n @Output() readonly accessUnavailable = new EventEmitter<unknown>();\n\n /** Buyer-visible operation status changed. */\n @Output() readonly statusChange = new EventEmitter<SeasonStatusEvent>();\n\n /** The Season buyer flow failed. */\n @Output() readonly errored = new EventEmitter<unknown>();\n\n @ViewChild('container', { static: true })\n private readonly container!: ElementRef<HTMLDivElement>;\n\n private static readonly REBUILD_INPUTS = new Set([\n 'season', 'apiBase', 'buyerAccessTokenProvider', 'buyerAccessToken',\n 'initialOperationId', 'recoveryTimeoutMs', 'fetch',\n ]);\n private readonly zone = inject(NgZone);\n private picker: CoreSeasonPicker | null = null;\n\n constructor() {\n inject(DestroyRef).onDestroy(() => this.destroy());\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (Object.keys(changes).some((name) => SeatLayerSeasonPickerComponent.REBUILD_INPUTS.has(name))) {\n this.build();\n }\n }\n\n /** Holds the same labels across every included occurrence. */\n holdSameSeat(labels: readonly string[], operationId: string): Promise<SeasonCheckoutHandoff> {\n return this.current().holdSameSeat(labels, operationId);\n }\n\n /** Restores a caller-stable Season operation after uncertainty. */\n restoreOperation(operationId: string): Promise<SeasonCheckoutHandoff | null> {\n return this.current().restoreOperation(operationId);\n }\n\n /** Releases the active selection with a caller-stable action id. */\n release(releaseActionId: string): Promise<void> {\n return this.current().release(releaseActionId);\n }\n\n /** Records renewal intent; trusted server code still inspects and commits it. */\n createRenewalIntent(offerId: string): Promise<SeasonRenewalIntent> {\n return this.current().createRenewalIntent(offerId);\n }\n\n /** Current immutable Season descriptor. */\n getDescriptor(): SeasonDescriptor | null {\n return this.picker?.getDescriptor() ?? null;\n }\n\n /** Current same-seat aggregate availability. */\n getAvailability(): SeasonAvailability | null {\n return this.picker?.getAvailability() ?? null;\n }\n\n /** Current opaque checkout handoff. */\n getHandoff(): SeasonCheckoutHandoff | null {\n return this.picker?.getHandoff() ?? null;\n }\n\n private build(): void {\n this.destroy();\n this.zone.runOutsideAngular(() => {\n const picker = new CoreSeasonPicker({\n container: this.container.nativeElement,\n season: this.season,\n apiBase: this.apiBase,\n buyerAccessTokenProvider: this.buyerAccessTokenProvider,\n buyerAccessToken: this.buyerAccessToken,\n initialOperationId: this.initialOperationId,\n recoveryTimeoutMs: this.recoveryTimeoutMs,\n fetch: this.fetch,\n onHold: (value) => this.zone.run(() => this.hold.emit(value)),\n onHoldChange: (value) => this.zone.run(() => this.holdChange.emit(value)),\n onContinue: (value) => this.zone.run(() => this.continued.emit(value)),\n onRenewalIntent: (value) => this.zone.run(() => this.renewalIntent.emit(value)),\n onAccessExpired: (value) => this.zone.run(() => this.accessExpired.emit(value)),\n onAccessUnavailable: (value) => this.zone.run(() => this.accessUnavailable.emit(value)),\n onStatusChange: (value) => this.zone.run(() => this.statusChange.emit(value)),\n onError: (value) => this.zone.run(() => this.errored.emit(value)),\n });\n this.picker = picker;\n void picker.render().catch(() => undefined);\n });\n }\n\n private current(): CoreSeasonPicker {\n if (!this.picker) throw new Error('seatlayer: Angular SeasonPicker is not mounted');\n return this.picker;\n }\n\n private destroy(): void {\n this.picker?.destroy();\n this.picker = 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';\nexport { SeatLayerSeasonPickerComponent } from './season-picker.component';\n\nexport type {\n SelectedSeat,\n HoldResult,\n BestAvailableResult,\n GAAreaAvailability,\n HoldLineItem,\n SeatHoverDetails,\n SeasonAvailability,\n SeasonCheckoutHandoff,\n SeasonDescriptor,\n SeasonOperation,\n SeasonOperationState,\n SeasonPickerOptions,\n SeasonRenewalIntent,\n SeasonStatusEvent,\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","CoreSeasonPicker"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { OnChanges, EventEmitter, SimpleChanges } from '@angular/core';
|
|
3
|
-
import { PickerSelectionValidator, RendererViewMode, SeatingChartOptions, BuyerAccessTokenProvider, BuyerAccessToken, SelectedSeat, PickerSelectionValidity, HoldResult, GAAreaAvailability, SeatHoverDetails, BuyerAccessExpiredEvent, BuyerAccessUnavailableEvent, SelectedObjectUnavailableEvent, BestAvailableResult } from '@seatlayer/js';
|
|
4
|
-
export { AttachPickerFrameOptions, BestAvailableResult, BuyerAccessExpiredEvent, BuyerAccessRefreshReason, BuyerAccessToken, BuyerAccessTokenProvider, BuyerAccessUnavailableEvent, BuyerAccessUnavailableReason, GAAreaAvailability, HoldLineItem, HoldResult, SeatHoverDetails, SeatPicker as SeatPickerWidget, SelectedObjectUnavailableEvent, SelectedSeat, attachPickerFrame } from '@seatlayer/js';
|
|
3
|
+
import { PickerSelectionValidator, RendererViewMode, SeatingChartOptions, BuyerAccessTokenProvider, BuyerAccessToken, SelectedSeat, PickerSelectionValidity, HoldResult, GAAreaAvailability, SeatHoverDetails, BuyerAccessExpiredEvent, BuyerAccessUnavailableEvent, SelectedObjectUnavailableEvent, BestAvailableResult, SeasonPickerOptions, SeasonCheckoutHandoff, SeasonRenewalIntent, SeasonStatusEvent, SeasonDescriptor, SeasonAvailability } from '@seatlayer/js';
|
|
4
|
+
export { AttachPickerFrameOptions, BestAvailableResult, BuyerAccessExpiredEvent, BuyerAccessRefreshReason, BuyerAccessToken, BuyerAccessTokenProvider, BuyerAccessUnavailableEvent, BuyerAccessUnavailableReason, GAAreaAvailability, HoldLineItem, HoldResult, SeasonAvailability, SeasonCheckoutHandoff, SeasonDescriptor, SeasonOperation, SeasonOperationState, SeasonPickerOptions, SeasonRenewalIntent, SeasonStatusEvent, SeatHoverDetails, SeatPicker as SeatPickerWidget, SelectedObjectUnavailableEvent, SelectedSeat, attachPickerFrame } from '@seatlayer/js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Angular wrapper around the framework-agnostic `@seatlayer/js` SDK.
|
|
@@ -181,4 +181,63 @@ declare class SeatLayerSeatingChartComponent implements OnChanges {
|
|
|
181
181
|
static ɵcmp: i0.ɵɵComponentDeclaration<SeatLayerSeatingChartComponent, "seatlayer-seating-chart", never, { "event": { "alias": "event"; "required": true; }; "apiBase": { "alias": "apiBase"; "required": false; }; "maxSelection": { "alias": "maxSelection"; "required": false; }; "selectedObjects": { "alias": "selectedObjects"; "required": false; }; "selectableObjects": { "alias": "selectableObjects"; "required": false; }; "numberOfPlacesToSelect": { "alias": "numberOfPlacesToSelect"; "required": false; }; "selectionValidators": { "alias": "selectionValidators"; "required": false; }; "publicKey": { "alias": "publicKey"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "currency": { "alias": "currency"; "required": false; }; "colorblindSafe": { "alias": "colorblindSafe"; "required": false; }; "initialView": { "alias": "initialView"; "required": false; }; "errorDisplay": { "alias": "errorDisplay"; "required": false; }; "seatTooltip": { "alias": "seatTooltip"; "required": false; }; "messages": { "alias": "messages"; "required": false; }; "buyerAccessTokenProvider": { "alias": "buyerAccessTokenProvider"; "required": false; }; "buyerAccessToken": { "alias": "buyerAccessToken"; "required": false; }; }, { "selectionChange": "selectionChange"; "selectionValidityChange": "selectionValidityChange"; "selectionValid": "selectionValid"; "selectionInvalid": "selectionInvalid"; "selectionLimit": "selectionLimit"; "hold": "hold"; "holdRestored": "holdRestored"; "holdExpired": "holdExpired"; "gaClick": "gaClick"; "errored": "errored"; "deckTap": "deckTap"; "hint": "hint"; "seatHover": "seatHover"; "accessExpired": "accessExpired"; "accessUnavailable": "accessUnavailable"; "selectedObjectUnavailable": "selectedObjectUnavailable"; }, never, never, true, never>;
|
|
182
182
|
}
|
|
183
183
|
|
|
184
|
-
|
|
184
|
+
/** Standalone Angular adapter for the distinct fixed-inclusion Season buyer flow. */
|
|
185
|
+
declare class SeatLayerSeasonPickerComponent implements OnChanges {
|
|
186
|
+
/** Season key to render. */
|
|
187
|
+
season: string;
|
|
188
|
+
/** Public API base override. */
|
|
189
|
+
apiBase?: string;
|
|
190
|
+
/** Refreshable one-time browser bearer provider. */
|
|
191
|
+
buyerAccessTokenProvider?: SeasonPickerOptions['buyerAccessTokenProvider'];
|
|
192
|
+
/** One-time Season browser bearer. */
|
|
193
|
+
buyerAccessToken?: SeasonPickerOptions['buyerAccessToken'];
|
|
194
|
+
/** Operation restored after an uncertain create response. */
|
|
195
|
+
initialOperationId?: string;
|
|
196
|
+
/** Maximum recovery polling time. */
|
|
197
|
+
recoveryTimeoutMs?: number;
|
|
198
|
+
/** Test or host fetch implementation. */
|
|
199
|
+
fetch?: typeof fetch;
|
|
200
|
+
/** A same-seat hold reached a safe handoff. */
|
|
201
|
+
readonly hold: EventEmitter<SeasonCheckoutHandoff>;
|
|
202
|
+
/** The active handoff changed or was released. */
|
|
203
|
+
readonly holdChange: EventEmitter<SeasonCheckoutHandoff>;
|
|
204
|
+
/** The buyer continued with an opaque handoff. */
|
|
205
|
+
readonly continued: EventEmitter<SeasonCheckoutHandoff>;
|
|
206
|
+
/** A returning holder recorded browser intent only. */
|
|
207
|
+
readonly renewalIntent: EventEmitter<SeasonRenewalIntent>;
|
|
208
|
+
/** Buyer access expired. */
|
|
209
|
+
readonly accessExpired: EventEmitter<unknown>;
|
|
210
|
+
/** Buyer access cannot be recovered. */
|
|
211
|
+
readonly accessUnavailable: EventEmitter<unknown>;
|
|
212
|
+
/** Buyer-visible operation status changed. */
|
|
213
|
+
readonly statusChange: EventEmitter<SeasonStatusEvent>;
|
|
214
|
+
/** The Season buyer flow failed. */
|
|
215
|
+
readonly errored: EventEmitter<unknown>;
|
|
216
|
+
private readonly container;
|
|
217
|
+
private static readonly REBUILD_INPUTS;
|
|
218
|
+
private readonly zone;
|
|
219
|
+
private picker;
|
|
220
|
+
constructor();
|
|
221
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
222
|
+
/** Holds the same labels across every included occurrence. */
|
|
223
|
+
holdSameSeat(labels: readonly string[], operationId: string): Promise<SeasonCheckoutHandoff>;
|
|
224
|
+
/** Restores a caller-stable Season operation after uncertainty. */
|
|
225
|
+
restoreOperation(operationId: string): Promise<SeasonCheckoutHandoff | null>;
|
|
226
|
+
/** Releases the active selection with a caller-stable action id. */
|
|
227
|
+
release(releaseActionId: string): Promise<void>;
|
|
228
|
+
/** Records renewal intent; trusted server code still inspects and commits it. */
|
|
229
|
+
createRenewalIntent(offerId: string): Promise<SeasonRenewalIntent>;
|
|
230
|
+
/** Current immutable Season descriptor. */
|
|
231
|
+
getDescriptor(): SeasonDescriptor | null;
|
|
232
|
+
/** Current same-seat aggregate availability. */
|
|
233
|
+
getAvailability(): SeasonAvailability | null;
|
|
234
|
+
/** Current opaque checkout handoff. */
|
|
235
|
+
getHandoff(): SeasonCheckoutHandoff | null;
|
|
236
|
+
private build;
|
|
237
|
+
private current;
|
|
238
|
+
private destroy;
|
|
239
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SeatLayerSeasonPickerComponent, never>;
|
|
240
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SeatLayerSeasonPickerComponent, "seatlayer-season-picker", never, { "season": { "alias": "season"; "required": true; }; "apiBase": { "alias": "apiBase"; "required": false; }; "buyerAccessTokenProvider": { "alias": "buyerAccessTokenProvider"; "required": false; }; "buyerAccessToken": { "alias": "buyerAccessToken"; "required": false; }; "initialOperationId": { "alias": "initialOperationId"; "required": false; }; "recoveryTimeoutMs": { "alias": "recoveryTimeoutMs"; "required": false; }; "fetch": { "alias": "fetch"; "required": false; }; }, { "hold": "hold"; "holdChange": "holdChange"; "continued": "continued"; "renewalIntent": "renewalIntent"; "accessExpired": "accessExpired"; "accessUnavailable": "accessUnavailable"; "statusChange": "statusChange"; "errored": "errored"; }, never, never, true, never>;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
export { SeatLayerSeasonPickerComponent, SeatLayerSeatingChartComponent };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seatlayer/angular",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.72.0",
|
|
4
4
|
"description": "SeatLayer's official Angular seating chart and seat map SDK — live availability, seat selection, temporary holds, and a typed TypeScript API for ticketing apps.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": {
|
|
@@ -36,8 +36,8 @@
|
|
|
36
36
|
"typescript"
|
|
37
37
|
],
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@seatlayer/core": "0.
|
|
40
|
-
"@seatlayer/js": "0.
|
|
39
|
+
"@seatlayer/core": "0.72.0",
|
|
40
|
+
"@seatlayer/js": "0.72.0",
|
|
41
41
|
"tslib": "^2.8.1"
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|