@seatlayer/js 0.41.0 → 0.43.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
@@ -3388,6 +3388,16 @@ interface ChannelsSeatView {
3388
3388
  x: number;
3389
3389
  y: number;
3390
3390
  }
3391
+ /** One row offered to the bulk assignment chooser. A physically segmented row
3392
+ * (one label split across several row objects) shares one logical id, so the
3393
+ * organizer picks "Row AA" once rather than three fragments of it. */
3394
+ interface ChannelsRowView {
3395
+ id: string;
3396
+ label: string;
3397
+ sectionId: string;
3398
+ sectionLabel: string;
3399
+ labels: string[];
3400
+ }
3391
3401
  /** The `ManageApi` subset Channels mode uses — structural so tests can pass a
3392
3402
  * hand-rolled double without constructing a real client. */
3393
3403
  interface ChannelsClient {
@@ -3478,6 +3488,10 @@ interface ChannelsModeHost {
3478
3488
  id: string;
3479
3489
  label: string;
3480
3490
  }>;
3491
+ /** Every selectable label inside one section, for the additive scope chooser. */
3492
+ labelsInSection(sectionId: string): string[];
3493
+ /** Logical rows across the whole chart, grouped by their section. */
3494
+ rows(): ChannelsRowView[];
3481
3495
  categories(): Array<{
3482
3496
  key: string;
3483
3497
  label: string;
@@ -3576,6 +3590,21 @@ declare class ChannelsMode {
3576
3590
  private stagedDoneTimer;
3577
3591
  private lastSelectionCount;
3578
3592
  private lastCounts;
3593
+ /** Rows are structural chart data — they do not move while the organizer is
3594
+ * allocating. Deriving them walks every seat, so the view is cached for the
3595
+ * lifetime of this mode entry and ordinary selection repaints stay O(1). */
3596
+ private assignmentRowsCache;
3597
+ /** The markup currently in the rail. An identical repaint is skipped, which is
3598
+ * what keeps the organizer's scroll position (and open <select>) alive. */
3599
+ private railHtml;
3600
+ /**
3601
+ * The `assignmentVersion` the allocation map was built from. Walking every
3602
+ * allocation page is the expensive half of a refresh and the server already
3603
+ * tells us, in the channels response, whether ANY seat moved. Unchanged
3604
+ * version, unchanged allocation — so the walk is skipped entirely.
3605
+ */
3606
+ private allocationVersion;
3607
+ private onVisibility;
3579
3608
  constructor(host: ChannelsModeHost, capabilities: ChannelsCapabilities);
3580
3609
  /** Called when the cockpit switches into Channels mode. */
3581
3610
  enter(): void;
@@ -3651,14 +3680,59 @@ declare class ChannelsMode {
3651
3680
  /** Set by the cockpit so a view switch can re-arm canvas selection. */
3652
3681
  onInteractionChange?: () => void;
3653
3682
  private loadPreview;
3683
+ /**
3684
+ * Replace the rail's markup — but only when it actually differs, and never at
3685
+ * the cost of where the organizer had scrolled to.
3686
+ *
3687
+ * The rail repaints on a clock, on every selection change and after every
3688
+ * mutation. Rewriting `innerHTML` each time resets `scrollTop`, which is
3689
+ * exactly what "the rail gets stuck" was: scroll down to Create channel, the
3690
+ * poll ticks, and the list snaps back to the top under the cursor. So skip the
3691
+ * write when the markup is byte-identical, and restore the offset when it is
3692
+ * not.
3693
+ *
3694
+ * Returns whether the DOM was rewritten. Callers must only re-wire listeners
3695
+ * when it was — a skipped paint keeps the old nodes AND their listeners, so
3696
+ * re-wiring would double every handler.
3697
+ */
3698
+ private setRailHtml;
3654
3699
  paintRail(): void;
3655
3700
  private viewSegmentHtml;
3656
3701
  private mapNavigationHtml;
3657
3702
  private countsHtml;
3658
3703
  private channelRowHtml;
3659
3704
  private listRailHtml;
3705
+ /**
3706
+ * Destination-first assignment controls.
3707
+ *
3708
+ * These used to live only inside the selection rail, which meant every route
3709
+ * into them was gated behind "select a seat on the map first" — the section,
3710
+ * row and category choosers were invisible until the organizer had already
3711
+ * done the work by hand. They now paint above the channel list too, so the
3712
+ * destination is chosen first and whole sections and rows are discoverable
3713
+ * without learning a hidden seat-first workflow.
3714
+ */
3715
+ private assignmentToolsHtml;
3660
3716
  private selectionRailHtml;
3661
3717
  private detailRailHtml;
3718
+ /**
3719
+ * "Distribute" — how the seats in this channel actually reach a buyer.
3720
+ *
3721
+ * This replaced a four-value "access intent" picker (none / internal /
3722
+ * hosted_link / server). Two of those values did nothing anywhere: no buyer or
3723
+ * inventory path reads `access_intent`, so `none` and `internal` were labels an
3724
+ * organizer could set and then wait forever for something to happen. A third,
3725
+ * `hosted_link`, is not the organizer's to choose at all — the server sets it
3726
+ * when a buyer link is created and clears it when the last live one is revoked.
3727
+ *
3728
+ * So this is two ACTIONS, not a setting: create a buyer link, or point the
3729
+ * channel at a website integration. Both of them do something the moment they
3730
+ * are pressed. A legacy row still carrying `none` or `internal` renders the
3731
+ * neutral "not distributed yet" state with both actions offered — the stored
3732
+ * value is left alone (it is organizer-declared metadata and the API that
3733
+ * writes it is unchanged), it simply no longer has a control of its own.
3734
+ */
3735
+ private distributeHtml;
3662
3736
  /**
3663
3737
  * Read the status projection for the open channel. Never paints — the caller
3664
3738
  * decides when the rail repaints, so a poll-driven reload does not fight a
@@ -3667,12 +3741,16 @@ declare class ChannelsMode {
3667
3741
  */
3668
3742
  private loadLinks;
3669
3743
  /**
3670
- * The hosted-link section of the detail panel.
3744
+ * The buyer-link status section of the detail panel.
3671
3745
  *
3672
3746
  * STATUS ONLY, by design (comp 06 `hosted`): label, state, expiry,
3673
3747
  * redemptions, seats per buyer, live sessions. There is no Copy control here
3674
3748
  * and no field to hang one on — the URL was shown once at creation and cannot
3675
3749
  * be produced again. Rotation is the recovery path, and it says so.
3750
+ *
3751
+ * Creating a link is the Distribute card's action, not this section's, so a
3752
+ * channel with no links renders nothing here rather than an empty heading and
3753
+ * a second button saying the same thing.
3676
3754
  */
3677
3755
  private hostedLinksHtml;
3678
3756
  private linkCardHtml;
@@ -3680,10 +3758,25 @@ declare class ChannelsMode {
3680
3758
  private paintSelection;
3681
3759
  private wireRail;
3682
3760
  private railAction;
3683
- private pickSection;
3761
+ /** Derived once per mode entry — see `assignmentRowsCache`. */
3762
+ private assignmentRows;
3684
3763
  private pickCategory;
3685
3764
  /** A tiny modal chooser reusing the dialog primitive (focus trap + Escape). */
3686
3765
  private promptChoice;
3766
+ /**
3767
+ * Add several whole sections, or several whole rows, in one operation.
3768
+ *
3769
+ * ADDITIVE by contract: the chooser starts from the labels already selected
3770
+ * and only ever grows that set, so opening it never destroys a hard-won
3771
+ * marquee or seat-list selection. The confirm button always states the net
3772
+ * number of seats it will add, and refuses to exceed `MAX_ASSIGNMENT_UNITS`.
3773
+ *
3774
+ * Rows get the richer variant. A large venue has thousands of them, so they
3775
+ * arrive collapsed under their section, with a section-level tri-state
3776
+ * checkbox, a search across every row, and a render cap — the flat list used
3777
+ * for sections would be an unusable wall of buttons.
3778
+ */
3779
+ private renderScopeDialog;
3687
3780
  private openDialog;
3688
3781
  private renderDialog;
3689
3782
  /**
@@ -3697,15 +3790,31 @@ declare class ChannelsMode {
3697
3790
  private showDialogError;
3698
3791
  private renderReviewDialog;
3699
3792
  /**
3700
- * Apply. On success the review sheet re-renders with the AUTHORITATIVE server
3701
- * buckets and the staged bar morphs to a for 1.2s. On a stale version the
3702
- * server mutated nothing: keep the selection, shake the bar once, and offer
3703
- * exactly one action Refresh and review.
3793
+ * Apply. On success the sheet CLOSES and the staged bar confirms what moved,
3794
+ * naming the destination and any skipped seats, with the AUTHORITATIVE server
3795
+ * buckets still one Details press away. Leaving the modal up on success made
3796
+ * the organizer dismiss a sheet to get back to a map they had just changed.
3797
+ * On a stale version the server mutated nothing: keep the selection, shake
3798
+ * the bar once, and offer exactly one action — Refresh and review.
3704
3799
  */
3705
3800
  private apply;
3801
+ /**
3802
+ * The success receipt, now that the review sheet closes on Apply. It names the
3803
+ * destination and the seats that could not move, keeps the authoritative
3804
+ * buckets reachable through Details, and stays up long enough to be read —
3805
+ * 1.2s was tuned for a confirmation the organizer was already looking at.
3806
+ */
3706
3807
  private showApplied;
3707
3808
  private shakeStaged;
3708
3809
  private renderRenameDialog;
3810
+ /**
3811
+ * "Get embed code" — mark the channel as reached through the organizer's own
3812
+ * backend. The write itself is `setChannelAccessIntent(…, 'server')`, the same
3813
+ * API the old picker called; the difference is that it is now a deliberate
3814
+ * action with a consequence the organizer is told about, rather than one of
3815
+ * four dropdown values with no observable effect.
3816
+ */
3817
+ private chooseWebsiteIntegration;
3709
3818
  private setAccessIntent;
3710
3819
  private togglePause;
3711
3820
  private renderArchiveDialog;
@@ -3771,4 +3880,4 @@ declare class ChannelsMode {
3771
3880
  handleBack(): boolean;
3772
3881
  }
3773
3882
 
3774
- export { ACCESS_LINK_DEFAULTS, type AccessLinkRecord, type AccessLinkReveal, type AccessLinkState, type AccessLinkStatus, type AccessLinkStatusRecord, ApiError, type ArchiveBlockedDetails, type AssignmentBuckets, type AssignmentDropDetails, type AssignmentResult, type AttachPickerFrameOptions, type BestAvailableResult, type BucketRow, BuyerAccessContext, type BuyerAccessExpiredEvent, type BuyerAccessRefreshReason, type BuyerAccessToken, type BuyerAccessTokenProvider, BuyerAccessUnavailableError, type BuyerAccessUnavailableEvent, type BuyerAccessUnavailableReason, BuyerRealtimeClient, type BuyerRealtimeOptions, type ChannelAccessIntent, type ChannelAccessSummary, type ChannelAllocationPage, type ChannelAuditEntry, type ChannelAuditPage, type ChannelCounts, type ChannelListResult, type ChannelPreviewProjection, type ChannelRecord, type ChannelSeatStatus, type ChannelState, type ChannelsCapabilities, type ChannelsClient, ChannelsMode, type ChannelsModeHost, type ChannelsSeatView, type CheckoutHandoff, type CheckoutLineItem, type CheckoutSessionResult, type ControlRoomActivityEntry, type ControlRoomSectionMetric, type ControlRoomSnapshot, EmbeddedDesigner, type EmbeddedDesignerEventType, type EmbeddedDesignerMessage, type EmbeddedDesignerOptions, type GAAreaAvailability, type HoldConflict, type HoldLineItem, type HoldResult, type LogEntry, type LogPage, ManageApi, ManageApiError, type OrderStatusResult, PUBLIC_CHANNEL_ID, PUBLIC_CHANNEL_NAME, type PaymentOptionsReason, type PaymentOptionsResult, type PaymentProviderName, type Projection, type PubApiOptions, type RealtimeSink, type ReportByStatus, type ReportCategoryMeta, type ReportCategoryRow, type ReportResult, type ResumedHoldResult, SeatManager, type SeatManagerActionResult, type SeatManagerActivity, type SeatManagerCapability, type SeatManagerConnection, type SeatManagerMode, type SeatManagerOptions, type SeatManagerTallies, SeatPicker, type SeatPickerOptions, type SeatPickerTheme, SeatingChart, type SeatingChartOptions, type SelectedObjectUnavailableEvent, type SelectedSeat, type SelectionSourceRow, type StatusChange, type SubscribeTicket$1 as SubscribeTicket, accessIntentLabel, accessLine, accessLinkBadge, accessLinkErrorCopy, accessLinkIsLive, accessLinkPolicyLines, attachPickerFrame, bucketRows, bucketRowsHtml, createBuyerAccessContext, createControllerSink, dropReviewRows, isPublicChannelId, markerLetter, markerOf, mutationCount, needsMoveConfirmation, planAssignment, retryAfterCopy, selectionSources, stateBadge, suggestMarker };
3883
+ export { ACCESS_LINK_DEFAULTS, type AccessLinkRecord, type AccessLinkReveal, type AccessLinkState, type AccessLinkStatus, type AccessLinkStatusRecord, ApiError, type ArchiveBlockedDetails, type AssignmentBuckets, type AssignmentDropDetails, type AssignmentResult, type AttachPickerFrameOptions, type BestAvailableResult, type BucketRow, BuyerAccessContext, type BuyerAccessExpiredEvent, type BuyerAccessRefreshReason, type BuyerAccessToken, type BuyerAccessTokenProvider, BuyerAccessUnavailableError, type BuyerAccessUnavailableEvent, type BuyerAccessUnavailableReason, BuyerRealtimeClient, type BuyerRealtimeOptions, type ChannelAccessIntent, type ChannelAccessSummary, type ChannelAllocationPage, type ChannelAuditEntry, type ChannelAuditPage, type ChannelCounts, type ChannelListResult, type ChannelPreviewProjection, type ChannelRecord, type ChannelSeatStatus, type ChannelState, type ChannelsCapabilities, type ChannelsClient, ChannelsMode, type ChannelsModeHost, type ChannelsRowView, type ChannelsSeatView, type CheckoutHandoff, type CheckoutLineItem, type CheckoutSessionResult, type ControlRoomActivityEntry, type ControlRoomSectionMetric, type ControlRoomSnapshot, EmbeddedDesigner, type EmbeddedDesignerEventType, type EmbeddedDesignerMessage, type EmbeddedDesignerOptions, type GAAreaAvailability, type HoldConflict, type HoldLineItem, type HoldResult, type LogEntry, type LogPage, ManageApi, ManageApiError, type OrderStatusResult, PUBLIC_CHANNEL_ID, PUBLIC_CHANNEL_NAME, type PaymentOptionsReason, type PaymentOptionsResult, type PaymentProviderName, type Projection, type PubApiOptions, type RealtimeSink, type ReportByStatus, type ReportCategoryMeta, type ReportCategoryRow, type ReportResult, type ResumedHoldResult, SeatManager, type SeatManagerActionResult, type SeatManagerActivity, type SeatManagerCapability, type SeatManagerConnection, type SeatManagerMode, type SeatManagerOptions, type SeatManagerTallies, SeatPicker, type SeatPickerOptions, type SeatPickerTheme, SeatingChart, type SeatingChartOptions, type SelectedObjectUnavailableEvent, type SelectedSeat, type SelectionSourceRow, type StatusChange, type SubscribeTicket$1 as SubscribeTicket, accessIntentLabel, accessLine, accessLinkBadge, accessLinkErrorCopy, accessLinkIsLive, accessLinkPolicyLines, attachPickerFrame, bucketRows, bucketRowsHtml, createBuyerAccessContext, createControllerSink, dropReviewRows, isPublicChannelId, markerLetter, markerOf, mutationCount, needsMoveConfirmation, planAssignment, retryAfterCopy, selectionSources, stateBadge, suggestMarker };
package/dist/index.d.ts CHANGED
@@ -3388,6 +3388,16 @@ interface ChannelsSeatView {
3388
3388
  x: number;
3389
3389
  y: number;
3390
3390
  }
3391
+ /** One row offered to the bulk assignment chooser. A physically segmented row
3392
+ * (one label split across several row objects) shares one logical id, so the
3393
+ * organizer picks "Row AA" once rather than three fragments of it. */
3394
+ interface ChannelsRowView {
3395
+ id: string;
3396
+ label: string;
3397
+ sectionId: string;
3398
+ sectionLabel: string;
3399
+ labels: string[];
3400
+ }
3391
3401
  /** The `ManageApi` subset Channels mode uses — structural so tests can pass a
3392
3402
  * hand-rolled double without constructing a real client. */
3393
3403
  interface ChannelsClient {
@@ -3478,6 +3488,10 @@ interface ChannelsModeHost {
3478
3488
  id: string;
3479
3489
  label: string;
3480
3490
  }>;
3491
+ /** Every selectable label inside one section, for the additive scope chooser. */
3492
+ labelsInSection(sectionId: string): string[];
3493
+ /** Logical rows across the whole chart, grouped by their section. */
3494
+ rows(): ChannelsRowView[];
3481
3495
  categories(): Array<{
3482
3496
  key: string;
3483
3497
  label: string;
@@ -3576,6 +3590,21 @@ declare class ChannelsMode {
3576
3590
  private stagedDoneTimer;
3577
3591
  private lastSelectionCount;
3578
3592
  private lastCounts;
3593
+ /** Rows are structural chart data — they do not move while the organizer is
3594
+ * allocating. Deriving them walks every seat, so the view is cached for the
3595
+ * lifetime of this mode entry and ordinary selection repaints stay O(1). */
3596
+ private assignmentRowsCache;
3597
+ /** The markup currently in the rail. An identical repaint is skipped, which is
3598
+ * what keeps the organizer's scroll position (and open <select>) alive. */
3599
+ private railHtml;
3600
+ /**
3601
+ * The `assignmentVersion` the allocation map was built from. Walking every
3602
+ * allocation page is the expensive half of a refresh and the server already
3603
+ * tells us, in the channels response, whether ANY seat moved. Unchanged
3604
+ * version, unchanged allocation — so the walk is skipped entirely.
3605
+ */
3606
+ private allocationVersion;
3607
+ private onVisibility;
3579
3608
  constructor(host: ChannelsModeHost, capabilities: ChannelsCapabilities);
3580
3609
  /** Called when the cockpit switches into Channels mode. */
3581
3610
  enter(): void;
@@ -3651,14 +3680,59 @@ declare class ChannelsMode {
3651
3680
  /** Set by the cockpit so a view switch can re-arm canvas selection. */
3652
3681
  onInteractionChange?: () => void;
3653
3682
  private loadPreview;
3683
+ /**
3684
+ * Replace the rail's markup — but only when it actually differs, and never at
3685
+ * the cost of where the organizer had scrolled to.
3686
+ *
3687
+ * The rail repaints on a clock, on every selection change and after every
3688
+ * mutation. Rewriting `innerHTML` each time resets `scrollTop`, which is
3689
+ * exactly what "the rail gets stuck" was: scroll down to Create channel, the
3690
+ * poll ticks, and the list snaps back to the top under the cursor. So skip the
3691
+ * write when the markup is byte-identical, and restore the offset when it is
3692
+ * not.
3693
+ *
3694
+ * Returns whether the DOM was rewritten. Callers must only re-wire listeners
3695
+ * when it was — a skipped paint keeps the old nodes AND their listeners, so
3696
+ * re-wiring would double every handler.
3697
+ */
3698
+ private setRailHtml;
3654
3699
  paintRail(): void;
3655
3700
  private viewSegmentHtml;
3656
3701
  private mapNavigationHtml;
3657
3702
  private countsHtml;
3658
3703
  private channelRowHtml;
3659
3704
  private listRailHtml;
3705
+ /**
3706
+ * Destination-first assignment controls.
3707
+ *
3708
+ * These used to live only inside the selection rail, which meant every route
3709
+ * into them was gated behind "select a seat on the map first" — the section,
3710
+ * row and category choosers were invisible until the organizer had already
3711
+ * done the work by hand. They now paint above the channel list too, so the
3712
+ * destination is chosen first and whole sections and rows are discoverable
3713
+ * without learning a hidden seat-first workflow.
3714
+ */
3715
+ private assignmentToolsHtml;
3660
3716
  private selectionRailHtml;
3661
3717
  private detailRailHtml;
3718
+ /**
3719
+ * "Distribute" — how the seats in this channel actually reach a buyer.
3720
+ *
3721
+ * This replaced a four-value "access intent" picker (none / internal /
3722
+ * hosted_link / server). Two of those values did nothing anywhere: no buyer or
3723
+ * inventory path reads `access_intent`, so `none` and `internal` were labels an
3724
+ * organizer could set and then wait forever for something to happen. A third,
3725
+ * `hosted_link`, is not the organizer's to choose at all — the server sets it
3726
+ * when a buyer link is created and clears it when the last live one is revoked.
3727
+ *
3728
+ * So this is two ACTIONS, not a setting: create a buyer link, or point the
3729
+ * channel at a website integration. Both of them do something the moment they
3730
+ * are pressed. A legacy row still carrying `none` or `internal` renders the
3731
+ * neutral "not distributed yet" state with both actions offered — the stored
3732
+ * value is left alone (it is organizer-declared metadata and the API that
3733
+ * writes it is unchanged), it simply no longer has a control of its own.
3734
+ */
3735
+ private distributeHtml;
3662
3736
  /**
3663
3737
  * Read the status projection for the open channel. Never paints — the caller
3664
3738
  * decides when the rail repaints, so a poll-driven reload does not fight a
@@ -3667,12 +3741,16 @@ declare class ChannelsMode {
3667
3741
  */
3668
3742
  private loadLinks;
3669
3743
  /**
3670
- * The hosted-link section of the detail panel.
3744
+ * The buyer-link status section of the detail panel.
3671
3745
  *
3672
3746
  * STATUS ONLY, by design (comp 06 `hosted`): label, state, expiry,
3673
3747
  * redemptions, seats per buyer, live sessions. There is no Copy control here
3674
3748
  * and no field to hang one on — the URL was shown once at creation and cannot
3675
3749
  * be produced again. Rotation is the recovery path, and it says so.
3750
+ *
3751
+ * Creating a link is the Distribute card's action, not this section's, so a
3752
+ * channel with no links renders nothing here rather than an empty heading and
3753
+ * a second button saying the same thing.
3676
3754
  */
3677
3755
  private hostedLinksHtml;
3678
3756
  private linkCardHtml;
@@ -3680,10 +3758,25 @@ declare class ChannelsMode {
3680
3758
  private paintSelection;
3681
3759
  private wireRail;
3682
3760
  private railAction;
3683
- private pickSection;
3761
+ /** Derived once per mode entry — see `assignmentRowsCache`. */
3762
+ private assignmentRows;
3684
3763
  private pickCategory;
3685
3764
  /** A tiny modal chooser reusing the dialog primitive (focus trap + Escape). */
3686
3765
  private promptChoice;
3766
+ /**
3767
+ * Add several whole sections, or several whole rows, in one operation.
3768
+ *
3769
+ * ADDITIVE by contract: the chooser starts from the labels already selected
3770
+ * and only ever grows that set, so opening it never destroys a hard-won
3771
+ * marquee or seat-list selection. The confirm button always states the net
3772
+ * number of seats it will add, and refuses to exceed `MAX_ASSIGNMENT_UNITS`.
3773
+ *
3774
+ * Rows get the richer variant. A large venue has thousands of them, so they
3775
+ * arrive collapsed under their section, with a section-level tri-state
3776
+ * checkbox, a search across every row, and a render cap — the flat list used
3777
+ * for sections would be an unusable wall of buttons.
3778
+ */
3779
+ private renderScopeDialog;
3687
3780
  private openDialog;
3688
3781
  private renderDialog;
3689
3782
  /**
@@ -3697,15 +3790,31 @@ declare class ChannelsMode {
3697
3790
  private showDialogError;
3698
3791
  private renderReviewDialog;
3699
3792
  /**
3700
- * Apply. On success the review sheet re-renders with the AUTHORITATIVE server
3701
- * buckets and the staged bar morphs to a for 1.2s. On a stale version the
3702
- * server mutated nothing: keep the selection, shake the bar once, and offer
3703
- * exactly one action Refresh and review.
3793
+ * Apply. On success the sheet CLOSES and the staged bar confirms what moved,
3794
+ * naming the destination and any skipped seats, with the AUTHORITATIVE server
3795
+ * buckets still one Details press away. Leaving the modal up on success made
3796
+ * the organizer dismiss a sheet to get back to a map they had just changed.
3797
+ * On a stale version the server mutated nothing: keep the selection, shake
3798
+ * the bar once, and offer exactly one action — Refresh and review.
3704
3799
  */
3705
3800
  private apply;
3801
+ /**
3802
+ * The success receipt, now that the review sheet closes on Apply. It names the
3803
+ * destination and the seats that could not move, keeps the authoritative
3804
+ * buckets reachable through Details, and stays up long enough to be read —
3805
+ * 1.2s was tuned for a confirmation the organizer was already looking at.
3806
+ */
3706
3807
  private showApplied;
3707
3808
  private shakeStaged;
3708
3809
  private renderRenameDialog;
3810
+ /**
3811
+ * "Get embed code" — mark the channel as reached through the organizer's own
3812
+ * backend. The write itself is `setChannelAccessIntent(…, 'server')`, the same
3813
+ * API the old picker called; the difference is that it is now a deliberate
3814
+ * action with a consequence the organizer is told about, rather than one of
3815
+ * four dropdown values with no observable effect.
3816
+ */
3817
+ private chooseWebsiteIntegration;
3709
3818
  private setAccessIntent;
3710
3819
  private togglePause;
3711
3820
  private renderArchiveDialog;
@@ -3771,4 +3880,4 @@ declare class ChannelsMode {
3771
3880
  handleBack(): boolean;
3772
3881
  }
3773
3882
 
3774
- export { ACCESS_LINK_DEFAULTS, type AccessLinkRecord, type AccessLinkReveal, type AccessLinkState, type AccessLinkStatus, type AccessLinkStatusRecord, ApiError, type ArchiveBlockedDetails, type AssignmentBuckets, type AssignmentDropDetails, type AssignmentResult, type AttachPickerFrameOptions, type BestAvailableResult, type BucketRow, BuyerAccessContext, type BuyerAccessExpiredEvent, type BuyerAccessRefreshReason, type BuyerAccessToken, type BuyerAccessTokenProvider, BuyerAccessUnavailableError, type BuyerAccessUnavailableEvent, type BuyerAccessUnavailableReason, BuyerRealtimeClient, type BuyerRealtimeOptions, type ChannelAccessIntent, type ChannelAccessSummary, type ChannelAllocationPage, type ChannelAuditEntry, type ChannelAuditPage, type ChannelCounts, type ChannelListResult, type ChannelPreviewProjection, type ChannelRecord, type ChannelSeatStatus, type ChannelState, type ChannelsCapabilities, type ChannelsClient, ChannelsMode, type ChannelsModeHost, type ChannelsSeatView, type CheckoutHandoff, type CheckoutLineItem, type CheckoutSessionResult, type ControlRoomActivityEntry, type ControlRoomSectionMetric, type ControlRoomSnapshot, EmbeddedDesigner, type EmbeddedDesignerEventType, type EmbeddedDesignerMessage, type EmbeddedDesignerOptions, type GAAreaAvailability, type HoldConflict, type HoldLineItem, type HoldResult, type LogEntry, type LogPage, ManageApi, ManageApiError, type OrderStatusResult, PUBLIC_CHANNEL_ID, PUBLIC_CHANNEL_NAME, type PaymentOptionsReason, type PaymentOptionsResult, type PaymentProviderName, type Projection, type PubApiOptions, type RealtimeSink, type ReportByStatus, type ReportCategoryMeta, type ReportCategoryRow, type ReportResult, type ResumedHoldResult, SeatManager, type SeatManagerActionResult, type SeatManagerActivity, type SeatManagerCapability, type SeatManagerConnection, type SeatManagerMode, type SeatManagerOptions, type SeatManagerTallies, SeatPicker, type SeatPickerOptions, type SeatPickerTheme, SeatingChart, type SeatingChartOptions, type SelectedObjectUnavailableEvent, type SelectedSeat, type SelectionSourceRow, type StatusChange, type SubscribeTicket$1 as SubscribeTicket, accessIntentLabel, accessLine, accessLinkBadge, accessLinkErrorCopy, accessLinkIsLive, accessLinkPolicyLines, attachPickerFrame, bucketRows, bucketRowsHtml, createBuyerAccessContext, createControllerSink, dropReviewRows, isPublicChannelId, markerLetter, markerOf, mutationCount, needsMoveConfirmation, planAssignment, retryAfterCopy, selectionSources, stateBadge, suggestMarker };
3883
+ export { ACCESS_LINK_DEFAULTS, type AccessLinkRecord, type AccessLinkReveal, type AccessLinkState, type AccessLinkStatus, type AccessLinkStatusRecord, ApiError, type ArchiveBlockedDetails, type AssignmentBuckets, type AssignmentDropDetails, type AssignmentResult, type AttachPickerFrameOptions, type BestAvailableResult, type BucketRow, BuyerAccessContext, type BuyerAccessExpiredEvent, type BuyerAccessRefreshReason, type BuyerAccessToken, type BuyerAccessTokenProvider, BuyerAccessUnavailableError, type BuyerAccessUnavailableEvent, type BuyerAccessUnavailableReason, BuyerRealtimeClient, type BuyerRealtimeOptions, type ChannelAccessIntent, type ChannelAccessSummary, type ChannelAllocationPage, type ChannelAuditEntry, type ChannelAuditPage, type ChannelCounts, type ChannelListResult, type ChannelPreviewProjection, type ChannelRecord, type ChannelSeatStatus, type ChannelState, type ChannelsCapabilities, type ChannelsClient, ChannelsMode, type ChannelsModeHost, type ChannelsRowView, type ChannelsSeatView, type CheckoutHandoff, type CheckoutLineItem, type CheckoutSessionResult, type ControlRoomActivityEntry, type ControlRoomSectionMetric, type ControlRoomSnapshot, EmbeddedDesigner, type EmbeddedDesignerEventType, type EmbeddedDesignerMessage, type EmbeddedDesignerOptions, type GAAreaAvailability, type HoldConflict, type HoldLineItem, type HoldResult, type LogEntry, type LogPage, ManageApi, ManageApiError, type OrderStatusResult, PUBLIC_CHANNEL_ID, PUBLIC_CHANNEL_NAME, type PaymentOptionsReason, type PaymentOptionsResult, type PaymentProviderName, type Projection, type PubApiOptions, type RealtimeSink, type ReportByStatus, type ReportCategoryMeta, type ReportCategoryRow, type ReportResult, type ResumedHoldResult, SeatManager, type SeatManagerActionResult, type SeatManagerActivity, type SeatManagerCapability, type SeatManagerConnection, type SeatManagerMode, type SeatManagerOptions, type SeatManagerTallies, SeatPicker, type SeatPickerOptions, type SeatPickerTheme, SeatingChart, type SeatingChartOptions, type SelectedObjectUnavailableEvent, type SelectedSeat, type SelectionSourceRow, type StatusChange, type SubscribeTicket$1 as SubscribeTicket, accessIntentLabel, accessLine, accessLinkBadge, accessLinkErrorCopy, accessLinkIsLive, accessLinkPolicyLines, attachPickerFrame, bucketRows, bucketRowsHtml, createBuyerAccessContext, createControllerSink, dropReviewRows, isPublicChannelId, markerLetter, markerOf, mutationCount, needsMoveConfirmation, planAssignment, retryAfterCopy, selectionSources, stateBadge, suggestMarker };