@mintplayer/ng-bootstrap 21.24.0 → 21.25.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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mintplayer/ng-bootstrap",
3
3
  "private": false,
4
- "version": "21.24.0",
4
+ "version": "21.25.0",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/MintPlayer/mintplayer-ng-bootstrap",
@@ -84,6 +84,9 @@ declare class MintDockManagerElement extends LitElement {
84
84
  static configureDocument(documentRef: Document | null | undefined): void;
85
85
  static get observedAttributes(): string[];
86
86
  private static instanceCounter;
87
+ private static readonly TOUCH_LONG_PRESS_MS;
88
+ private static readonly TOUCH_LONG_PRESS_SLOP_PX;
89
+ private static readonly TOUCH_PRESS_FEEDBACK_DELAY_MS;
87
90
  private documentRef;
88
91
  private windowRef;
89
92
  private rootEl;
@@ -199,13 +202,36 @@ declare class MintDockManagerElement extends LitElement {
199
202
  private captureTabDragMetrics;
200
203
  private clearPendingTabDragMetrics;
201
204
  /**
202
- * Pointerdown handler arms a "may become a drag" gesture. Once the pointer
203
- * moves past `threshold` pixels we promote it to an actual pane drag via
204
- * {@link beginPaneDrag}; if the user releases first we just clear the
205
- * pending tab metrics. All listeners self-clean on resolve so the gesture
206
- * stays scoped to a single pointerdown.
205
+ * Pointerdown handler arms a "may become a drag" gesture. Mouse / pen use a
206
+ * 5 px distance threshold and arm immediately; touch dispatches to
207
+ * {@link armPaneDragGestureTouch} which requires a 600 ms stationary hold
208
+ * (so the user can scroll the tabstrip natively without undocking).
209
+ * Once armed, both paths converge on {@link beginPaneDrag}. All listeners
210
+ * self-clean on resolve so the gesture stays scoped to a single pointerdown.
207
211
  */
208
212
  private armPaneDragGesture;
213
+ /**
214
+ * Touch-specific gesture arming. With `.dock-tab` set to `touch-action:
215
+ * none`, the browser never arbitrates the gesture itself, so JS owns it
216
+ * from frame 1. Three outcomes from the pending state:
217
+ *
218
+ * - User holds within {@link TOUCH_LONG_PRESS_SLOP_PX} for
219
+ * {@link TOUCH_LONG_PRESS_MS} → timer fires → drag arms via
220
+ * {@link beginPaneDrag}.
221
+ * - User moves past slop and the move is mostly horizontal, and the
222
+ * strip's `<ul>` is scrollable → enter `scrolling` mode and drive
223
+ * `ul.scrollLeft` from JS for the rest of the gesture (no drag, no
224
+ * momentum — direct 1:1 finger follow).
225
+ * - User moves past slop in any other direction, releases, or
226
+ * pointercancel fires → abandoned, no drag, no scroll. Releases
227
+ * under slop fire the synthesized click that drives `tab-activate`.
228
+ *
229
+ * `touch-action: pan-x` was the original PRD design but doesn't work:
230
+ * the policy is frozen at touchstart and `setPointerCapture` doesn't
231
+ * promote it, so first move after a long-press fires pointercancel and
232
+ * strands the panel. JS-driven scroll is the only model that holds.
233
+ */
234
+ private armPaneDragGestureTouch;
209
235
  private beginPaneDrag;
210
236
  private preparePaneDragSource;
211
237
  private endPaneDrag;