@surdeddd/bottom-sheet 0.12.0 → 0.14.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.
Files changed (66) hide show
  1. package/README.md +85 -1
  2. package/dist/{BottomSheetEngine-D6oiEfZ4.d.cts → BottomSheetCore-Cp7dWy91.d.cts} +85 -5
  3. package/dist/{BottomSheetEngine-Dhy0X_e9.d.ts → BottomSheetCore-DJYwWOqt.d.ts} +85 -5
  4. package/dist/BottomSheetEngine-Lm7HIVHv.d.cts +7 -0
  5. package/dist/BottomSheetEngine-O5PbeKfe.d.ts +7 -0
  6. package/dist/core.cjs +3680 -0
  7. package/dist/core.d.cts +3 -0
  8. package/dist/core.d.ts +3 -0
  9. package/dist/core.js +3678 -0
  10. package/dist/debug.cjs +109 -0
  11. package/dist/debug.d.cts +22 -0
  12. package/dist/debug.d.ts +22 -0
  13. package/dist/debug.js +107 -0
  14. package/dist/element.cjs +1314 -829
  15. package/dist/element.d.cts +2 -1
  16. package/dist/element.d.ts +2 -1
  17. package/dist/element.iife.global.js +2 -2
  18. package/dist/element.js +1314 -829
  19. package/dist/features.cjs +489 -0
  20. package/dist/features.d.cts +13 -0
  21. package/dist/features.d.ts +13 -0
  22. package/dist/features.js +482 -0
  23. package/dist/index-Bb5TRmyg.d.cts +9 -0
  24. package/dist/index-Cl9ebCP2.d.ts +9 -0
  25. package/dist/index.cjs +979 -1293
  26. package/dist/index.d.cts +43 -55
  27. package/dist/index.d.ts +43 -55
  28. package/dist/index.js +973 -1280
  29. package/dist/integrations/formik.d.cts +1 -1
  30. package/dist/integrations/formik.d.ts +1 -1
  31. package/dist/integrations/react-hook-form.d.cts +1 -1
  32. package/dist/integrations/react-hook-form.d.ts +1 -1
  33. package/dist/overlay.cjs +11 -10
  34. package/dist/overlay.js +11 -10
  35. package/dist/preact.d.cts +2 -1
  36. package/dist/preact.d.ts +2 -1
  37. package/dist/qwik-lib/index.qwik.cjs +4418 -0
  38. package/dist/qwik-lib/index.qwik.mjs +4418 -0
  39. package/dist/qwik.cjs +1089 -657
  40. package/dist/qwik.d.cts +4 -2
  41. package/dist/qwik.d.ts +4 -2
  42. package/dist/qwik.js +1089 -657
  43. package/dist/react.cjs +1100 -665
  44. package/dist/react.d.cts +3 -3
  45. package/dist/react.d.ts +3 -3
  46. package/dist/react.js +1100 -665
  47. package/dist/solid.cjs +1095 -657
  48. package/dist/solid.d.cts +90 -4
  49. package/dist/solid.d.ts +90 -4
  50. package/dist/solid.js +1095 -657
  51. package/dist/solid.source.jsx +1103 -657
  52. package/dist/styles.css +24 -4
  53. package/dist/svelte-core.cjs +981 -557
  54. package/dist/svelte-core.js +981 -557
  55. package/dist/svelte-src/BottomSheet.svelte +14 -0
  56. package/dist/svelte.cjs +1091 -657
  57. package/dist/svelte.d.cts +2 -0
  58. package/dist/svelte.d.ts +2 -0
  59. package/dist/svelte.js +1091 -657
  60. package/dist/vue.cjs +1105 -657
  61. package/dist/vue.js +1105 -657
  62. package/dist/webgl.cjs +583 -0
  63. package/dist/webgl.d.cts +17 -0
  64. package/dist/webgl.d.ts +17 -0
  65. package/dist/webgl.js +581 -0
  66. package/package.json +88 -12
package/dist/solid.d.cts CHANGED
@@ -1,13 +1,18 @@
1
1
  import { JSX } from 'solid-js';
2
2
 
3
+ type DragFrom$1 = "handle" | "sheet" | "zones";
4
+
3
5
  type TransformAxis = "bottom" | "top" | "left" | "right";
4
6
 
5
7
  type SnapPoint = number | `${number}%` | "fit" | "content" | "full" | (string & {});
6
8
  type SnapPointDef<Id extends string = string> = {
7
9
  id: Id;
8
10
  size: SnapPoint;
11
+ dragFromContent?: boolean;
9
12
  };
10
13
  type SheetMode = TransformAxis;
14
+ type DragFrom = DragFrom$1;
15
+ type DragSurfaceKind = "content";
11
16
  type ScrimPreset = "subtle" | "standard" | "monitoring" | "cinematic";
12
17
  type ScrimUpdate = {
13
18
  color?: string | null;
@@ -83,6 +88,8 @@ type EngineOptions = {
83
88
  respectReducedMotion?: boolean;
84
89
  flickVelocity?: number;
85
90
  dragThreshold?: number;
91
+ dragFrom?: DragFrom;
92
+ dragFromContent?: boolean;
86
93
  rubberBand?: boolean;
87
94
  backdropRange?: [number, number];
88
95
  screenRange?: [number, number];
@@ -93,6 +100,7 @@ type EngineOptions = {
93
100
  scrimTapToClose?: boolean;
94
101
  scrimPreset?: ScrimPreset;
95
102
  animation?: "spring" | "tween" | "ios-spring" | "material-bounce" | "linear" | "snappy";
103
+ settleAnimation?: "waapi";
96
104
  spring?: {
97
105
  stiffness?: number;
98
106
  damping?: number;
@@ -117,15 +125,65 @@ type EngineOptions = {
117
125
  linkedSheets?: BottomSheetEngineLike[];
118
126
  viewTransitions?: boolean;
119
127
  stackEffect?: boolean;
128
+ features?: EngineFeature[];
120
129
  };
121
130
 
122
- type BottomSheetEngineLike = BottomSheetEngine;
131
+ type BottomSheetEngineLike = BottomSheetCore;
132
+ type EngineFeatureStage = "attach" | "post";
133
+ type EngineFeatureOptions = {
134
+ routedTo?: string;
135
+ closeOnBack: boolean;
136
+ closeOnRouteChange: boolean;
137
+ persistKey?: string;
138
+ autoCollapseAfter?: number;
139
+ };
140
+ type EngineFeatureContext = {
141
+ element: HTMLElement;
142
+ scrollContainer?: HTMLElement;
143
+ sheetId: string;
144
+ options: EngineFeatureOptions;
145
+ isDestroyed: () => boolean;
146
+ isDragging: () => boolean;
147
+ isAnimating: () => boolean;
148
+ isTopSheet: () => boolean;
149
+ isVerticalAxis: () => boolean;
150
+ getSize: () => number;
151
+ getActiveId: () => string;
152
+ getAllowedIds: () => string[];
153
+ allowedIdsBySize: () => string[];
154
+ getMaxAxisSize: () => number;
155
+ resolveSnap: (id: string) => {
156
+ id: string;
157
+ size: number;
158
+ } | null;
159
+ resolveActiveSnap: () => {
160
+ id: string;
161
+ size: number;
162
+ } | null;
163
+ setSize: (size: number) => void;
164
+ setMaxAxisSize: (size: number) => void;
165
+ applySize: (size: number) => void;
166
+ recomputeSnaps: () => void;
167
+ newCycle: () => void;
168
+ cancelInFlight: () => void;
169
+ resyncAfterResize: () => void;
170
+ snapTo: (id: string) => void;
171
+ close: (reason?: CloseReason) => Promise<void>;
172
+ attachDragSurface: (surface: HTMLElement, kind: DragSurfaceKind) => (() => void) | void;
173
+ on: <K extends keyof SheetEventMap>(event: K, fn: (payload: SheetEventMap[K]) => void) => () => void;
174
+ addTeardown: (fn: (() => void) | null | undefined) => void;
175
+ };
176
+ type EngineFeature = {
177
+ name: string;
178
+ stage?: EngineFeatureStage;
179
+ install: (ctx: EngineFeatureContext) => (() => void) | void;
180
+ };
123
181
  type TeardownScope = {
124
182
  add: (fn: (() => void) | null | undefined) => void;
125
183
  };
126
184
  type Plugin = {
127
185
  name: string;
128
- install: (engine: BottomSheetEngine, scope: TeardownScope) => void | (() => void);
186
+ install: (engine: BottomSheetCore, scope: TeardownScope) => void | (() => void);
129
187
  };
130
188
  type EngineState = {
131
189
  size: number;
@@ -180,7 +238,7 @@ type ScrimStagesOptions = {
180
238
  };
181
239
 
182
240
  type Listener<K extends keyof SheetEventMap> = (payload: SheetEventMap[K]) => void;
183
- declare class BottomSheetEngine {
241
+ declare class BottomSheetCore {
184
242
  private id;
185
243
  private element;
186
244
  private handle;
@@ -191,6 +249,8 @@ declare class BottomSheetEngine {
191
249
  private mode;
192
250
  private flickVelocity;
193
251
  private dragThreshold;
252
+ private dragFromMode;
253
+ private dragFromContentDefault;
194
254
  private rubberBandEnabled;
195
255
  private scrim;
196
256
  private aria;
@@ -208,8 +268,11 @@ declare class BottomSheetEngine {
208
268
  private activeId;
209
269
  private size;
210
270
  private gesture;
271
+ private contentGesture;
272
+ private detachSheetGesture;
211
273
  private rootEl;
212
274
  private destroyed;
275
+ private restClosed;
213
276
  private currentViewTransition;
214
277
  private currentAbort;
215
278
  private sizeWriteSentinel;
@@ -232,11 +295,16 @@ declare class BottomSheetEngine {
232
295
  private stackEffectPrimed;
233
296
  private fitDeps;
234
297
  private transformTemplate;
298
+ private featureList;
299
+ private featureCtx;
235
300
  constructor(opts: EngineOptions);
301
+ private buildFeatureContext;
302
+ private runFeatureStage;
303
+ private warnOrphanFeatureOptions;
236
304
  get state(): EngineState;
237
305
  on<K extends keyof SheetEventMap>(event: K, fn: Listener<K>): () => void;
238
306
  use(plugin: Plugin): this;
239
- setLinkedSheets(sheets: BottomSheetEngine[]): void;
307
+ setLinkedSheets(sheets: BottomSheetCore[]): void;
240
308
  getAllowedIds(): string[];
241
309
  getResolvedSnaps(): readonly {
242
310
  id: string;
@@ -247,6 +315,7 @@ declare class BottomSheetEngine {
247
315
  signal?: AbortSignal;
248
316
  }, _skipBeforeSnap?: boolean): Promise<void>;
249
317
  private completeSnap;
318
+ private setRestClosed;
250
319
  private emitOpenSequence;
251
320
  private emitCloseSequence;
252
321
  dragTo(targetSize: number, velocityOrOpts?: number | {
@@ -259,6 +328,9 @@ declare class BottomSheetEngine {
259
328
  setPersistent(value: boolean): void;
260
329
  setDisableClose(value: boolean): void;
261
330
  setDisableDrag(value: boolean): void;
331
+ setDragFromContent(value: boolean): void;
332
+ setDragFrom(mode: DragFrom$1): void;
333
+ getDragFrom(): DragFrom$1;
262
334
  isTop(): boolean;
263
335
  depth(): number;
264
336
  expand(): Promise<void>;
@@ -298,9 +370,17 @@ declare class BottomSheetEngine {
298
370
  private updateAriaSlider;
299
371
  private registerInStack;
300
372
  private applyStackDepth;
373
+ private buildGestureDeps;
374
+ private isContentDragAllowed;
375
+ private decideContentDrag;
376
+ private attachDragSurface;
377
+ private sheetDragSurface;
378
+ private canStartSheetDrag;
379
+ private mountSheetGesture;
301
380
  private attach;
302
381
  private attachFeatures;
303
382
  private settleAfterDrag;
383
+ private isDraggingAny;
304
384
  private clearWillChangeIfIdle;
305
385
  private haptic;
306
386
  private applySize;
@@ -310,6 +390,10 @@ declare class BottomSheetEngine {
310
390
  private handleClose;
311
391
  }
312
392
 
393
+ declare class BottomSheetEngine extends BottomSheetCore {
394
+ constructor(opts: EngineOptions);
395
+ }
396
+
313
397
  type TeleportTarget = HTMLElement | string | null | undefined;
314
398
 
315
399
  /** @jsxImportSource solid-js */
@@ -336,6 +420,8 @@ type BottomSheetProps<TId extends string = string> = {
336
420
  persistent?: boolean;
337
421
  disableClose?: boolean;
338
422
  disableDrag?: boolean;
423
+ dragFrom?: EngineOptions["dragFrom"];
424
+ dragFromContent?: boolean;
339
425
  closeOnRouteChange?: boolean;
340
426
  stackEffect?: boolean;
341
427
  teleport?: boolean;
package/dist/solid.d.ts CHANGED
@@ -1,13 +1,18 @@
1
1
  import { JSX } from 'solid-js';
2
2
 
3
+ type DragFrom$1 = "handle" | "sheet" | "zones";
4
+
3
5
  type TransformAxis = "bottom" | "top" | "left" | "right";
4
6
 
5
7
  type SnapPoint = number | `${number}%` | "fit" | "content" | "full" | (string & {});
6
8
  type SnapPointDef<Id extends string = string> = {
7
9
  id: Id;
8
10
  size: SnapPoint;
11
+ dragFromContent?: boolean;
9
12
  };
10
13
  type SheetMode = TransformAxis;
14
+ type DragFrom = DragFrom$1;
15
+ type DragSurfaceKind = "content";
11
16
  type ScrimPreset = "subtle" | "standard" | "monitoring" | "cinematic";
12
17
  type ScrimUpdate = {
13
18
  color?: string | null;
@@ -83,6 +88,8 @@ type EngineOptions = {
83
88
  respectReducedMotion?: boolean;
84
89
  flickVelocity?: number;
85
90
  dragThreshold?: number;
91
+ dragFrom?: DragFrom;
92
+ dragFromContent?: boolean;
86
93
  rubberBand?: boolean;
87
94
  backdropRange?: [number, number];
88
95
  screenRange?: [number, number];
@@ -93,6 +100,7 @@ type EngineOptions = {
93
100
  scrimTapToClose?: boolean;
94
101
  scrimPreset?: ScrimPreset;
95
102
  animation?: "spring" | "tween" | "ios-spring" | "material-bounce" | "linear" | "snappy";
103
+ settleAnimation?: "waapi";
96
104
  spring?: {
97
105
  stiffness?: number;
98
106
  damping?: number;
@@ -117,15 +125,65 @@ type EngineOptions = {
117
125
  linkedSheets?: BottomSheetEngineLike[];
118
126
  viewTransitions?: boolean;
119
127
  stackEffect?: boolean;
128
+ features?: EngineFeature[];
120
129
  };
121
130
 
122
- type BottomSheetEngineLike = BottomSheetEngine;
131
+ type BottomSheetEngineLike = BottomSheetCore;
132
+ type EngineFeatureStage = "attach" | "post";
133
+ type EngineFeatureOptions = {
134
+ routedTo?: string;
135
+ closeOnBack: boolean;
136
+ closeOnRouteChange: boolean;
137
+ persistKey?: string;
138
+ autoCollapseAfter?: number;
139
+ };
140
+ type EngineFeatureContext = {
141
+ element: HTMLElement;
142
+ scrollContainer?: HTMLElement;
143
+ sheetId: string;
144
+ options: EngineFeatureOptions;
145
+ isDestroyed: () => boolean;
146
+ isDragging: () => boolean;
147
+ isAnimating: () => boolean;
148
+ isTopSheet: () => boolean;
149
+ isVerticalAxis: () => boolean;
150
+ getSize: () => number;
151
+ getActiveId: () => string;
152
+ getAllowedIds: () => string[];
153
+ allowedIdsBySize: () => string[];
154
+ getMaxAxisSize: () => number;
155
+ resolveSnap: (id: string) => {
156
+ id: string;
157
+ size: number;
158
+ } | null;
159
+ resolveActiveSnap: () => {
160
+ id: string;
161
+ size: number;
162
+ } | null;
163
+ setSize: (size: number) => void;
164
+ setMaxAxisSize: (size: number) => void;
165
+ applySize: (size: number) => void;
166
+ recomputeSnaps: () => void;
167
+ newCycle: () => void;
168
+ cancelInFlight: () => void;
169
+ resyncAfterResize: () => void;
170
+ snapTo: (id: string) => void;
171
+ close: (reason?: CloseReason) => Promise<void>;
172
+ attachDragSurface: (surface: HTMLElement, kind: DragSurfaceKind) => (() => void) | void;
173
+ on: <K extends keyof SheetEventMap>(event: K, fn: (payload: SheetEventMap[K]) => void) => () => void;
174
+ addTeardown: (fn: (() => void) | null | undefined) => void;
175
+ };
176
+ type EngineFeature = {
177
+ name: string;
178
+ stage?: EngineFeatureStage;
179
+ install: (ctx: EngineFeatureContext) => (() => void) | void;
180
+ };
123
181
  type TeardownScope = {
124
182
  add: (fn: (() => void) | null | undefined) => void;
125
183
  };
126
184
  type Plugin = {
127
185
  name: string;
128
- install: (engine: BottomSheetEngine, scope: TeardownScope) => void | (() => void);
186
+ install: (engine: BottomSheetCore, scope: TeardownScope) => void | (() => void);
129
187
  };
130
188
  type EngineState = {
131
189
  size: number;
@@ -180,7 +238,7 @@ type ScrimStagesOptions = {
180
238
  };
181
239
 
182
240
  type Listener<K extends keyof SheetEventMap> = (payload: SheetEventMap[K]) => void;
183
- declare class BottomSheetEngine {
241
+ declare class BottomSheetCore {
184
242
  private id;
185
243
  private element;
186
244
  private handle;
@@ -191,6 +249,8 @@ declare class BottomSheetEngine {
191
249
  private mode;
192
250
  private flickVelocity;
193
251
  private dragThreshold;
252
+ private dragFromMode;
253
+ private dragFromContentDefault;
194
254
  private rubberBandEnabled;
195
255
  private scrim;
196
256
  private aria;
@@ -208,8 +268,11 @@ declare class BottomSheetEngine {
208
268
  private activeId;
209
269
  private size;
210
270
  private gesture;
271
+ private contentGesture;
272
+ private detachSheetGesture;
211
273
  private rootEl;
212
274
  private destroyed;
275
+ private restClosed;
213
276
  private currentViewTransition;
214
277
  private currentAbort;
215
278
  private sizeWriteSentinel;
@@ -232,11 +295,16 @@ declare class BottomSheetEngine {
232
295
  private stackEffectPrimed;
233
296
  private fitDeps;
234
297
  private transformTemplate;
298
+ private featureList;
299
+ private featureCtx;
235
300
  constructor(opts: EngineOptions);
301
+ private buildFeatureContext;
302
+ private runFeatureStage;
303
+ private warnOrphanFeatureOptions;
236
304
  get state(): EngineState;
237
305
  on<K extends keyof SheetEventMap>(event: K, fn: Listener<K>): () => void;
238
306
  use(plugin: Plugin): this;
239
- setLinkedSheets(sheets: BottomSheetEngine[]): void;
307
+ setLinkedSheets(sheets: BottomSheetCore[]): void;
240
308
  getAllowedIds(): string[];
241
309
  getResolvedSnaps(): readonly {
242
310
  id: string;
@@ -247,6 +315,7 @@ declare class BottomSheetEngine {
247
315
  signal?: AbortSignal;
248
316
  }, _skipBeforeSnap?: boolean): Promise<void>;
249
317
  private completeSnap;
318
+ private setRestClosed;
250
319
  private emitOpenSequence;
251
320
  private emitCloseSequence;
252
321
  dragTo(targetSize: number, velocityOrOpts?: number | {
@@ -259,6 +328,9 @@ declare class BottomSheetEngine {
259
328
  setPersistent(value: boolean): void;
260
329
  setDisableClose(value: boolean): void;
261
330
  setDisableDrag(value: boolean): void;
331
+ setDragFromContent(value: boolean): void;
332
+ setDragFrom(mode: DragFrom$1): void;
333
+ getDragFrom(): DragFrom$1;
262
334
  isTop(): boolean;
263
335
  depth(): number;
264
336
  expand(): Promise<void>;
@@ -298,9 +370,17 @@ declare class BottomSheetEngine {
298
370
  private updateAriaSlider;
299
371
  private registerInStack;
300
372
  private applyStackDepth;
373
+ private buildGestureDeps;
374
+ private isContentDragAllowed;
375
+ private decideContentDrag;
376
+ private attachDragSurface;
377
+ private sheetDragSurface;
378
+ private canStartSheetDrag;
379
+ private mountSheetGesture;
301
380
  private attach;
302
381
  private attachFeatures;
303
382
  private settleAfterDrag;
383
+ private isDraggingAny;
304
384
  private clearWillChangeIfIdle;
305
385
  private haptic;
306
386
  private applySize;
@@ -310,6 +390,10 @@ declare class BottomSheetEngine {
310
390
  private handleClose;
311
391
  }
312
392
 
393
+ declare class BottomSheetEngine extends BottomSheetCore {
394
+ constructor(opts: EngineOptions);
395
+ }
396
+
313
397
  type TeleportTarget = HTMLElement | string | null | undefined;
314
398
 
315
399
  /** @jsxImportSource solid-js */
@@ -336,6 +420,8 @@ type BottomSheetProps<TId extends string = string> = {
336
420
  persistent?: boolean;
337
421
  disableClose?: boolean;
338
422
  disableDrag?: boolean;
423
+ dragFrom?: EngineOptions["dragFrom"];
424
+ dragFromContent?: boolean;
339
425
  closeOnRouteChange?: boolean;
340
426
  stackEffect?: boolean;
341
427
  teleport?: boolean;