sunpeak 0.5.10 → 0.5.13

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 (104) hide show
  1. package/bin/sunpeak.js +11 -1
  2. package/dist/index.cjs +27 -8
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.js +27 -8
  5. package/dist/index.js.map +1 -1
  6. package/dist/style.css +12 -4
  7. package/package.json +1 -1
  8. package/template/_gitignore +47 -0
  9. package/template/dist/chatgpt/albums.js +49 -0
  10. package/template/dist/chatgpt/carousel.js +49 -0
  11. package/template/dist/chatgpt/counter.js +49 -0
  12. package/template/node_modules/.bin/eslint +21 -0
  13. package/template/node_modules/.bin/eslint-config-prettier +21 -0
  14. package/template/node_modules/.bin/nodemon +21 -0
  15. package/template/node_modules/.bin/prettier +21 -0
  16. package/template/node_modules/.bin/sunpeak +21 -0
  17. package/template/node_modules/.bin/ts-node +21 -0
  18. package/template/node_modules/.bin/ts-node-cwd +21 -0
  19. package/template/node_modules/.bin/ts-node-esm +21 -0
  20. package/template/node_modules/.bin/ts-node-script +21 -0
  21. package/template/node_modules/.bin/ts-node-transpile-only +21 -0
  22. package/template/node_modules/.bin/ts-script +21 -0
  23. package/template/node_modules/.bin/tsc +21 -0
  24. package/template/node_modules/.bin/tsserver +21 -0
  25. package/template/node_modules/.bin/tsx +21 -0
  26. package/template/node_modules/.bin/vite +21 -0
  27. package/template/node_modules/.bin/vitest +21 -0
  28. package/template/node_modules/.vite/deps/@openai_apps-sdk-ui_components_Button.js +20 -0
  29. package/template/node_modules/.vite/deps/@openai_apps-sdk-ui_components_Button.js.map +7 -0
  30. package/template/node_modules/.vite/deps/@openai_apps-sdk-ui_components_Checkbox.js +33 -0
  31. package/template/node_modules/.vite/deps/@openai_apps-sdk-ui_components_Checkbox.js.map +7 -0
  32. package/template/node_modules/.vite/deps/@openai_apps-sdk-ui_components_Icon.js +1498 -0
  33. package/template/node_modules/.vite/deps/@openai_apps-sdk-ui_components_Icon.js.map +7 -0
  34. package/template/node_modules/.vite/deps/@openai_apps-sdk-ui_components_Input.js +13 -0
  35. package/template/node_modules/.vite/deps/@openai_apps-sdk-ui_components_Input.js.map +7 -0
  36. package/template/node_modules/.vite/deps/@openai_apps-sdk-ui_components_SegmentedControl.js +103 -0
  37. package/template/node_modules/.vite/deps/@openai_apps-sdk-ui_components_SegmentedControl.js.map +7 -0
  38. package/template/node_modules/.vite/deps/@openai_apps-sdk-ui_components_Select.js +1019 -0
  39. package/template/node_modules/.vite/deps/@openai_apps-sdk-ui_components_Select.js.map +7 -0
  40. package/template/node_modules/.vite/deps/@openai_apps-sdk-ui_components_Textarea.js +95 -0
  41. package/template/node_modules/.vite/deps/@openai_apps-sdk-ui_components_Textarea.js.map +7 -0
  42. package/template/node_modules/.vite/deps/@openai_apps-sdk-ui_theme.js +45 -0
  43. package/template/node_modules/.vite/deps/@openai_apps-sdk-ui_theme.js.map +7 -0
  44. package/template/node_modules/.vite/deps/_metadata.json +151 -0
  45. package/template/node_modules/.vite/deps/chunk-4TLBUCVB.js +1004 -0
  46. package/template/node_modules/.vite/deps/chunk-4TLBUCVB.js.map +7 -0
  47. package/template/node_modules/.vite/deps/chunk-BAG6OO6S.js +115 -0
  48. package/template/node_modules/.vite/deps/chunk-BAG6OO6S.js.map +7 -0
  49. package/template/node_modules/.vite/deps/chunk-CNYJBM5F.js +21 -0
  50. package/template/node_modules/.vite/deps/chunk-CNYJBM5F.js.map +7 -0
  51. package/template/node_modules/.vite/deps/chunk-CQ3GYAYB.js +112 -0
  52. package/template/node_modules/.vite/deps/chunk-CQ3GYAYB.js.map +7 -0
  53. package/template/node_modules/.vite/deps/chunk-EGRHWZRV.js +1 -0
  54. package/template/node_modules/.vite/deps/chunk-EGRHWZRV.js.map +7 -0
  55. package/template/node_modules/.vite/deps/chunk-EVJ3DVH5.js +628 -0
  56. package/template/node_modules/.vite/deps/chunk-EVJ3DVH5.js.map +7 -0
  57. package/template/node_modules/.vite/deps/chunk-ILHRZGIS.js +46 -0
  58. package/template/node_modules/.vite/deps/chunk-ILHRZGIS.js.map +7 -0
  59. package/template/node_modules/.vite/deps/chunk-KFGKZMLK.js +280 -0
  60. package/template/node_modules/.vite/deps/chunk-KFGKZMLK.js.map +7 -0
  61. package/template/node_modules/.vite/deps/chunk-PTVT3RFX.js +292 -0
  62. package/template/node_modules/.vite/deps/chunk-PTVT3RFX.js.map +7 -0
  63. package/template/node_modules/.vite/deps/chunk-QPJAV452.js +13 -0
  64. package/template/node_modules/.vite/deps/chunk-QPJAV452.js.map +7 -0
  65. package/template/node_modules/.vite/deps/chunk-SGWD4VEU.js +15195 -0
  66. package/template/node_modules/.vite/deps/chunk-SGWD4VEU.js.map +7 -0
  67. package/template/node_modules/.vite/deps/chunk-XB525PXG.js +4480 -0
  68. package/template/node_modules/.vite/deps/chunk-XB525PXG.js.map +7 -0
  69. package/template/node_modules/.vite/deps/chunk-YOJ6QPGS.js +231 -0
  70. package/template/node_modules/.vite/deps/chunk-YOJ6QPGS.js.map +7 -0
  71. package/template/node_modules/.vite/deps/clsx.js +10 -0
  72. package/template/node_modules/.vite/deps/clsx.js.map +7 -0
  73. package/template/node_modules/.vite/deps/embla-carousel-react.js +1712 -0
  74. package/template/node_modules/.vite/deps/embla-carousel-react.js.map +7 -0
  75. package/template/node_modules/.vite/deps/embla-carousel-wheel-gestures.js +589 -0
  76. package/template/node_modules/.vite/deps/embla-carousel-wheel-gestures.js.map +7 -0
  77. package/template/node_modules/.vite/deps/package.json +3 -0
  78. package/template/node_modules/.vite/deps/react-dom.js +7 -0
  79. package/template/node_modules/.vite/deps/react-dom.js.map +7 -0
  80. package/template/node_modules/.vite/deps/react-dom_client.js +20217 -0
  81. package/template/node_modules/.vite/deps/react-dom_client.js.map +7 -0
  82. package/template/node_modules/.vite/deps/react.js +6 -0
  83. package/template/node_modules/.vite/deps/react.js.map +7 -0
  84. package/template/node_modules/.vite/deps/react_jsx-dev-runtime.js +278 -0
  85. package/template/node_modules/.vite/deps/react_jsx-dev-runtime.js.map +7 -0
  86. package/template/node_modules/.vite/deps/react_jsx-runtime.js +7 -0
  87. package/template/node_modules/.vite/deps/react_jsx-runtime.js.map +7 -0
  88. package/template/node_modules/.vite/deps/tailwind-merge.js +3095 -0
  89. package/template/node_modules/.vite/deps/tailwind-merge.js.map +7 -0
  90. package/template/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  91. package/template/src/components/album/album-card.tsx +3 -1
  92. package/template/src/components/album/albums.test.tsx +47 -0
  93. package/template/src/components/album/albums.tsx +15 -2
  94. package/template/src/components/album/fullscreen-viewer.test.tsx +30 -1
  95. package/template/src/components/album/fullscreen-viewer.tsx +17 -3
  96. package/template/src/components/card/card.tsx +3 -0
  97. package/template/src/components/resources/albums-resource.test.tsx +81 -0
  98. package/template/src/components/resources/albums-resource.tsx +18 -1
  99. package/template/src/components/resources/carousel-resource.test.tsx +156 -0
  100. package/template/src/components/resources/carousel-resource.tsx +17 -2
  101. package/template/src/components/resources/counter-resource.test.tsx +116 -0
  102. package/template/src/components/resources/counter-resource.tsx +30 -5
  103. /package/template/{.prettierignore → _prettierignore} +0 -0
  104. /package/template/{.prettierrc → _prettierrc} +0 -0
@@ -0,0 +1,589 @@
1
+ import "./chunk-ILHRZGIS.js";
2
+
3
+ // ../node_modules/.pnpm/wheel-gestures@2.2.48/node_modules/wheel-gestures/dist/wheel-gestures.esm.js
4
+ function _extends() {
5
+ _extends = Object.assign || function(target) {
6
+ for (var i = 1; i < arguments.length; i++) {
7
+ var source = arguments[i];
8
+ for (var key in source) {
9
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
10
+ target[key] = source[key];
11
+ }
12
+ }
13
+ }
14
+ return target;
15
+ };
16
+ return _extends.apply(this, arguments);
17
+ }
18
+ var DECAY = 0.996;
19
+ var projection = function projection2(velocityPxMs, decay) {
20
+ if (decay === void 0) {
21
+ decay = DECAY;
22
+ }
23
+ return velocityPxMs * decay / (1 - decay);
24
+ };
25
+ function lastOf(array) {
26
+ return array[array.length - 1];
27
+ }
28
+ function average(numbers) {
29
+ return numbers.reduce(function(a, b) {
30
+ return a + b;
31
+ }) / numbers.length;
32
+ }
33
+ var clamp = function clamp2(value, min, max) {
34
+ return Math.min(Math.max(min, value), max);
35
+ };
36
+ function addVectors(v1, v2) {
37
+ if (v1.length !== v2.length) {
38
+ throw new Error("vectors must be same length");
39
+ }
40
+ return v1.map(function(val, i) {
41
+ return val + v2[i];
42
+ });
43
+ }
44
+ function absMax(numbers) {
45
+ return Math.max.apply(Math, numbers.map(Math.abs));
46
+ }
47
+ function deepFreeze(o) {
48
+ Object.freeze(o);
49
+ Object.values(o).forEach(function(value) {
50
+ if (value !== null && typeof value === "object" && !Object.isFrozen(value)) {
51
+ deepFreeze(value);
52
+ }
53
+ });
54
+ return o;
55
+ }
56
+ function EventBus() {
57
+ var listeners = {};
58
+ function on(type, listener) {
59
+ listeners[type] = (listeners[type] || []).concat(listener);
60
+ return function() {
61
+ return off(type, listener);
62
+ };
63
+ }
64
+ function off(type, listener) {
65
+ listeners[type] = (listeners[type] || []).filter(function(l) {
66
+ return l !== listener;
67
+ });
68
+ }
69
+ function dispatch(type, data) {
70
+ if (!(type in listeners)) return;
71
+ listeners[type].forEach(function(l) {
72
+ return l(data);
73
+ });
74
+ }
75
+ return deepFreeze({
76
+ on,
77
+ off,
78
+ dispatch
79
+ });
80
+ }
81
+ function WheelTargetObserver(eventListener) {
82
+ var targets = [];
83
+ var observe = function observe2(target) {
84
+ target.addEventListener("wheel", eventListener, {
85
+ passive: false
86
+ });
87
+ targets.push(target);
88
+ return function() {
89
+ return unobserve(target);
90
+ };
91
+ };
92
+ var unobserve = function unobserve2(target) {
93
+ target.removeEventListener("wheel", eventListener);
94
+ targets = targets.filter(function(t) {
95
+ return t !== target;
96
+ });
97
+ };
98
+ var disconnect = function disconnect2() {
99
+ targets.forEach(unobserve);
100
+ };
101
+ return deepFreeze({
102
+ observe,
103
+ unobserve,
104
+ disconnect
105
+ });
106
+ }
107
+ var LINE_HEIGHT = 16 * 1.125;
108
+ var PAGE_HEIGHT = typeof window !== "undefined" && window.innerHeight || 800;
109
+ var DELTA_MODE_UNIT = [1, LINE_HEIGHT, PAGE_HEIGHT];
110
+ function normalizeWheel(e) {
111
+ var deltaX = e.deltaX * DELTA_MODE_UNIT[e.deltaMode];
112
+ var deltaY = e.deltaY * DELTA_MODE_UNIT[e.deltaMode];
113
+ var deltaZ = (e.deltaZ || 0) * DELTA_MODE_UNIT[e.deltaMode];
114
+ return {
115
+ timeStamp: e.timeStamp,
116
+ axisDelta: [deltaX, deltaY, deltaZ]
117
+ };
118
+ }
119
+ var reverseAll = [-1, -1, -1];
120
+ function reverseAxisDeltaSign(wheel, reverseSign) {
121
+ if (!reverseSign) {
122
+ return wheel;
123
+ }
124
+ var multipliers = reverseSign === true ? reverseAll : reverseSign.map(function(shouldReverse) {
125
+ return shouldReverse ? -1 : 1;
126
+ });
127
+ return _extends({}, wheel, {
128
+ axisDelta: wheel.axisDelta.map(function(delta, i) {
129
+ return delta * multipliers[i];
130
+ })
131
+ });
132
+ }
133
+ var DELTA_MAX_ABS = 700;
134
+ var clampAxisDelta = function clampAxisDelta2(wheel) {
135
+ return _extends({}, wheel, {
136
+ axisDelta: wheel.axisDelta.map(function(delta) {
137
+ return clamp(delta, -DELTA_MAX_ABS, DELTA_MAX_ABS);
138
+ })
139
+ });
140
+ };
141
+ var __DEV__ = true;
142
+ var ACC_FACTOR_MIN = 0.6;
143
+ var ACC_FACTOR_MAX = 0.96;
144
+ var WHEELEVENTS_TO_MERGE = 2;
145
+ var WHEELEVENTS_TO_ANALAZE = 5;
146
+ var configDefaults = deepFreeze({
147
+ preventWheelAction: true,
148
+ reverseSign: [true, true, false]
149
+ });
150
+ var WILL_END_TIMEOUT_DEFAULT = 400;
151
+ function createWheelGesturesState() {
152
+ return {
153
+ isStarted: false,
154
+ isStartPublished: false,
155
+ isMomentum: false,
156
+ startTime: 0,
157
+ lastAbsDelta: Infinity,
158
+ axisMovement: [0, 0, 0],
159
+ axisVelocity: [0, 0, 0],
160
+ accelerationFactors: [],
161
+ scrollPoints: [],
162
+ scrollPointsToMerge: [],
163
+ willEndTimeout: WILL_END_TIMEOUT_DEFAULT
164
+ };
165
+ }
166
+ function WheelGestures(optionsParam) {
167
+ if (optionsParam === void 0) {
168
+ optionsParam = {};
169
+ }
170
+ var _EventBus = EventBus(), on = _EventBus.on, off = _EventBus.off, dispatch = _EventBus.dispatch;
171
+ var config = configDefaults;
172
+ var state = createWheelGesturesState();
173
+ var currentEvent;
174
+ var negativeZeroFingerUpSpecialEvent = false;
175
+ var prevWheelEventState;
176
+ var feedWheel = function feedWheel2(wheelEvents) {
177
+ if (Array.isArray(wheelEvents)) {
178
+ wheelEvents.forEach(function(wheelEvent) {
179
+ return processWheelEventData(wheelEvent);
180
+ });
181
+ } else {
182
+ processWheelEventData(wheelEvents);
183
+ }
184
+ };
185
+ var updateOptions = function updateOptions2(newOptions) {
186
+ if (newOptions === void 0) {
187
+ newOptions = {};
188
+ }
189
+ if (Object.values(newOptions).some(function(option) {
190
+ return option === void 0 || option === null;
191
+ })) {
192
+ __DEV__ && console.error("updateOptions ignored! undefined & null options not allowed");
193
+ return config;
194
+ }
195
+ return config = deepFreeze(_extends({}, configDefaults, config, newOptions));
196
+ };
197
+ var publishWheel = function publishWheel2(additionalData) {
198
+ var wheelEventState = _extends({
199
+ event: currentEvent,
200
+ isStart: false,
201
+ isEnding: false,
202
+ isMomentumCancel: false,
203
+ isMomentum: state.isMomentum,
204
+ axisDelta: [0, 0, 0],
205
+ axisVelocity: state.axisVelocity,
206
+ axisMovement: state.axisMovement,
207
+ get axisMovementProjection() {
208
+ return addVectors(wheelEventState.axisMovement, wheelEventState.axisVelocity.map(function(velocity) {
209
+ return projection(velocity);
210
+ }));
211
+ }
212
+ }, additionalData);
213
+ dispatch("wheel", _extends({}, wheelEventState, {
214
+ previous: prevWheelEventState
215
+ }));
216
+ prevWheelEventState = wheelEventState;
217
+ };
218
+ var shouldPreventDefault = function shouldPreventDefault2(deltaMaxAbs, axisDelta) {
219
+ var _config = config, preventWheelAction = _config.preventWheelAction;
220
+ var deltaX = axisDelta[0], deltaY = axisDelta[1], deltaZ = axisDelta[2];
221
+ if (typeof preventWheelAction === "boolean") return preventWheelAction;
222
+ switch (preventWheelAction) {
223
+ case "x":
224
+ return Math.abs(deltaX) >= deltaMaxAbs;
225
+ case "y":
226
+ return Math.abs(deltaY) >= deltaMaxAbs;
227
+ case "z":
228
+ return Math.abs(deltaZ) >= deltaMaxAbs;
229
+ default:
230
+ __DEV__ && console.warn("unsupported preventWheelAction value: " + preventWheelAction, "warn");
231
+ return false;
232
+ }
233
+ };
234
+ var processWheelEventData = function processWheelEventData2(wheelEvent) {
235
+ var _clampAxisDelta = clampAxisDelta(reverseAxisDeltaSign(normalizeWheel(wheelEvent), config.reverseSign)), axisDelta = _clampAxisDelta.axisDelta, timeStamp = _clampAxisDelta.timeStamp;
236
+ var deltaMaxAbs = absMax(axisDelta);
237
+ if (wheelEvent.preventDefault && shouldPreventDefault(deltaMaxAbs, axisDelta)) {
238
+ wheelEvent.preventDefault();
239
+ }
240
+ if (!state.isStarted) {
241
+ start();
242
+ } else if (state.isMomentum && deltaMaxAbs > Math.max(2, state.lastAbsDelta * 2)) {
243
+ end(true);
244
+ start();
245
+ }
246
+ if (deltaMaxAbs === 0 && Object.is && Object.is(wheelEvent.deltaX, -0)) {
247
+ negativeZeroFingerUpSpecialEvent = true;
248
+ return;
249
+ }
250
+ currentEvent = wheelEvent;
251
+ state.axisMovement = addVectors(state.axisMovement, axisDelta);
252
+ state.lastAbsDelta = deltaMaxAbs;
253
+ state.scrollPointsToMerge.push({
254
+ axisDelta,
255
+ timeStamp
256
+ });
257
+ mergeScrollPointsCalcVelocity();
258
+ publishWheel({
259
+ axisDelta,
260
+ isStart: !state.isStartPublished
261
+ });
262
+ state.isStartPublished = true;
263
+ willEnd();
264
+ };
265
+ var mergeScrollPointsCalcVelocity = function mergeScrollPointsCalcVelocity2() {
266
+ if (state.scrollPointsToMerge.length === WHEELEVENTS_TO_MERGE) {
267
+ state.scrollPoints.unshift({
268
+ axisDeltaSum: state.scrollPointsToMerge.map(function(b) {
269
+ return b.axisDelta;
270
+ }).reduce(addVectors),
271
+ timeStamp: average(state.scrollPointsToMerge.map(function(b) {
272
+ return b.timeStamp;
273
+ }))
274
+ });
275
+ updateVelocity();
276
+ state.scrollPointsToMerge.length = 0;
277
+ state.scrollPoints.length = 1;
278
+ if (!state.isMomentum) {
279
+ detectMomentum();
280
+ }
281
+ } else if (!state.isStartPublished) {
282
+ updateStartVelocity();
283
+ }
284
+ };
285
+ var updateStartVelocity = function updateStartVelocity2() {
286
+ state.axisVelocity = lastOf(state.scrollPointsToMerge).axisDelta.map(function(d) {
287
+ return d / state.willEndTimeout;
288
+ });
289
+ };
290
+ var updateVelocity = function updateVelocity2() {
291
+ var _state$scrollPoints = state.scrollPoints, latestScrollPoint = _state$scrollPoints[0], prevScrollPoint = _state$scrollPoints[1];
292
+ if (!prevScrollPoint || !latestScrollPoint) {
293
+ return;
294
+ }
295
+ var deltaTime = latestScrollPoint.timeStamp - prevScrollPoint.timeStamp;
296
+ if (deltaTime <= 0) {
297
+ __DEV__ && console.warn("invalid deltaTime");
298
+ return;
299
+ }
300
+ var velocity = latestScrollPoint.axisDeltaSum.map(function(d) {
301
+ return d / deltaTime;
302
+ });
303
+ var accelerationFactor = velocity.map(function(v, i) {
304
+ return v / (state.axisVelocity[i] || 1);
305
+ });
306
+ state.axisVelocity = velocity;
307
+ state.accelerationFactors.push(accelerationFactor);
308
+ updateWillEndTimeout(deltaTime);
309
+ };
310
+ var updateWillEndTimeout = function updateWillEndTimeout2(deltaTime) {
311
+ var newTimeout = Math.ceil(deltaTime / 10) * 10 * 1.2;
312
+ if (!state.isMomentum) {
313
+ newTimeout = Math.max(100, newTimeout * 2);
314
+ }
315
+ state.willEndTimeout = Math.min(1e3, Math.round(newTimeout));
316
+ };
317
+ var accelerationFactorInMomentumRange = function accelerationFactorInMomentumRange2(accFactor) {
318
+ if (accFactor === 0) return true;
319
+ return accFactor <= ACC_FACTOR_MAX && accFactor >= ACC_FACTOR_MIN;
320
+ };
321
+ var detectMomentum = function detectMomentum2() {
322
+ if (state.accelerationFactors.length >= WHEELEVENTS_TO_ANALAZE) {
323
+ if (negativeZeroFingerUpSpecialEvent) {
324
+ negativeZeroFingerUpSpecialEvent = false;
325
+ if (absMax(state.axisVelocity) >= 0.2) {
326
+ recognizedMomentum();
327
+ return;
328
+ }
329
+ }
330
+ var recentAccelerationFactors = state.accelerationFactors.slice(WHEELEVENTS_TO_ANALAZE * -1);
331
+ var detectedMomentum = recentAccelerationFactors.every(function(accFac) {
332
+ var sameAccFac = !!accFac.reduce(function(f1, f2) {
333
+ return f1 && f1 < 1 && f1 === f2 ? 1 : 0;
334
+ });
335
+ var bothAreInRangeOrZero = accFac.filter(accelerationFactorInMomentumRange).length === accFac.length;
336
+ return sameAccFac || bothAreInRangeOrZero;
337
+ });
338
+ if (detectedMomentum) {
339
+ recognizedMomentum();
340
+ }
341
+ state.accelerationFactors = recentAccelerationFactors;
342
+ }
343
+ };
344
+ var recognizedMomentum = function recognizedMomentum2() {
345
+ state.isMomentum = true;
346
+ };
347
+ var start = function start2() {
348
+ state = createWheelGesturesState();
349
+ state.isStarted = true;
350
+ state.startTime = Date.now();
351
+ prevWheelEventState = void 0;
352
+ negativeZeroFingerUpSpecialEvent = false;
353
+ };
354
+ var willEnd = /* @__PURE__ */ function() {
355
+ var willEndId;
356
+ return function() {
357
+ clearTimeout(willEndId);
358
+ willEndId = setTimeout(end, state.willEndTimeout);
359
+ };
360
+ }();
361
+ var end = function end2(isMomentumCancel) {
362
+ if (isMomentumCancel === void 0) {
363
+ isMomentumCancel = false;
364
+ }
365
+ if (!state.isStarted) return;
366
+ if (state.isMomentum && isMomentumCancel) {
367
+ publishWheel({
368
+ isEnding: true,
369
+ isMomentumCancel: true
370
+ });
371
+ } else {
372
+ publishWheel({
373
+ isEnding: true
374
+ });
375
+ }
376
+ state.isMomentum = false;
377
+ state.isStarted = false;
378
+ };
379
+ var _WheelTargetObserver = WheelTargetObserver(feedWheel), observe = _WheelTargetObserver.observe, unobserve = _WheelTargetObserver.unobserve, disconnect = _WheelTargetObserver.disconnect;
380
+ updateOptions(optionsParam);
381
+ return deepFreeze({
382
+ on,
383
+ off,
384
+ observe,
385
+ unobserve,
386
+ disconnect,
387
+ feedWheel,
388
+ updateOptions
389
+ });
390
+ }
391
+ var wheel_gestures_esm_default = WheelGestures;
392
+
393
+ // ../node_modules/.pnpm/embla-carousel-wheel-gestures@8.1.0_embla-carousel@8.6.0/node_modules/embla-carousel-wheel-gestures/dist/embla-carousel-wheel-gestures.esm.js
394
+ var defaultOptions = {
395
+ active: true,
396
+ breakpoints: {},
397
+ wheelDraggingClass: "is-wheel-dragging",
398
+ forceWheelAxis: void 0,
399
+ target: void 0
400
+ };
401
+ WheelGesturesPlugin.globalOptions = void 0;
402
+ var __DEV__2 = true;
403
+ function WheelGesturesPlugin(userOptions) {
404
+ if (userOptions === void 0) {
405
+ userOptions = {};
406
+ }
407
+ var options;
408
+ var cleanup = function cleanup2() {
409
+ };
410
+ function init(embla, optionsHandler) {
411
+ var _options$target, _options$forceWheelAx;
412
+ var mergeOptions = optionsHandler.mergeOptions, optionsAtMedia = optionsHandler.optionsAtMedia;
413
+ var optionsBase = mergeOptions(defaultOptions, WheelGesturesPlugin.globalOptions);
414
+ var allOptions = mergeOptions(optionsBase, userOptions);
415
+ options = optionsAtMedia(allOptions);
416
+ var engine = embla.internalEngine();
417
+ var targetNode = (_options$target = options.target) != null ? _options$target : embla.containerNode().parentNode;
418
+ var wheelAxis = (_options$forceWheelAx = options.forceWheelAxis) != null ? _options$forceWheelAx : engine.options.axis;
419
+ var wheelGestures = wheel_gestures_esm_default({
420
+ preventWheelAction: wheelAxis,
421
+ reverseSign: [true, true, false]
422
+ });
423
+ function updateSizeRelatedVariables() {
424
+ scrollBoundaryThreshold = (wheelAxis === "x" ? engine.containerRect.width : engine.containerRect.height) / 2;
425
+ }
426
+ var unobserveTargetNode = wheelGestures.observe(targetNode);
427
+ var offWheel = wheelGestures.on("wheel", handleWheel);
428
+ var isStarted = false;
429
+ var startEvent;
430
+ var overBoundaryAccumulation = 0;
431
+ var scrollBoundaryThreshold = 0;
432
+ var blockedWaitUntilGestureEnd = false;
433
+ updateSizeRelatedVariables();
434
+ embla.on("resize", updateSizeRelatedVariables);
435
+ function wheelGestureStarted(state) {
436
+ try {
437
+ startEvent = new MouseEvent("mousedown", state.event);
438
+ dispatchEvent(startEvent);
439
+ } catch (e) {
440
+ if (__DEV__2) {
441
+ console.warn("Legacy browser requires events-polyfill (https://github.com/xiel/embla-carousel-wheel-gestures#legacy-browsers)");
442
+ }
443
+ return cleanup();
444
+ }
445
+ isStarted = true;
446
+ overBoundaryAccumulation = 0;
447
+ addNativeMouseEventListeners();
448
+ if (options.wheelDraggingClass) {
449
+ targetNode.classList.add(options.wheelDraggingClass);
450
+ }
451
+ }
452
+ function wheelGestureEnded(state) {
453
+ isStarted = false;
454
+ dispatchEvent(createRelativeMouseEvent("mouseup", state));
455
+ removeNativeMouseEventListeners();
456
+ if (options.wheelDraggingClass) {
457
+ targetNode.classList.remove(options.wheelDraggingClass);
458
+ }
459
+ }
460
+ function addNativeMouseEventListeners() {
461
+ document.documentElement.addEventListener("mousemove", preventNativeMouseHandler, true);
462
+ document.documentElement.addEventListener("mouseup", preventNativeMouseHandler, true);
463
+ document.documentElement.addEventListener("mousedown", preventNativeMouseHandler, true);
464
+ }
465
+ function removeNativeMouseEventListeners() {
466
+ document.documentElement.removeEventListener("mousemove", preventNativeMouseHandler, true);
467
+ document.documentElement.removeEventListener("mouseup", preventNativeMouseHandler, true);
468
+ document.documentElement.removeEventListener("mousedown", preventNativeMouseHandler, true);
469
+ }
470
+ function preventNativeMouseHandler(e) {
471
+ if (isStarted && e.isTrusted) {
472
+ e.stopImmediatePropagation();
473
+ }
474
+ }
475
+ function createRelativeMouseEvent(type, state) {
476
+ var moveX, moveY;
477
+ if (wheelAxis === engine.options.axis) {
478
+ var _state$axisMovement = state.axisMovement;
479
+ moveX = _state$axisMovement[0];
480
+ moveY = _state$axisMovement[1];
481
+ } else {
482
+ var _state$axisMovement2 = state.axisMovement;
483
+ moveY = _state$axisMovement2[0];
484
+ moveX = _state$axisMovement2[1];
485
+ }
486
+ var _checkIfAtBoundary = checkIfAtBoundary(state), isAtBoundary = _checkIfAtBoundary.isAtBoundary;
487
+ if (isAtBoundary) {
488
+ var progressRatio = Math.min(overBoundaryAccumulation / scrollBoundaryThreshold, 1);
489
+ var dampingFactor = 0.25 + progressRatio * 0.5;
490
+ var counterMoveSign = moveX > 0 ? -1 : 1;
491
+ var counterMovement = overBoundaryAccumulation * counterMoveSign;
492
+ var dampingMovement = counterMovement * dampingFactor;
493
+ moveX += dampingMovement;
494
+ moveY += dampingMovement;
495
+ }
496
+ if (!engine.options.skipSnaps && !engine.options.dragFree) {
497
+ var maxX = engine.containerRect.width;
498
+ var maxY = engine.containerRect.height;
499
+ moveX = moveX < 0 ? Math.max(moveX, -maxX) : Math.min(moveX, maxX);
500
+ moveY = moveY < 0 ? Math.max(moveY, -maxY) : Math.min(moveY, maxY);
501
+ }
502
+ return new MouseEvent(type, {
503
+ clientX: startEvent.clientX + moveX,
504
+ clientY: startEvent.clientY + moveY,
505
+ screenX: startEvent.screenX + moveX,
506
+ screenY: startEvent.screenY + moveY,
507
+ movementX: moveX,
508
+ movementY: moveY,
509
+ button: 0,
510
+ bubbles: true,
511
+ cancelable: true,
512
+ composed: true
513
+ });
514
+ }
515
+ function dispatchEvent(event) {
516
+ embla.containerNode().dispatchEvent(event);
517
+ }
518
+ function checkIfAtBoundary(state) {
519
+ var _state$axisDelta = state.axisDelta, deltaX = _state$axisDelta[0], deltaY = _state$axisDelta[1];
520
+ var scrollProgress = embla.scrollProgress();
521
+ var canScrollNext = scrollProgress < 1;
522
+ var canScrollPrev = scrollProgress > 0;
523
+ var primaryAxisDelta = wheelAxis === "x" ? deltaX : deltaY;
524
+ var isScrollingNext = primaryAxisDelta < 0;
525
+ var isScrollingPrev = primaryAxisDelta > 0;
526
+ var isAtBoundary = isScrollingNext && !canScrollNext || isScrollingPrev && !canScrollPrev;
527
+ return {
528
+ isAtBoundary,
529
+ primaryAxisDelta
530
+ };
531
+ }
532
+ function isBoundaryThresholdReached(state) {
533
+ var _checkIfAtBoundary2 = checkIfAtBoundary(state), isAtBoundary = _checkIfAtBoundary2.isAtBoundary, primaryAxisDelta = _checkIfAtBoundary2.primaryAxisDelta;
534
+ if (isAtBoundary && !state.isMomentum) {
535
+ overBoundaryAccumulation += Math.abs(primaryAxisDelta);
536
+ if (overBoundaryAccumulation > scrollBoundaryThreshold) {
537
+ blockedWaitUntilGestureEnd = true;
538
+ wheelGestureEnded(state);
539
+ return true;
540
+ }
541
+ } else {
542
+ overBoundaryAccumulation = 0;
543
+ }
544
+ return false;
545
+ }
546
+ function handleWheel(state) {
547
+ var _state$axisDelta2 = state.axisDelta, deltaX = _state$axisDelta2[0], deltaY = _state$axisDelta2[1];
548
+ var primaryAxisDelta = wheelAxis === "x" ? deltaX : deltaY;
549
+ var crossAxisDelta = wheelAxis === "x" ? deltaY : deltaX;
550
+ var isRelease = state.isMomentum && state.previous && !state.previous.isMomentum;
551
+ var isEndingOrRelease = state.isEnding && !state.isMomentum || isRelease;
552
+ var primaryAxisDeltaIsDominant = Math.abs(primaryAxisDelta) > Math.abs(crossAxisDelta);
553
+ if (primaryAxisDeltaIsDominant && !isStarted && !state.isMomentum && !blockedWaitUntilGestureEnd) {
554
+ wheelGestureStarted(state);
555
+ }
556
+ if (blockedWaitUntilGestureEnd && state.isEnding) {
557
+ blockedWaitUntilGestureEnd = false;
558
+ }
559
+ if (!isStarted) return;
560
+ if (isBoundaryThresholdReached(state)) return;
561
+ if (isEndingOrRelease) {
562
+ wheelGestureEnded(state);
563
+ } else {
564
+ dispatchEvent(createRelativeMouseEvent("mousemove", state));
565
+ }
566
+ }
567
+ cleanup = function cleanup2() {
568
+ unobserveTargetNode();
569
+ offWheel();
570
+ embla.off("resize", updateSizeRelatedVariables);
571
+ removeNativeMouseEventListeners();
572
+ };
573
+ }
574
+ var self = {
575
+ name: "wheelGestures",
576
+ options: userOptions,
577
+ init,
578
+ destroy: function destroy() {
579
+ return cleanup();
580
+ }
581
+ };
582
+ return self;
583
+ }
584
+ var embla_carousel_wheel_gestures_esm_default = WheelGesturesPlugin;
585
+ export {
586
+ WheelGesturesPlugin,
587
+ embla_carousel_wheel_gestures_esm_default as default
588
+ };
589
+ //# sourceMappingURL=embla-carousel-wheel-gestures.js.map