@seatlayer/js 0.9.0 → 0.10.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/dist/index.d.cts CHANGED
@@ -394,6 +394,8 @@ declare class SeatPicker {
394
394
  private rendered;
395
395
  private destroyed;
396
396
  private els;
397
+ /** Feature 6 anchor regions — positioned flex containers over the map. */
398
+ private regions;
397
399
  private ro;
398
400
  private holdTimer;
399
401
  private toastTimer;
@@ -422,6 +424,22 @@ declare class SeatPicker {
422
424
  private viewEl;
423
425
  private viewCleanup;
424
426
  private allSeatsCache;
427
+ private miniEl;
428
+ private miniCanvas;
429
+ private miniBase;
430
+ private miniTf;
431
+ private priceBandKeys;
432
+ private priceFilterEl;
433
+ /** Last surfaced section summary (re-rendered when the price band changes). */
434
+ private lastSection;
435
+ /** Section card collapsed to its slim pill (seat-picking has begun). */
436
+ private secCardCollapsed;
437
+ /** When the card was (re)shown — the focus glide's own view change must not collapse it. */
438
+ private secCardShownAt;
439
+ /** Previous tray ticket count — first 0→n transition auto-expands the mobile sheet. */
440
+ private lastTrayCount;
441
+ private a11yChipsEl;
442
+ private cbEl;
425
443
  private modalScrim;
426
444
  private prevFocus;
427
445
  private escHandler;
@@ -437,10 +455,54 @@ declare class SeatPicker {
437
455
  static open(options: Omit<SeatPickerOptions, 'container'>): Promise<SeatPicker>;
438
456
  constructor(options: SeatPickerOptions);
439
457
  render(): Promise<this>;
458
+ /**
459
+ * Move layout-dependent chrome between its wide dock (map regions / zoom
460
+ * column) and its narrow dock (the sheet's consolidated Filters row), and
461
+ * re-render the section card in the form the layout wants (docked card/pill
462
+ * on wide, sheet strip on narrow). Runs on every layout flip + once post-render.
463
+ */
464
+ private dockLayoutChrome;
440
465
  /** The "Need more time?" prompt shown in the hold's final EXTEND_PROMPT_MS. */
441
466
  private buildExtendPrompt;
442
467
  /** Success overlay + onBooked fire when the held seats settle to booked. */
443
468
  private buildBookedOverlay;
469
+ /**
470
+ * Create the positioned flex containers that own every persistent map overlay.
471
+ * Appended once after controller.render(); each chrome piece is then appended
472
+ * INTO its region and flows within it, so nothing free-floats over anything
473
+ * else. Regions carve the map into non-overlapping zones (top strip split into
474
+ * left/center/right, left rail, and the three used corners).
475
+ */
476
+ private buildRegions;
477
+ /** Read a resolved --sl-* token value (canvas needs a real color, not var()). */
478
+ private cssVar;
479
+ /** Section-bearing objects on the active floor (single-floor → doc.objects). */
480
+ private activeFloorObjects;
481
+ /**
482
+ * Build the overview minimap: a static venue thumbnail (section outlines, or
483
+ * seat dots when the chart has no sections) with the live viewport rectangle
484
+ * drawn on top. The rect tracks pan/zoom via the constructor's onViewChange.
485
+ */
486
+ private buildMinimap;
487
+ /** Repaint the static overview + rect (floor switch, live open/close). */
488
+ private refreshMinimap;
489
+ /** Paint the venue overview into the offscreen base canvas. */
490
+ private drawMinimapStatic;
491
+ /** Blit the base overview, then stroke the current viewport rectangle on top. */
492
+ private drawMinimapRect;
493
+ /** Minimap click → focus the section under the point (or overview on a miss). */
494
+ private minimapJump;
495
+ /** Effective price of a category (first tier when tiered, else base price). */
496
+ private catPrice;
497
+ /** Derive price bands: one chip per distinct price (≤5), else quantile ranges. */
498
+ private priceBands;
499
+ /**
500
+ * Build the price-band chip row in the side panel, directly under the "Prices"
501
+ * header and above the legend it dims. Living in the panel (not a map overlay)
502
+ * keeps it clear of the top-center rung pills and top-left a11y chips, and it
503
+ * rides the bottom sheet on narrow layouts. Skipped when there's <2 bands.
504
+ */
505
+ private buildPriceFilter;
444
506
  /** Build the rung pills (charts with sections) and floor switcher (>1 floor). */
445
507
  private buildArenaChrome;
446
508
  /** Reflect the engine's current LOD rung onto the pill group. */
@@ -449,6 +511,22 @@ declare class SeatPicker {
449
511
  private syncFloors;
450
512
  /** Show (or clear, on null) the tapped-section summary card. */
451
513
  private showSectionCard;
514
+ /**
515
+ * Render the section card in the form the layout + state want: expanded card
516
+ * or slim pill in the top-center anchor region (wide), or a compact strip in
517
+ * the sheet head (narrow). Never floats over the seats at the tap point.
518
+ */
519
+ private renderSectionCard;
520
+ /** Collapse the expanded card to its slim pill (seat-picking started). */
521
+ private collapseSectionCard;
522
+ /**
523
+ * onViewChange hook for the card. The focus glide's own settle (within the
524
+ * grace window) enforces the ~25% coverage rule with the FINAL viewport; any
525
+ * later pan/zoom means seat-picking has begun → collapse to the pill.
526
+ */
527
+ private sectionCardOnView;
528
+ /** Fraction of the focused section's on-screen bbox covered by the card. */
529
+ private sectionCardCoverage;
452
530
  /** aria-live readout when keyboard focus lands on a seat. */
453
531
  private announceSeat;
454
532
  private showConfirm;
package/dist/index.d.ts CHANGED
@@ -394,6 +394,8 @@ declare class SeatPicker {
394
394
  private rendered;
395
395
  private destroyed;
396
396
  private els;
397
+ /** Feature 6 anchor regions — positioned flex containers over the map. */
398
+ private regions;
397
399
  private ro;
398
400
  private holdTimer;
399
401
  private toastTimer;
@@ -422,6 +424,22 @@ declare class SeatPicker {
422
424
  private viewEl;
423
425
  private viewCleanup;
424
426
  private allSeatsCache;
427
+ private miniEl;
428
+ private miniCanvas;
429
+ private miniBase;
430
+ private miniTf;
431
+ private priceBandKeys;
432
+ private priceFilterEl;
433
+ /** Last surfaced section summary (re-rendered when the price band changes). */
434
+ private lastSection;
435
+ /** Section card collapsed to its slim pill (seat-picking has begun). */
436
+ private secCardCollapsed;
437
+ /** When the card was (re)shown — the focus glide's own view change must not collapse it. */
438
+ private secCardShownAt;
439
+ /** Previous tray ticket count — first 0→n transition auto-expands the mobile sheet. */
440
+ private lastTrayCount;
441
+ private a11yChipsEl;
442
+ private cbEl;
425
443
  private modalScrim;
426
444
  private prevFocus;
427
445
  private escHandler;
@@ -437,10 +455,54 @@ declare class SeatPicker {
437
455
  static open(options: Omit<SeatPickerOptions, 'container'>): Promise<SeatPicker>;
438
456
  constructor(options: SeatPickerOptions);
439
457
  render(): Promise<this>;
458
+ /**
459
+ * Move layout-dependent chrome between its wide dock (map regions / zoom
460
+ * column) and its narrow dock (the sheet's consolidated Filters row), and
461
+ * re-render the section card in the form the layout wants (docked card/pill
462
+ * on wide, sheet strip on narrow). Runs on every layout flip + once post-render.
463
+ */
464
+ private dockLayoutChrome;
440
465
  /** The "Need more time?" prompt shown in the hold's final EXTEND_PROMPT_MS. */
441
466
  private buildExtendPrompt;
442
467
  /** Success overlay + onBooked fire when the held seats settle to booked. */
443
468
  private buildBookedOverlay;
469
+ /**
470
+ * Create the positioned flex containers that own every persistent map overlay.
471
+ * Appended once after controller.render(); each chrome piece is then appended
472
+ * INTO its region and flows within it, so nothing free-floats over anything
473
+ * else. Regions carve the map into non-overlapping zones (top strip split into
474
+ * left/center/right, left rail, and the three used corners).
475
+ */
476
+ private buildRegions;
477
+ /** Read a resolved --sl-* token value (canvas needs a real color, not var()). */
478
+ private cssVar;
479
+ /** Section-bearing objects on the active floor (single-floor → doc.objects). */
480
+ private activeFloorObjects;
481
+ /**
482
+ * Build the overview minimap: a static venue thumbnail (section outlines, or
483
+ * seat dots when the chart has no sections) with the live viewport rectangle
484
+ * drawn on top. The rect tracks pan/zoom via the constructor's onViewChange.
485
+ */
486
+ private buildMinimap;
487
+ /** Repaint the static overview + rect (floor switch, live open/close). */
488
+ private refreshMinimap;
489
+ /** Paint the venue overview into the offscreen base canvas. */
490
+ private drawMinimapStatic;
491
+ /** Blit the base overview, then stroke the current viewport rectangle on top. */
492
+ private drawMinimapRect;
493
+ /** Minimap click → focus the section under the point (or overview on a miss). */
494
+ private minimapJump;
495
+ /** Effective price of a category (first tier when tiered, else base price). */
496
+ private catPrice;
497
+ /** Derive price bands: one chip per distinct price (≤5), else quantile ranges. */
498
+ private priceBands;
499
+ /**
500
+ * Build the price-band chip row in the side panel, directly under the "Prices"
501
+ * header and above the legend it dims. Living in the panel (not a map overlay)
502
+ * keeps it clear of the top-center rung pills and top-left a11y chips, and it
503
+ * rides the bottom sheet on narrow layouts. Skipped when there's <2 bands.
504
+ */
505
+ private buildPriceFilter;
444
506
  /** Build the rung pills (charts with sections) and floor switcher (>1 floor). */
445
507
  private buildArenaChrome;
446
508
  /** Reflect the engine's current LOD rung onto the pill group. */
@@ -449,6 +511,22 @@ declare class SeatPicker {
449
511
  private syncFloors;
450
512
  /** Show (or clear, on null) the tapped-section summary card. */
451
513
  private showSectionCard;
514
+ /**
515
+ * Render the section card in the form the layout + state want: expanded card
516
+ * or slim pill in the top-center anchor region (wide), or a compact strip in
517
+ * the sheet head (narrow). Never floats over the seats at the tap point.
518
+ */
519
+ private renderSectionCard;
520
+ /** Collapse the expanded card to its slim pill (seat-picking started). */
521
+ private collapseSectionCard;
522
+ /**
523
+ * onViewChange hook for the card. The focus glide's own settle (within the
524
+ * grace window) enforces the ~25% coverage rule with the FINAL viewport; any
525
+ * later pan/zoom means seat-picking has begun → collapse to the pill.
526
+ */
527
+ private sectionCardOnView;
528
+ /** Fraction of the focused section's on-screen bbox covered by the card. */
529
+ private sectionCardCoverage;
452
530
  /** aria-live readout when keyboard focus lands on a seat. */
453
531
  private announceSeat;
454
532
  private showConfirm;