@seatlayer/js 0.41.0 → 0.42.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
@@ -3576,6 +3576,17 @@ declare class ChannelsMode {
3576
3576
  private stagedDoneTimer;
3577
3577
  private lastSelectionCount;
3578
3578
  private lastCounts;
3579
+ /** The markup currently in the rail. An identical repaint is skipped, which is
3580
+ * what keeps the organizer's scroll position (and open <select>) alive. */
3581
+ private railHtml;
3582
+ /**
3583
+ * The `assignmentVersion` the allocation map was built from. Walking every
3584
+ * allocation page is the expensive half of a refresh and the server already
3585
+ * tells us, in the channels response, whether ANY seat moved. Unchanged
3586
+ * version, unchanged allocation — so the walk is skipped entirely.
3587
+ */
3588
+ private allocationVersion;
3589
+ private onVisibility;
3579
3590
  constructor(host: ChannelsModeHost, capabilities: ChannelsCapabilities);
3580
3591
  /** Called when the cockpit switches into Channels mode. */
3581
3592
  enter(): void;
@@ -3651,6 +3662,22 @@ declare class ChannelsMode {
3651
3662
  /** Set by the cockpit so a view switch can re-arm canvas selection. */
3652
3663
  onInteractionChange?: () => void;
3653
3664
  private loadPreview;
3665
+ /**
3666
+ * Replace the rail's markup — but only when it actually differs, and never at
3667
+ * the cost of where the organizer had scrolled to.
3668
+ *
3669
+ * The rail repaints on a clock, on every selection change and after every
3670
+ * mutation. Rewriting `innerHTML` each time resets `scrollTop`, which is
3671
+ * exactly what "the rail gets stuck" was: scroll down to Create channel, the
3672
+ * poll ticks, and the list snaps back to the top under the cursor. So skip the
3673
+ * write when the markup is byte-identical, and restore the offset when it is
3674
+ * not.
3675
+ *
3676
+ * Returns whether the DOM was rewritten. Callers must only re-wire listeners
3677
+ * when it was — a skipped paint keeps the old nodes AND their listeners, so
3678
+ * re-wiring would double every handler.
3679
+ */
3680
+ private setRailHtml;
3654
3681
  paintRail(): void;
3655
3682
  private viewSegmentHtml;
3656
3683
  private mapNavigationHtml;
@@ -3659,6 +3686,24 @@ declare class ChannelsMode {
3659
3686
  private listRailHtml;
3660
3687
  private selectionRailHtml;
3661
3688
  private detailRailHtml;
3689
+ /**
3690
+ * "Distribute" — how the seats in this channel actually reach a buyer.
3691
+ *
3692
+ * This replaced a four-value "access intent" picker (none / internal /
3693
+ * hosted_link / server). Two of those values did nothing anywhere: no buyer or
3694
+ * inventory path reads `access_intent`, so `none` and `internal` were labels an
3695
+ * organizer could set and then wait forever for something to happen. A third,
3696
+ * `hosted_link`, is not the organizer's to choose at all — the server sets it
3697
+ * when a buyer link is created and clears it when the last live one is revoked.
3698
+ *
3699
+ * So this is two ACTIONS, not a setting: create a buyer link, or point the
3700
+ * channel at a website integration. Both of them do something the moment they
3701
+ * are pressed. A legacy row still carrying `none` or `internal` renders the
3702
+ * neutral "not distributed yet" state with both actions offered — the stored
3703
+ * value is left alone (it is organizer-declared metadata and the API that
3704
+ * writes it is unchanged), it simply no longer has a control of its own.
3705
+ */
3706
+ private distributeHtml;
3662
3707
  /**
3663
3708
  * Read the status projection for the open channel. Never paints — the caller
3664
3709
  * decides when the rail repaints, so a poll-driven reload does not fight a
@@ -3667,12 +3712,16 @@ declare class ChannelsMode {
3667
3712
  */
3668
3713
  private loadLinks;
3669
3714
  /**
3670
- * The hosted-link section of the detail panel.
3715
+ * The buyer-link status section of the detail panel.
3671
3716
  *
3672
3717
  * STATUS ONLY, by design (comp 06 `hosted`): label, state, expiry,
3673
3718
  * redemptions, seats per buyer, live sessions. There is no Copy control here
3674
3719
  * and no field to hang one on — the URL was shown once at creation and cannot
3675
3720
  * be produced again. Rotation is the recovery path, and it says so.
3721
+ *
3722
+ * Creating a link is the Distribute card's action, not this section's, so a
3723
+ * channel with no links renders nothing here rather than an empty heading and
3724
+ * a second button saying the same thing.
3676
3725
  */
3677
3726
  private hostedLinksHtml;
3678
3727
  private linkCardHtml;
@@ -3706,6 +3755,14 @@ declare class ChannelsMode {
3706
3755
  private showApplied;
3707
3756
  private shakeStaged;
3708
3757
  private renderRenameDialog;
3758
+ /**
3759
+ * "Get embed code" — mark the channel as reached through the organizer's own
3760
+ * backend. The write itself is `setChannelAccessIntent(…, 'server')`, the same
3761
+ * API the old picker called; the difference is that it is now a deliberate
3762
+ * action with a consequence the organizer is told about, rather than one of
3763
+ * four dropdown values with no observable effect.
3764
+ */
3765
+ private chooseWebsiteIntegration;
3709
3766
  private setAccessIntent;
3710
3767
  private togglePause;
3711
3768
  private renderArchiveDialog;
package/dist/index.d.ts CHANGED
@@ -3576,6 +3576,17 @@ declare class ChannelsMode {
3576
3576
  private stagedDoneTimer;
3577
3577
  private lastSelectionCount;
3578
3578
  private lastCounts;
3579
+ /** The markup currently in the rail. An identical repaint is skipped, which is
3580
+ * what keeps the organizer's scroll position (and open <select>) alive. */
3581
+ private railHtml;
3582
+ /**
3583
+ * The `assignmentVersion` the allocation map was built from. Walking every
3584
+ * allocation page is the expensive half of a refresh and the server already
3585
+ * tells us, in the channels response, whether ANY seat moved. Unchanged
3586
+ * version, unchanged allocation — so the walk is skipped entirely.
3587
+ */
3588
+ private allocationVersion;
3589
+ private onVisibility;
3579
3590
  constructor(host: ChannelsModeHost, capabilities: ChannelsCapabilities);
3580
3591
  /** Called when the cockpit switches into Channels mode. */
3581
3592
  enter(): void;
@@ -3651,6 +3662,22 @@ declare class ChannelsMode {
3651
3662
  /** Set by the cockpit so a view switch can re-arm canvas selection. */
3652
3663
  onInteractionChange?: () => void;
3653
3664
  private loadPreview;
3665
+ /**
3666
+ * Replace the rail's markup — but only when it actually differs, and never at
3667
+ * the cost of where the organizer had scrolled to.
3668
+ *
3669
+ * The rail repaints on a clock, on every selection change and after every
3670
+ * mutation. Rewriting `innerHTML` each time resets `scrollTop`, which is
3671
+ * exactly what "the rail gets stuck" was: scroll down to Create channel, the
3672
+ * poll ticks, and the list snaps back to the top under the cursor. So skip the
3673
+ * write when the markup is byte-identical, and restore the offset when it is
3674
+ * not.
3675
+ *
3676
+ * Returns whether the DOM was rewritten. Callers must only re-wire listeners
3677
+ * when it was — a skipped paint keeps the old nodes AND their listeners, so
3678
+ * re-wiring would double every handler.
3679
+ */
3680
+ private setRailHtml;
3654
3681
  paintRail(): void;
3655
3682
  private viewSegmentHtml;
3656
3683
  private mapNavigationHtml;
@@ -3659,6 +3686,24 @@ declare class ChannelsMode {
3659
3686
  private listRailHtml;
3660
3687
  private selectionRailHtml;
3661
3688
  private detailRailHtml;
3689
+ /**
3690
+ * "Distribute" — how the seats in this channel actually reach a buyer.
3691
+ *
3692
+ * This replaced a four-value "access intent" picker (none / internal /
3693
+ * hosted_link / server). Two of those values did nothing anywhere: no buyer or
3694
+ * inventory path reads `access_intent`, so `none` and `internal` were labels an
3695
+ * organizer could set and then wait forever for something to happen. A third,
3696
+ * `hosted_link`, is not the organizer's to choose at all — the server sets it
3697
+ * when a buyer link is created and clears it when the last live one is revoked.
3698
+ *
3699
+ * So this is two ACTIONS, not a setting: create a buyer link, or point the
3700
+ * channel at a website integration. Both of them do something the moment they
3701
+ * are pressed. A legacy row still carrying `none` or `internal` renders the
3702
+ * neutral "not distributed yet" state with both actions offered — the stored
3703
+ * value is left alone (it is organizer-declared metadata and the API that
3704
+ * writes it is unchanged), it simply no longer has a control of its own.
3705
+ */
3706
+ private distributeHtml;
3662
3707
  /**
3663
3708
  * Read the status projection for the open channel. Never paints — the caller
3664
3709
  * decides when the rail repaints, so a poll-driven reload does not fight a
@@ -3667,12 +3712,16 @@ declare class ChannelsMode {
3667
3712
  */
3668
3713
  private loadLinks;
3669
3714
  /**
3670
- * The hosted-link section of the detail panel.
3715
+ * The buyer-link status section of the detail panel.
3671
3716
  *
3672
3717
  * STATUS ONLY, by design (comp 06 `hosted`): label, state, expiry,
3673
3718
  * redemptions, seats per buyer, live sessions. There is no Copy control here
3674
3719
  * and no field to hang one on — the URL was shown once at creation and cannot
3675
3720
  * be produced again. Rotation is the recovery path, and it says so.
3721
+ *
3722
+ * Creating a link is the Distribute card's action, not this section's, so a
3723
+ * channel with no links renders nothing here rather than an empty heading and
3724
+ * a second button saying the same thing.
3676
3725
  */
3677
3726
  private hostedLinksHtml;
3678
3727
  private linkCardHtml;
@@ -3706,6 +3755,14 @@ declare class ChannelsMode {
3706
3755
  private showApplied;
3707
3756
  private shakeStaged;
3708
3757
  private renderRenameDialog;
3758
+ /**
3759
+ * "Get embed code" — mark the channel as reached through the organizer's own
3760
+ * backend. The write itself is `setChannelAccessIntent(…, 'server')`, the same
3761
+ * API the old picker called; the difference is that it is now a deliberate
3762
+ * action with a consequence the organizer is told about, rather than one of
3763
+ * four dropdown values with no observable effect.
3764
+ */
3765
+ private chooseWebsiteIntegration;
3709
3766
  private setAccessIntent;
3710
3767
  private togglePause;
3711
3768
  private renderArchiveDialog;