solid-slider 1.3.18 → 1.3.20

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.
@@ -5,99 +5,6 @@ var utils = require('@solid-primitives/utils');
5
5
  var KeenSlider = require('keen-slider');
6
6
  var web = require('solid-js/web');
7
7
 
8
- function ownKeys(object, enumerableOnly) {
9
- var keys = Object.keys(object);
10
- if (Object.getOwnPropertySymbols) {
11
- var symbols = Object.getOwnPropertySymbols(object);
12
- enumerableOnly && (symbols = symbols.filter(function (sym) {
13
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
14
- })), keys.push.apply(keys, symbols);
15
- }
16
- return keys;
17
- }
18
- function _objectSpread2(target) {
19
- for (var i = 1; i < arguments.length; i++) {
20
- var source = null != arguments[i] ? arguments[i] : {};
21
- i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
22
- _defineProperty(target, key, source[key]);
23
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
24
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
25
- });
26
- }
27
- return target;
28
- }
29
- function _defineProperty(obj, key, value) {
30
- if (key in obj) {
31
- Object.defineProperty(obj, key, {
32
- value: value,
33
- enumerable: true,
34
- configurable: true,
35
- writable: true
36
- });
37
- } else {
38
- obj[key] = value;
39
- }
40
- return obj;
41
- }
42
- function _slicedToArray(arr, i) {
43
- return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
44
- }
45
- function _toConsumableArray(arr) {
46
- return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
47
- }
48
- function _arrayWithoutHoles(arr) {
49
- if (Array.isArray(arr)) return _arrayLikeToArray(arr);
50
- }
51
- function _arrayWithHoles(arr) {
52
- if (Array.isArray(arr)) return arr;
53
- }
54
- function _iterableToArray(iter) {
55
- if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
56
- }
57
- function _iterableToArrayLimit(arr, i) {
58
- var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
59
- if (_i == null) return;
60
- var _arr = [];
61
- var _n = true;
62
- var _d = false;
63
- var _s, _e;
64
- try {
65
- for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
66
- _arr.push(_s.value);
67
- if (i && _arr.length === i) break;
68
- }
69
- } catch (err) {
70
- _d = true;
71
- _e = err;
72
- } finally {
73
- try {
74
- if (!_n && _i["return"] != null) _i["return"]();
75
- } finally {
76
- if (_d) throw _e;
77
- }
78
- }
79
- return _arr;
80
- }
81
- function _unsupportedIterableToArray(o, minLen) {
82
- if (!o) return;
83
- if (typeof o === "string") return _arrayLikeToArray(o, minLen);
84
- var n = Object.prototype.toString.call(o).slice(8, -1);
85
- if (n === "Object" && o.constructor) n = o.constructor.name;
86
- if (n === "Map" || n === "Set") return Array.from(o);
87
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
88
- }
89
- function _arrayLikeToArray(arr, len) {
90
- if (len == null || len > arr.length) len = arr.length;
91
- for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
92
- return arr2;
93
- }
94
- function _nonIterableSpread() {
95
- throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
96
- }
97
- function _nonIterableRest() {
98
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
99
- }
100
-
101
8
  /**
102
9
  * Creates a slider powered by KeenSlider.
103
10
  *
@@ -119,82 +26,54 @@ function _nonIterableRest() {
119
26
  * <div use:slider>...</div>
120
27
  * ```
121
28
  */
122
- var createSlider = function createSlider(options) {
123
- var _opts;
124
- for (var _len = arguments.length, plugins = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
125
- plugins[_key - 1] = arguments[_key];
126
- }
127
- var _slider3;
128
- var el;
129
- var opts = function opts() {
130
- return utils.access(options);
131
- };
132
- var _createSignal = solidJs.createSignal(((_opts = opts()) === null || _opts === void 0 ? void 0 : _opts.initial) || 0),
133
- _createSignal2 = _slicedToArray(_createSignal, 2),
134
- current = _createSignal2[0],
135
- setCurrent = _createSignal2[1];
136
- var destroy = function destroy() {
137
- return _slider3 && _slider3.destroy();
138
- };
139
- var getOptions = function getOptions() {
140
- var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
141
- return _objectSpread2(_objectSpread2({
142
- selector: el.childNodes
143
- }, opts()), overrides);
144
- };
145
- var update = function update() {
146
- var _slider;
147
- return (_slider = _slider3) === null || _slider === void 0 ? void 0 : _slider.update(getOptions());
148
- };
29
+ const createSlider = (options, ...plugins) => {
30
+ let slider;
31
+ let el;
32
+ const opts = () => utils.access(options);
33
+ const [current, setCurrent] = solidJs.createSignal(opts()?.initial || 0);
34
+ const destroy = () => slider && slider.destroy();
35
+ const getOptions = (overrides = {}
36
+ // @ts-ignore
37
+ ) => ({
38
+ selector: el.childNodes,
39
+ ...opts(),
40
+ ...overrides
41
+ });
42
+ const update = () => slider?.update(getOptions());
149
43
  // Slider creation method and directive function
150
- var create = function create(newEl) {
44
+ const create = newEl => {
151
45
  el = newEl;
152
46
  el.classList.add("keen-slider");
153
- solidJs.onMount(function () {
154
- _slider3 = new KeenSlider(el, getOptions(), plugins);
155
- _slider3.on("slideChanged", function () {
156
- return setCurrent(_slider3.track.details.rel);
157
- });
47
+ solidJs.onMount(() => {
48
+ slider = new KeenSlider(el, getOptions(), plugins);
49
+ slider.on("slideChanged", () => setCurrent(slider.track.details.rel));
158
50
  });
159
51
  solidJs.onCleanup(destroy);
160
52
  if (typeof options === "function") {
161
- solidJs.createEffect(solidJs.on(function () {
162
- return options;
163
- }, update));
53
+ solidJs.createEffect(solidJs.on(() => options, update));
164
54
  }
165
55
  };
166
- var moveTo = function moveTo(id) {
167
- var _slider2;
168
- var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 250;
169
- var absolute = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
170
- var easing = arguments.length > 3 ? arguments[3] : undefined;
171
- (_slider2 = _slider3) === null || _slider2 === void 0 ? void 0 : _slider2.moveToIdx(id, absolute, {
172
- duration: duration,
56
+ const moveTo = (id, duration = 250, absolute = false, easing) => {
57
+ slider?.moveToIdx(id, absolute, {
58
+ duration,
173
59
  easing: easing
174
60
  });
175
61
  };
176
62
  return [create, {
177
- current: current,
178
- next: function next() {
179
- return _slider3 && _slider3.next();
180
- },
181
- prev: function prev() {
182
- return _slider3 && _slider3.prev();
183
- },
184
- details: function details() {
185
- return _slider3 ? _slider3.track.details : {};
186
- },
187
- slider: function slider() {
188
- return _slider3;
189
- },
190
- moveTo: moveTo,
191
- destroy: destroy,
192
- update: update
63
+ current,
64
+ next: () => slider && slider.next(),
65
+ prev: () => slider && slider.prev(),
66
+ details: () => slider ? slider.track.details : {},
67
+ slider: () => slider,
68
+ moveTo,
69
+ destroy,
70
+ update
193
71
  }];
194
72
  };
195
73
 
196
- const _tmpl$ = /*#__PURE__*/web.template(`<div class="keen-slider"></div>`, 2),
197
- _tmpl$2 = /*#__PURE__*/web.template(`<button></button>`, 2);
74
+ const _tmpl$ = /*#__PURE__*/web.template(`<div class="keen-slider">`),
75
+ _tmpl$2 = /*#__PURE__*/web.template(`<button>`),
76
+ _tmpl$3 = /*#__PURE__*/web.template(`<div>`);
198
77
 
199
78
  // The following is a hacky way of extracting SliderHelpers
200
79
 
@@ -202,7 +81,7 @@ function returnType(func) {
202
81
  return {};
203
82
  }
204
83
  // Main context for the slider
205
- var SliderContext = solidJs.createContext(solidJs.createSignal(null));
84
+ const SliderContext = solidJs.createContext(solidJs.createSignal(null));
206
85
 
207
86
  /**
208
87
  * A helpful and simple Provider to wrap your Slider if controls such as SliderButton are used.
@@ -210,16 +89,14 @@ var SliderContext = solidJs.createContext(solidJs.createSignal(null));
210
89
  * @param props {KeenSliderOptions} options - Accepts all KeenSlider options.
211
90
  * @param props {KeenSLiderPlugin} plugins - A list of Solid Slider or Keen slider plugins.
212
91
  */
213
- var SliderProvider = function SliderProvider(props) {
214
- return web.createComponent(SliderContext.Provider, {
215
- get value() {
216
- return solidJs.createSignal(null);
217
- },
218
- get children() {
219
- return props.children;
220
- }
221
- });
222
- };
92
+ const SliderProvider = props => web.createComponent(SliderContext.Provider, {
93
+ get value() {
94
+ return solidJs.createSignal(null);
95
+ },
96
+ get children() {
97
+ return props.children;
98
+ }
99
+ });
223
100
 
224
101
  /**
225
102
  * Main Slider component for specifying the Slider on the page.
@@ -227,41 +104,24 @@ var SliderProvider = function SliderProvider(props) {
227
104
  * @param props {KeenSliderOptions} options - Accepts all KeenSlider options.
228
105
  * @param props {KeenSLiderPlugin} plugins - A list of Solid Slider or Keen slider plugins.
229
106
  */
230
- var Slider = function Slider(props) {
231
- if (web.isServer) return function () {
232
- var _el$ = _tmpl$.cloneNode(true);
233
- web.insert(_el$, function () {
234
- return props.children;
235
- });
107
+ const Slider = props => {
108
+ if (web.isServer) return (() => {
109
+ const _el$ = _tmpl$();
110
+ web.insert(_el$, () => props.children);
236
111
  return _el$;
237
- }();
238
- var _useContext = solidJs.useContext(SliderContext),
239
- _useContext2 = _slicedToArray(_useContext, 2),
240
- setHelpers = _useContext2[1];
241
- var _createSlider = createSlider.apply(void 0, [props.options || {}].concat(_toConsumableArray(props.plugins || []))),
242
- _createSlider2 = _slicedToArray(_createSlider, 2),
243
- slider = _createSlider2[0],
244
- helpers = _createSlider2[1];
112
+ })();
113
+ const [, setHelpers] = solidJs.useContext(SliderContext);
114
+ const [slider, helpers] = createSlider(props.options || {}, ...(props.plugins || []));
245
115
  setHelpers(helpers);
246
- solidJs.createEffect(solidJs.on(function () {
247
- return utils.access(props.children);
248
- }, function () {
249
- return queueMicrotask(function () {
250
- return helpers.update();
251
- });
252
- }, {
116
+ solidJs.createEffect(solidJs.on(() => utils.access(props.children), () => queueMicrotask(() => helpers.update()), {
253
117
  defer: true
254
118
  }));
255
- return function () {
256
- var _el$2 = _tmpl$.cloneNode(true);
257
- slider(_el$2, function () {
258
- return true;
259
- });
260
- web.insert(_el$2, function () {
261
- return props.children;
262
- });
119
+ return (() => {
120
+ const _el$2 = _tmpl$();
121
+ web.use(slider, _el$2, () => true);
122
+ web.insert(_el$2, () => props.children);
263
123
  return _el$2;
264
- }();
124
+ })();
265
125
  };
266
126
 
267
127
  /**
@@ -272,27 +132,23 @@ var Slider = function Slider(props) {
272
132
  * @param props {string} class - Class to override the button.
273
133
  * @param props {object} classList - List of classes to override the button.
274
134
  */
275
- var SliderButton = function SliderButton(props) {
276
- var context = solidJs.useContext(SliderContext);
277
- var changeSlide = function changeSlide() {
278
- var _helpers, _helpers2;
135
+ const SliderButton = props => {
136
+ const context = solidJs.useContext(SliderContext);
137
+ const changeSlide = () => {
279
138
  if (context == null) return;
280
- var _context = _slicedToArray(context, 1),
281
- helpers = _context[0];
282
- props.next ? (_helpers = helpers()) === null || _helpers === void 0 ? void 0 : _helpers.next() : (_helpers2 = helpers()) === null || _helpers2 === void 0 ? void 0 : _helpers2.prev();
139
+ const [helpers] = context;
140
+ props.next ? helpers()?.next() : helpers()?.prev();
283
141
  };
284
- return function () {
285
- var _el$3 = _tmpl$2.cloneNode(true);
142
+ return (() => {
143
+ const _el$3 = _tmpl$2();
286
144
  _el$3.$$click = changeSlide;
287
- web.insert(_el$3, function () {
288
- return props.children;
289
- });
290
- web.effect(function (_p$) {
291
- var _v$ = props.disabled || false,
292
- _v$2 = props["class"],
145
+ web.insert(_el$3, () => props.children);
146
+ web.effect(_p$ => {
147
+ const _v$ = props.disabled || false,
148
+ _v$2 = props.class,
293
149
  _v$3 = props.classList;
294
150
  _v$ !== _p$._v$ && (_el$3.disabled = _p$._v$ = _v$);
295
- _v$2 !== _p$._v$2 && (_el$3.className = _p$._v$2 = _v$2);
151
+ _v$2 !== _p$._v$2 && web.className(_el$3, _p$._v$2 = _v$2);
296
152
  _p$._v$3 = web.classList(_el$3, _v$3, _p$._v$3);
297
153
  return _p$;
298
154
  }, {
@@ -301,14 +157,219 @@ var SliderButton = function SliderButton(props) {
301
157
  _v$3: undefined
302
158
  });
303
159
  return _el$3;
304
- }();
160
+ })();
161
+ };
162
+
163
+ /**
164
+ * Navigation dots component for the slider.
165
+ * Displays a dot for each slide and highlights the current slide.
166
+ *
167
+ * @param props {string} class - Class to override the dots container.
168
+ * @param props {object} classList - List of classes to override the dots container.
169
+ * @param props {string} dotClass - Class to override individual dots.
170
+ * @param props {object} dotClassList - List of classes to override individual dots.
171
+ *
172
+ * @example
173
+ * ```tsx
174
+ * <SliderProvider>
175
+ * <Slider>
176
+ * <div class="keen-slider__slide">Slide 1</div>
177
+ * <div class="keen-slider__slide">Slide 2</div>
178
+ * </Slider>
179
+ * <SliderDots />
180
+ * </SliderProvider>
181
+ * ```
182
+ */
183
+ const SliderDots = props => {
184
+ const context = solidJs.useContext(SliderContext);
185
+ const [slideCount, setSlideCount] = solidJs.createSignal(0);
186
+ const handleDotClick = idx => {
187
+ if (context == null) return;
188
+ const [helpers] = context;
189
+ helpers()?.moveTo(idx);
190
+ };
191
+
192
+ // Update slide count when slider is created/updated
193
+ solidJs.createEffect(() => {
194
+ if (!context) return;
195
+ const [helpers] = context;
196
+ const sliderInstance = helpers()?.slider();
197
+ if (sliderInstance) {
198
+ const updateCount = () => {
199
+ const details = helpers()?.details();
200
+ setSlideCount(details?.slides?.length || 0);
201
+ };
202
+
203
+ // Set initial count
204
+ updateCount();
205
+
206
+ // Listen for slider changes
207
+ sliderInstance.on("created", updateCount);
208
+ sliderInstance.on("updated", updateCount);
209
+ }
210
+ });
211
+ const slides = solidJs.createMemo(() => Array.from({
212
+ length: slideCount()
213
+ }, (_, i) => i));
214
+ return web.createComponent(solidJs.Show, {
215
+ when: context != null,
216
+ get children() {
217
+ const _el$4 = _tmpl$3();
218
+ web.insert(_el$4, web.createComponent(solidJs.Index, {
219
+ get each() {
220
+ return slides();
221
+ },
222
+ children: idx => {
223
+ const [helpers] = context;
224
+ const isActive = () => helpers()?.current() === idx();
225
+ return (() => {
226
+ const _el$5 = _tmpl$2();
227
+ _el$5.$$click = () => handleDotClick(idx());
228
+ web.effect(_p$ => {
229
+ const _v$6 = props.dotClass || "keen-slider-dot",
230
+ _v$7 = {
231
+ ...props.dotClassList,
232
+ active: isActive()
233
+ },
234
+ _v$8 = `Go to slide ${idx() + 1}`;
235
+ _v$6 !== _p$._v$6 && web.className(_el$5, _p$._v$6 = _v$6);
236
+ _p$._v$7 = web.classList(_el$5, _v$7, _p$._v$7);
237
+ _v$8 !== _p$._v$8 && web.setAttribute(_el$5, "aria-label", _p$._v$8 = _v$8);
238
+ return _p$;
239
+ }, {
240
+ _v$6: undefined,
241
+ _v$7: undefined,
242
+ _v$8: undefined
243
+ });
244
+ return _el$5;
245
+ })();
246
+ }
247
+ }));
248
+ web.effect(_p$ => {
249
+ const _v$4 = props.class || "keen-slider-dots",
250
+ _v$5 = props.classList;
251
+ _v$4 !== _p$._v$4 && web.className(_el$4, _p$._v$4 = _v$4);
252
+ _p$._v$5 = web.classList(_el$4, _v$5, _p$._v$5);
253
+ return _p$;
254
+ }, {
255
+ _v$4: undefined,
256
+ _v$5: undefined
257
+ });
258
+ return _el$4;
259
+ }
260
+ });
261
+ };
262
+
263
+ /**
264
+ * Thumbnail navigation component for the slider.
265
+ * A second Slider that synchronizes with the main slider.
266
+ * User provides thumbnail slides as children.
267
+ *
268
+ * @param props {KeenSliderOptions} options - Options for the thumbnail slider.
269
+ * @param props {KeenSliderPlugin[]} plugins - Plugins for the thumbnail slider.
270
+ *
271
+ * @example
272
+ * ```tsx
273
+ * <SliderProvider>
274
+ * <Slider options={{ loop: true }}>
275
+ * <div class="keen-slider__slide">
276
+ * <img src="slide1.jpg" alt="Slide 1" />
277
+ * </div>
278
+ * <div class="keen-slider__slide">
279
+ * <img src="slide2.jpg" alt="Slide 2" />
280
+ * </div>
281
+ * </Slider>
282
+ * <SliderThumbnails options={{ slides: { perView: 4, spacing: 10 } }}>
283
+ * <div class="keen-slider__slide">
284
+ * <img src="thumb1.jpg" alt="Thumbnail 1" />
285
+ * </div>
286
+ * <div class="keen-slider__slide">
287
+ * <img src="thumb2.jpg" alt="Thumbnail 2" />
288
+ * </div>
289
+ * </SliderThumbnails>
290
+ * </SliderProvider>
291
+ * ```
292
+ */
293
+ const SliderThumbnails = props => {
294
+ if (web.isServer) return (() => {
295
+ const _el$6 = _tmpl$3();
296
+ web.insert(_el$6, () => props.children);
297
+ return _el$6;
298
+ })();
299
+ const mainContext = solidJs.useContext(SliderContext);
300
+ if (!mainContext) {
301
+ console.warn("SliderThumbnails must be used within a SliderProvider");
302
+ return (() => {
303
+ const _el$7 = _tmpl$3();
304
+ web.insert(_el$7, () => props.children);
305
+ return _el$7;
306
+ })();
307
+ }
308
+ const [mainHelpers] = mainContext;
309
+
310
+ // Create thumbnail slider with user options
311
+ const [thumbSlider, thumbHelpers] = createSlider(props.options || {}, ...(props.plugins || []));
312
+
313
+ // Update on children change (same as main Slider)
314
+ solidJs.createEffect(solidJs.on(() => utils.access(props.children), () => queueMicrotask(() => thumbHelpers.update()), {
315
+ defer: true
316
+ }));
317
+
318
+ // Sync thumbnail slider with main slider
319
+ solidJs.onMount(() => {
320
+ // Wait for next tick to ensure both sliders are mounted
321
+ queueMicrotask(() => {
322
+ const mainSliderInstance = mainHelpers()?.slider();
323
+ const thumbSliderInstance = thumbHelpers.slider();
324
+ if (mainSliderInstance && thumbSliderInstance) {
325
+ // Function to update active thumbnail
326
+ const activeClassName = props.activeClass || "active";
327
+ const updateActiveThumbnail = () => {
328
+ const mainCurrent = mainHelpers()?.current();
329
+ if (mainCurrent !== undefined) {
330
+ // Remove active class from all thumbnails
331
+ thumbSliderInstance.slides.forEach(slide => {
332
+ slide.classList.remove(activeClassName);
333
+ });
334
+ // Add active class to current thumbnail
335
+ if (thumbSliderInstance.slides[mainCurrent]) {
336
+ thumbSliderInstance.slides[mainCurrent].classList.add(activeClassName);
337
+ }
338
+ // Move thumbnail slider to show active thumbnail
339
+ thumbHelpers.moveTo(mainCurrent);
340
+ }
341
+ };
342
+
343
+ // Listen to main slider changes
344
+ mainSliderInstance.on("slideChanged", updateActiveThumbnail);
345
+
346
+ // Set initial active state
347
+ updateActiveThumbnail();
348
+
349
+ // Add click handlers to thumbnails
350
+ thumbSliderInstance.slides.forEach((slide, idx) => {
351
+ slide.addEventListener("click", () => {
352
+ mainHelpers()?.moveTo(idx);
353
+ });
354
+ });
355
+ }
356
+ });
357
+ });
358
+ return (() => {
359
+ const _el$8 = _tmpl$3();
360
+ web.use(thumbSlider, _el$8, () => true);
361
+ web.insert(_el$8, () => props.children);
362
+ return _el$8;
363
+ })();
305
364
  };
306
365
  web.delegateEvents(["click"]);
307
366
 
308
367
  exports.Slider = Slider;
309
368
  exports.SliderButton = SliderButton;
310
369
  exports.SliderContext = SliderContext;
370
+ exports.SliderDots = SliderDots;
311
371
  exports.SliderProvider = SliderProvider;
372
+ exports.SliderThumbnails = SliderThumbnails;
312
373
  exports.createSlider = createSlider;
313
374
  exports.returnType = returnType;
314
375
  //# sourceMappingURL=index.common.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.common.js","sources":["../../src/primitive.ts","../../src/components.tsx"],"sourcesContent":["import {\n on,\n onMount,\n createSignal,\n onCleanup,\n Accessor,\n createEffect,\n} from \"solid-js\";\nimport { access } from \"@solid-primitives/utils\";\nimport KeenSlider, {\n KeenSliderHooks,\n KeenSliderInstance,\n KeenSliderOptions,\n KeenSliderPlugin,\n TrackDetails,\n} from \"keen-slider\";\n\ndeclare module \"solid-js\" {\n namespace JSX {\n interface Directives {\n slider: {};\n }\n }\n}\n\nexport type SliderControls<O, P, H extends string> = [\n create: (el: HTMLElement) => void,\n helpers: {\n current: Accessor<number>;\n next: VoidFunction;\n prev: VoidFunction;\n moveTo: (\n id: number,\n duration?: number,\n absolute?: boolean,\n easing?: (t: number) => number,\n ) => void;\n details: () => TrackDetails;\n slider: () => KeenSliderInstance<O, P, H> | undefined;\n destroy: VoidFunction;\n update: VoidFunction;\n },\n];\n\n/**\n * Creates a slider powered by KeenSlider.\n *\n * @param {Object} options Values to initialize the slider with\n * @param {Array} plugins Extensions that enhance KeenSlider options\n * @returns {[create: Function, helpers: Object]} Returns mount and helper methods\n * @returns {Function} create Mounts the slider on provided element\n * @returns {Function} helpers.current Current slide number\n * @returns {Function} helpers.current Current slide number\n * @returns {Function} helpers.next Function to trigger the next slide\n * @returns {Function} helpers.prev Function to trigger the previous slide\n * @returns {Function<Object>} helpers.details Provides details about the current slider\n * @returns {Function} helpers.slider Returns the KeenSlider instance\n * @returns {Function} helpers.destroy Manual destroy function\n *\n * @example\n * ```ts\n * const [create, { prev, next }] = createSlider();\n * <div use:slider>...</div>\n * ```\n */\nexport const createSlider = <\n O = {},\n P = {},\n H extends string = KeenSliderHooks,\n>(\n options?: KeenSliderOptions<O, P, H> | Accessor<KeenSliderOptions<O, P, H>>,\n ...plugins: KeenSliderPlugin<O, P, H>[]\n): SliderControls<O, P, H> => {\n let slider: KeenSliderInstance<O, P, H> | undefined;\n let el: HTMLElement;\n const opts = () => access(options);\n const [current, setCurrent] = createSignal(opts()?.initial || 0);\n const destroy = () => slider && slider.destroy();\n const getOptions: Accessor<KeenSliderOptions<O, P, H> | undefined> = (\n overrides = {},\n // @ts-ignore\n ) => ({\n selector: el.childNodes,\n ...opts(),\n ...overrides,\n });\n const update = () => slider?.update(getOptions());\n // Slider creation method and directive function\n const create = (newEl: HTMLElement) => {\n el = newEl;\n el.classList.add(\"keen-slider\");\n onMount(() => {\n slider = new KeenSlider<O, P, H>(el, getOptions(), plugins);\n slider.on(\"slideChanged\", () => setCurrent(slider!.track.details.rel));\n });\n onCleanup(destroy);\n if (typeof options === \"function\") {\n createEffect(on(() => options, update));\n }\n };\n const moveTo = (\n id: number,\n duration = 250,\n absolute = false,\n easing?: (t: number) => number,\n ) => {\n slider?.moveToIdx(id, absolute, { duration, easing: easing });\n };\n return [\n create,\n {\n current,\n next: () => slider && slider.next(),\n prev: () => slider && slider.prev(),\n details: () => (slider ? slider.track.details : ({} as TrackDetails)),\n slider: () => slider,\n moveTo,\n destroy,\n update,\n },\n ];\n};\n","import {\n on,\n createContext,\n useContext,\n createSignal,\n FlowComponent,\n createEffect,\n} from \"solid-js\";\nimport { access } from \"@solid-primitives/utils\";\nimport { isServer } from \"solid-js/web\";\nimport { KeenSliderOptions, KeenSliderPlugin } from \"keen-slider\";\nimport { createSlider } from \"./primitive\";\n\n// The following is a hacky way of extracting SliderHelpers\ninterface Func<T> {\n ([...args]: any, args2?: any): T;\n}\nexport function returnType<T>(func: Func<T>) {\n return {} as T;\n}\nconst sliderValues = returnType(createSlider);\ntype SliderHelpers = (typeof sliderValues)[1];\n\n// Main context for the slider\nexport const SliderContext = createContext(\n createSignal<SliderHelpers | null>(null),\n);\n\n/**\n * A helpful and simple Provider to wrap your Slider if controls such as SliderButton are used.\n *\n * @param props {KeenSliderOptions} options - Accepts all KeenSlider options.\n * @param props {KeenSLiderPlugin} plugins - A list of Solid Slider or Keen slider plugins.\n */\nexport const SliderProvider: FlowComponent = (props) => (\n <SliderContext.Provider value={createSignal<SliderHelpers | null>(null)}>\n {props.children}\n </SliderContext.Provider>\n);\n\n/**\n * Main Slider component for specifying the Slider on the page.\n *\n * @param props {KeenSliderOptions} options - Accepts all KeenSlider options.\n * @param props {KeenSLiderPlugin} plugins - A list of Solid Slider or Keen slider plugins.\n */\nexport const Slider: FlowComponent<{\n options?: KeenSliderOptions;\n plugins?: KeenSliderPlugin[];\n}> = (props) => {\n if (isServer) return <div class=\"keen-slider\">{props.children}</div>;\n const [, setHelpers] = useContext(SliderContext);\n const [slider, helpers] = createSlider(\n props.options || {},\n ...(props.plugins || []),\n );\n setHelpers(helpers);\n createEffect(\n on(\n () => access(props.children),\n () => queueMicrotask(() => helpers.update()),\n { defer: true },\n ),\n );\n slider;\n return (\n <div use:slider class=\"keen-slider\">\n {props.children}\n </div>\n );\n};\n\n/**\n * Provides a helpful button with next/prev to pair with your slider.\n *\n * @param props {boolean} next - Specify if this should be a next button.\n * @param props {boolean} prev - Specify if this should be a prev button.\n * @param props {string} class - Class to override the button.\n * @param props {object} classList - List of classes to override the button.\n */\nexport const SliderButton: FlowComponent<{\n next?: boolean;\n prev?: boolean;\n disabled?: boolean;\n class?: string;\n classList?: { [k: string]: boolean | undefined };\n}> = (props) => {\n const context = useContext(SliderContext);\n const changeSlide = () => {\n if (context == null) return;\n const [helpers] = context;\n props.next ? helpers()?.next() : helpers()?.prev();\n };\n return (\n <button\n disabled={props.disabled || false}\n class={props.class}\n classList={props.classList}\n onClick={changeSlide}\n >\n {props.children}\n </button>\n );\n};\n"],"names":["createSlider","options","plugins","slider","el","opts","access","createSignal","initial","current","setCurrent","destroy","getOptions","overrides","_objectSpread","selector","childNodes","update","create","newEl","classList","add","onMount","KeenSlider","on","track","details","rel","onCleanup","createEffect","moveTo","id","duration","absolute","easing","moveToIdx","next","prev","returnType","func","SliderContext","createContext","SliderProvider","props","_$createComponent","children","Slider","isServer","_$insert","useContext","setHelpers","helpers","queueMicrotask","defer","SliderButton","context","changeSlide","_$effect","disabled","_$classList","_$delegateEvents"],"mappings":"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"}
1
+ {"version":3,"file":"index.common.js","sources":["../../src/primitive.tsx","../../src/components.tsx"],"sourcesContent":["import {\n on,\n onMount,\n createSignal,\n onCleanup,\n Accessor,\n createEffect,\n} from \"solid-js\";\nimport { access } from \"@solid-primitives/utils\";\nimport KeenSlider, {\n KeenSliderHooks,\n KeenSliderInstance,\n KeenSliderOptions,\n KeenSliderPlugin,\n TrackDetails,\n} from \"keen-slider\";\n\ndeclare module \"solid-js\" {\n namespace JSX {\n interface Directives {\n slider: {};\n }\n }\n}\n\nexport type SliderControls<O, P, H extends string> = [\n create: (el: HTMLElement) => void,\n helpers: {\n current: Accessor<number>;\n next: VoidFunction;\n prev: VoidFunction;\n moveTo: (\n id: number,\n duration?: number,\n absolute?: boolean,\n easing?: (t: number) => number,\n ) => void;\n details: () => TrackDetails;\n slider: () => KeenSliderInstance<O, P, H> | undefined;\n destroy: VoidFunction;\n update: VoidFunction;\n },\n];\n\n/**\n * Creates a slider powered by KeenSlider.\n *\n * @param {Object} options Values to initialize the slider with\n * @param {Array} plugins Extensions that enhance KeenSlider options\n * @returns {[create: Function, helpers: Object]} Returns mount and helper methods\n * @returns {Function} create Mounts the slider on provided element\n * @returns {Function} helpers.current Current slide number\n * @returns {Function} helpers.current Current slide number\n * @returns {Function} helpers.next Function to trigger the next slide\n * @returns {Function} helpers.prev Function to trigger the previous slide\n * @returns {Function<Object>} helpers.details Provides details about the current slider\n * @returns {Function} helpers.slider Returns the KeenSlider instance\n * @returns {Function} helpers.destroy Manual destroy function\n *\n * @example\n * ```ts\n * const [create, { prev, next }] = createSlider();\n * <div use:slider>...</div>\n * ```\n */\nexport const createSlider = <\n O = {},\n P = {},\n H extends string = KeenSliderHooks,\n>(\n options?: KeenSliderOptions<O, P, H> | Accessor<KeenSliderOptions<O, P, H>>,\n ...plugins: KeenSliderPlugin<O, P, H>[]\n): SliderControls<O, P, H> => {\n let slider: KeenSliderInstance<O, P, H> | undefined;\n let el: HTMLElement;\n const opts = () => access(options);\n const [current, setCurrent] = createSignal(opts()?.initial || 0);\n const destroy = () => slider && slider.destroy();\n const getOptions: Accessor<KeenSliderOptions<O, P, H> | undefined> = (\n overrides = {},\n // @ts-ignore\n ) => ({\n selector: el.childNodes,\n ...opts(),\n ...overrides,\n });\n const update = () => slider?.update(getOptions());\n // Slider creation method and directive function\n const create = (newEl: HTMLElement) => {\n el = newEl;\n el.classList.add(\"keen-slider\");\n onMount(() => {\n slider = new KeenSlider<O, P, H>(el, getOptions(), plugins);\n slider.on(\"slideChanged\", () => setCurrent(slider!.track.details.rel));\n });\n onCleanup(destroy);\n if (typeof options === \"function\") {\n createEffect(on(() => options, update));\n }\n };\n const moveTo = (\n id: number,\n duration = 250,\n absolute = false,\n easing?: (t: number) => number,\n ) => {\n slider?.moveToIdx(id, absolute, { duration, easing: easing });\n };\n return [\n create,\n {\n current,\n next: () => slider && slider.next(),\n prev: () => slider && slider.prev(),\n details: () => (slider ? slider.track.details : ({} as TrackDetails)),\n slider: () => slider,\n moveTo,\n destroy,\n update,\n },\n ];\n};\n","import {\n on,\n createContext,\n useContext,\n createSignal,\n FlowComponent,\n createEffect,\n For,\n Show,\n JSX,\n createMemo,\n Index,\n onMount,\n} from \"solid-js\";\nimport { access } from \"@solid-primitives/utils\";\nimport { isServer } from \"solid-js/web\";\nimport { KeenSliderOptions, KeenSliderPlugin } from \"keen-slider\";\nimport { createSlider } from \"./primitive\";\n\n// The following is a hacky way of extracting SliderHelpers\ninterface Func<T> {\n ([...args]: any, args2?: any): T;\n}\nexport function returnType<T>(func: Func<T>) {\n return {} as T;\n}\nconst sliderValues = returnType(createSlider);\ntype SliderHelpers = (typeof sliderValues)[1];\n\n// Main context for the slider\nexport const SliderContext = createContext(\n createSignal<SliderHelpers | null>(null),\n);\n\n/**\n * A helpful and simple Provider to wrap your Slider if controls such as SliderButton are used.\n *\n * @param props {KeenSliderOptions} options - Accepts all KeenSlider options.\n * @param props {KeenSLiderPlugin} plugins - A list of Solid Slider or Keen slider plugins.\n */\nexport const SliderProvider: FlowComponent = (props) => (\n <SliderContext.Provider value={createSignal<SliderHelpers | null>(null)}>\n {props.children}\n </SliderContext.Provider>\n);\n\n/**\n * Main Slider component for specifying the Slider on the page.\n *\n * @param props {KeenSliderOptions} options - Accepts all KeenSlider options.\n * @param props {KeenSLiderPlugin} plugins - A list of Solid Slider or Keen slider plugins.\n */\nexport const Slider: FlowComponent<{\n options?: KeenSliderOptions;\n plugins?: KeenSliderPlugin[];\n}> = (props) => {\n if (isServer) return <div class=\"keen-slider\">{props.children}</div>;\n const [, setHelpers] = useContext(SliderContext);\n const [slider, helpers] = createSlider(\n props.options || {},\n ...(props.plugins || []),\n );\n setHelpers(helpers);\n createEffect(\n on(\n () => access(props.children),\n () => queueMicrotask(() => helpers.update()),\n { defer: true },\n ),\n );\n slider;\n return (\n <div use:slider class=\"keen-slider\">\n {props.children}\n </div>\n );\n};\n\n/**\n * Provides a helpful button with next/prev to pair with your slider.\n *\n * @param props {boolean} next - Specify if this should be a next button.\n * @param props {boolean} prev - Specify if this should be a prev button.\n * @param props {string} class - Class to override the button.\n * @param props {object} classList - List of classes to override the button.\n */\nexport const SliderButton: FlowComponent<{\n next?: boolean;\n prev?: boolean;\n disabled?: boolean;\n class?: string;\n classList?: { [k: string]: boolean | undefined };\n}> = (props) => {\n const context = useContext(SliderContext);\n const changeSlide = () => {\n if (context == null) return;\n const [helpers] = context;\n props.next ? helpers()?.next() : helpers()?.prev();\n };\n return (\n <button\n disabled={props.disabled || false}\n class={props.class}\n classList={props.classList}\n onClick={changeSlide}\n >\n {props.children}\n </button>\n );\n};\n\n/**\n * Navigation dots component for the slider.\n * Displays a dot for each slide and highlights the current slide.\n *\n * @param props {string} class - Class to override the dots container.\n * @param props {object} classList - List of classes to override the dots container.\n * @param props {string} dotClass - Class to override individual dots.\n * @param props {object} dotClassList - List of classes to override individual dots.\n *\n * @example\n * ```tsx\n * <SliderProvider>\n * <Slider>\n * <div class=\"keen-slider__slide\">Slide 1</div>\n * <div class=\"keen-slider__slide\">Slide 2</div>\n * </Slider>\n * <SliderDots />\n * </SliderProvider>\n * ```\n */\nexport const SliderDots: FlowComponent<{\n class?: string;\n classList?: { [k: string]: boolean | undefined };\n dotClass?: string;\n dotClassList?: { [k: string]: boolean | undefined };\n}> = (props) => {\n const context = useContext(SliderContext);\n const [slideCount, setSlideCount] = createSignal(0);\n\n const handleDotClick = (idx: number) => {\n if (context == null) return;\n const [helpers] = context;\n helpers()?.moveTo(idx);\n };\n\n // Update slide count when slider is created/updated\n createEffect(() => {\n if (!context) return;\n const [helpers] = context;\n const sliderInstance = helpers()?.slider();\n\n if (sliderInstance) {\n const updateCount = () => {\n const details = helpers()?.details();\n setSlideCount(details?.slides?.length || 0);\n };\n\n // Set initial count\n updateCount();\n\n // Listen for slider changes\n sliderInstance.on(\"created\", updateCount);\n sliderInstance.on(\"updated\", updateCount);\n }\n });\n\n const slides = createMemo(() =>\n Array.from({ length: slideCount() }, (_, i) => i),\n );\n\n return (\n <Show when={context != null}>\n <div\n class={props.class || \"keen-slider-dots\"}\n classList={props.classList}\n >\n <Index each={slides()}>\n {(idx) => {\n const [helpers] = context!;\n const isActive = () => helpers()?.current() === idx();\n return (\n <button\n class={props.dotClass || \"keen-slider-dot\"}\n classList={{\n ...props.dotClassList,\n active: isActive(),\n }}\n onClick={() => handleDotClick(idx())}\n aria-label={`Go to slide ${idx() + 1}`}\n />\n );\n }}\n </Index>\n </div>\n </Show>\n );\n};\n\n/**\n * Thumbnail navigation component for the slider.\n * A second Slider that synchronizes with the main slider.\n * User provides thumbnail slides as children.\n *\n * @param props {KeenSliderOptions} options - Options for the thumbnail slider.\n * @param props {KeenSliderPlugin[]} plugins - Plugins for the thumbnail slider.\n *\n * @example\n * ```tsx\n * <SliderProvider>\n * <Slider options={{ loop: true }}>\n * <div class=\"keen-slider__slide\">\n * <img src=\"slide1.jpg\" alt=\"Slide 1\" />\n * </div>\n * <div class=\"keen-slider__slide\">\n * <img src=\"slide2.jpg\" alt=\"Slide 2\" />\n * </div>\n * </Slider>\n * <SliderThumbnails options={{ slides: { perView: 4, spacing: 10 } }}>\n * <div class=\"keen-slider__slide\">\n * <img src=\"thumb1.jpg\" alt=\"Thumbnail 1\" />\n * </div>\n * <div class=\"keen-slider__slide\">\n * <img src=\"thumb2.jpg\" alt=\"Thumbnail 2\" />\n * </div>\n * </SliderThumbnails>\n * </SliderProvider>\n * ```\n */\nexport const SliderThumbnails: FlowComponent<{\n options?: KeenSliderOptions;\n plugins?: KeenSliderPlugin[];\n activeClass?: string;\n}> = (props) => {\n if (isServer) return <div>{props.children}</div>;\n\n const mainContext = useContext(SliderContext);\n\n if (!mainContext) {\n console.warn(\"SliderThumbnails must be used within a SliderProvider\");\n return <div>{props.children}</div>;\n }\n\n const [mainHelpers] = mainContext;\n\n // Create thumbnail slider with user options\n const [thumbSlider, thumbHelpers] = createSlider(\n props.options || {},\n ...(props.plugins || []),\n );\n\n // Update on children change (same as main Slider)\n createEffect(\n on(\n () => access(props.children),\n () => queueMicrotask(() => thumbHelpers.update()),\n { defer: true },\n ),\n );\n\n // Sync thumbnail slider with main slider\n onMount(() => {\n // Wait for next tick to ensure both sliders are mounted\n queueMicrotask(() => {\n const mainSliderInstance = mainHelpers()?.slider();\n const thumbSliderInstance = thumbHelpers.slider();\n\n if (mainSliderInstance && thumbSliderInstance) {\n // Function to update active thumbnail\n const activeClassName = props.activeClass || \"active\";\n const updateActiveThumbnail = () => {\n const mainCurrent = mainHelpers()?.current();\n if (mainCurrent !== undefined) {\n // Remove active class from all thumbnails\n thumbSliderInstance.slides.forEach((slide) => {\n slide.classList.remove(activeClassName);\n });\n // Add active class to current thumbnail\n if (thumbSliderInstance.slides[mainCurrent]) {\n thumbSliderInstance.slides[mainCurrent].classList.add(\n activeClassName,\n );\n }\n // Move thumbnail slider to show active thumbnail\n thumbHelpers.moveTo(mainCurrent);\n }\n };\n\n // Listen to main slider changes\n mainSliderInstance.on(\"slideChanged\", updateActiveThumbnail);\n\n // Set initial active state\n updateActiveThumbnail();\n\n // Add click handlers to thumbnails\n thumbSliderInstance.slides.forEach((slide, idx) => {\n slide.addEventListener(\"click\", () => {\n mainHelpers()?.moveTo(idx);\n });\n });\n }\n });\n });\n\n // Prevent tree-shaking\n thumbSlider;\n\n return <div use:thumbSlider>{props.children}</div>;\n};\n"],"names":["createSlider","options","plugins","slider","el","opts","access","current","setCurrent","createSignal","initial","destroy","getOptions","overrides","selector","childNodes","update","create","newEl","classList","add","onMount","KeenSlider","on","track","details","rel","onCleanup","createEffect","moveTo","id","duration","absolute","easing","moveToIdx","next","prev","returnType","func","SliderContext","createContext","SliderProvider","props","_$createComponent","Provider","value","children","Slider","isServer","_el$","_tmpl$","_$insert","setHelpers","useContext","helpers","queueMicrotask","defer","_el$2","_$use","SliderButton","context","changeSlide","_el$3","_tmpl$2","$$click","_$effect","_p$","_v$","disabled","_v$2","class","_v$3","_$className","_$classList","undefined","SliderDots","slideCount","setSlideCount","handleDotClick","idx","sliderInstance","updateCount","slides","length","createMemo","Array","from","_","i","Show","when","_el$4","_tmpl$3","Index","each","isActive","_el$5","_v$6","dotClass","_v$7","dotClassList","active","_v$8","_$setAttribute","_v$4","_v$5","SliderThumbnails","_el$6","mainContext","console","warn","_el$7","mainHelpers","thumbSlider","thumbHelpers","mainSliderInstance","thumbSliderInstance","activeClassName","activeClass","updateActiveThumbnail","mainCurrent","forEach","slide","remove","addEventListener","_el$8","_$delegateEvents"],"mappings":";;;;;;;AA4CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,YAAY,GAAGA,CAK1BC,OAA2E,EAC3E,GAAGC,OAAoC,KACX;AAC5B,EAAA,IAAIC,MAA+C;AACnD,EAAA,IAAIC,EAAe;AACnB,EAAA,MAAMC,IAAI,GAAGA,MAAMC,YAAM,CAACL,OAAO,CAAC;AAClC,EAAA,MAAM,CAACM,OAAO,EAAEC,UAAU,CAAC,GAAGC,oBAAY,CAACJ,IAAI,EAAE,EAAEK,OAAO,IAAI,CAAC,CAAC;EAChE,MAAMC,OAAO,GAAGA,MAAMR,MAAM,IAAIA,MAAM,CAACQ,OAAO,EAAE;AAChD,EAAA,MAAMC,UAA4D,GAAGA,CACnEC,SAAS,GAAG;AACZ;QACI;IACJC,QAAQ,EAAEV,EAAE,CAACW,UAAU;IACvB,GAAGV,IAAI,EAAE;IACT,GAAGQ;AACL,GAAC,CAAC;EACF,MAAMG,MAAM,GAAGA,MAAMb,MAAM,EAAEa,MAAM,CAACJ,UAAU,EAAE,CAAC;AACjD;EACA,MAAMK,MAAM,GAAIC,KAAkB,IAAK;AACrCd,IAAAA,EAAE,GAAGc,KAAK;AACVd,IAAAA,EAAE,CAACe,SAAS,CAACC,GAAG,CAAC,aAAa,CAAC;AAC/BC,IAAAA,eAAO,CAAC,MAAM;MACZlB,MAAM,GAAG,IAAImB,UAAU,CAAUlB,EAAE,EAAEQ,UAAU,EAAE,EAAEV,OAAO,CAAC;AAC3DC,MAAAA,MAAM,CAACoB,EAAE,CAAC,cAAc,EAAE,MAAMf,UAAU,CAACL,MAAM,CAAEqB,KAAK,CAACC,OAAO,CAACC,GAAG,CAAC,CAAC;AACxE,IAAA,CAAC,CAAC;IACFC,iBAAS,CAAChB,OAAO,CAAC;AAClB,IAAA,IAAI,OAAOV,OAAO,KAAK,UAAU,EAAE;MACjC2B,oBAAY,CAACL,UAAE,CAAC,MAAMtB,OAAO,EAAEe,MAAM,CAAC,CAAC;AACzC,IAAA;EACF,CAAC;AACD,EAAA,MAAMa,MAAM,GAAGA,CACbC,EAAU,EACVC,QAAQ,GAAG,GAAG,EACdC,QAAQ,GAAG,KAAK,EAChBC,MAA8B,KAC3B;AACH9B,IAAAA,MAAM,EAAE+B,SAAS,CAACJ,EAAE,EAAEE,QAAQ,EAAE;MAAED,QAAQ;AAAEE,MAAAA,MAAM,EAAEA;AAAO,KAAC,CAAC;EAC/D,CAAC;EACD,OAAO,CACLhB,MAAM,EACN;IACEV,OAAO;IACP4B,IAAI,EAAEA,MAAMhC,MAAM,IAAIA,MAAM,CAACgC,IAAI,EAAE;IACnCC,IAAI,EAAEA,MAAMjC,MAAM,IAAIA,MAAM,CAACiC,IAAI,EAAE;AACnCX,IAAAA,OAAO,EAAEA,MAAOtB,MAAM,GAAGA,MAAM,CAACqB,KAAK,CAACC,OAAO,GAAI,EAAoB;IACrEtB,MAAM,EAAEA,MAAMA,MAAM;IACpB0B,MAAM;IACNlB,OAAO;AACPK,IAAAA;AACF,GAAC,CACF;AACH;;;;;;ACtGA;;AAIO,SAASqB,UAAUA,CAAIC,IAAa,EAAE;AAC3C,EAAA,OAAO,EAAE;AACX;AAIA;AACO,MAAMC,aAAa,GAAGC,qBAAa,CACxC/B,oBAAY,CAAuB,IAAI,CACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMgC,cAA6B,GAAIC,KAAK,IAAAC,mBAAA,CAChDJ,aAAa,CAACK,QAAQ,EAAA;AAAA,EAAA,IAACC,KAAKA,GAAA;IAAA,OAAEpC,oBAAY,CAAuB,IAAI,CAAC;AAAA,EAAA,CAAA;AAAA,EAAA,IAAAqC,QAAAA,GAAA;IAAA,OACpEJ,KAAK,CAACI,QAAQ;AAAA,EAAA;AAAA,CAAA;;AAInB;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,MAGX,GAAIL,KAAK,IAAK;AACd,EAAA,IAAIM,YAAQ,EAAE,OAAA,CAAA,MAAA;IAAA,MAAAC,IAAA,GAAAC,MAAA,EAAA;AAAAC,IAAAA,UAAA,CAAAF,IAAA,EAAA,MAAiCP,KAAK,CAACI,QAAQ,CAAA;AAAA,IAAA,OAAAG,IAAA;AAAA,EAAA,CAAA,GAAA;AAC7D,EAAA,MAAM,GAAGG,UAAU,CAAC,GAAGC,kBAAU,CAACd,aAAa,CAAC;EAChD,MAAM,CAACpC,MAAM,EAAEmD,OAAO,CAAC,GAAGtD,YAAY,CACpC0C,KAAK,CAACzC,OAAO,IAAI,EAAE,EACnB,IAAIyC,KAAK,CAACxC,OAAO,IAAI,EAAE,CACzB,CAAC;EACDkD,UAAU,CAACE,OAAO,CAAC;EACnB1B,oBAAY,CACVL,UAAE,CACA,MAAMjB,YAAM,CAACoC,KAAK,CAACI,QAAQ,CAAC,EAC5B,MAAMS,cAAc,CAAC,MAAMD,OAAO,CAACtC,MAAM,EAAE,CAAC,EAC5C;AAAEwC,IAAAA,KAAK,EAAE;AAAK,GAChB,CACF,CAAC;AAED,EAAA,OAAA,CAAA,MAAA;IAAA,MAAAC,KAAA,GAAAP,MAAA,EAAA;IAAAQ,OAAA,CACWvD,MAAM,EAAAsD,KAAA,EAAA,MAAA,IAAA,CAAA;AAAAN,IAAAA,UAAA,CAAAM,KAAA,EAAA,MACZf,KAAK,CAACI,QAAQ,CAAA;AAAA,IAAA,OAAAW,KAAA;AAAA,EAAA,CAAA,GAAA;AAGrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAME,YAMX,GAAIjB,KAAK,IAAK;AACd,EAAA,MAAMkB,OAAO,GAAGP,kBAAU,CAACd,aAAa,CAAC;EACzC,MAAMsB,WAAW,GAAGA,MAAM;IACxB,IAAID,OAAO,IAAI,IAAI,EAAE;AACrB,IAAA,MAAM,CAACN,OAAO,CAAC,GAAGM,OAAO;AACzBlB,IAAAA,KAAK,CAACP,IAAI,GAAGmB,OAAO,EAAE,EAAEnB,IAAI,EAAE,GAAGmB,OAAO,EAAE,EAAElB,IAAI,EAAE;EACpD,CAAC;AACD,EAAA,OAAA,CAAA,MAAA;IAAA,MAAA0B,KAAA,GAAAC,OAAA,EAAA;IAAAD,KAAA,CAAAE,OAAA,GAKaH,WAAW;AAAAV,IAAAA,UAAA,CAAAW,KAAA,EAAA,MAEnBpB,KAAK,CAACI,QAAQ,CAAA;AAAAmB,IAAAA,UAAA,CAAAC,GAAA,IAAA;AAAA,MAAA,MAAAC,GAAA,GALLzB,KAAK,CAAC0B,QAAQ,IAAI,KAAK;QAAAC,IAAA,GAC1B3B,KAAK,CAAC4B,KAAK;QAAAC,IAAA,GACP7B,KAAK,CAACvB,SAAS;AAAAgD,MAAAA,GAAA,KAAAD,GAAA,CAAAC,GAAA,KAAAL,KAAA,CAAAM,QAAA,GAAAF,GAAA,CAAAC,GAAA,GAAAA,GAAA,CAAA;AAAAE,MAAAA,IAAA,KAAAH,GAAA,CAAAG,IAAA,IAAAG,aAAA,CAAAV,KAAA,EAAAI,GAAA,CAAAG,IAAA,GAAAA,IAAA,CAAA;MAAAH,GAAA,CAAAK,IAAA,GAAAE,aAAA,CAAAX,KAAA,EAAAS,IAAA,EAAAL,GAAA,CAAAK,IAAA,CAAA;AAAA,MAAA,OAAAL,GAAA;AAAA,IAAA,CAAA,EAAA;AAAAC,MAAAA,GAAA,EAAAO,SAAA;AAAAL,MAAAA,IAAA,EAAAK,SAAA;AAAAH,MAAAA,IAAA,EAAAG;AAAA,KAAA,CAAA;AAAA,IAAA,OAAAZ,KAAA;AAAA,EAAA,CAAA,GAAA;AAMhC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMa,UAKX,GAAIjC,KAAK,IAAK;AACd,EAAA,MAAMkB,OAAO,GAAGP,kBAAU,CAACd,aAAa,CAAC;EACzC,MAAM,CAACqC,UAAU,EAAEC,aAAa,CAAC,GAAGpE,oBAAY,CAAC,CAAC,CAAC;EAEnD,MAAMqE,cAAc,GAAIC,GAAW,IAAK;IACtC,IAAInB,OAAO,IAAI,IAAI,EAAE;AACrB,IAAA,MAAM,CAACN,OAAO,CAAC,GAAGM,OAAO;AACzBN,IAAAA,OAAO,EAAE,EAAEzB,MAAM,CAACkD,GAAG,CAAC;EACxB,CAAC;;AAED;AACAnD,EAAAA,oBAAY,CAAC,MAAM;IACjB,IAAI,CAACgC,OAAO,EAAE;AACd,IAAA,MAAM,CAACN,OAAO,CAAC,GAAGM,OAAO;IACzB,MAAMoB,cAAc,GAAG1B,OAAO,EAAE,EAAEnD,MAAM,EAAE;AAE1C,IAAA,IAAI6E,cAAc,EAAE;MAClB,MAAMC,WAAW,GAAGA,MAAM;QACxB,MAAMxD,OAAO,GAAG6B,OAAO,EAAE,EAAE7B,OAAO,EAAE;QACpCoD,aAAa,CAACpD,OAAO,EAAEyD,MAAM,EAAEC,MAAM,IAAI,CAAC,CAAC;MAC7C,CAAC;;AAED;AACAF,MAAAA,WAAW,EAAE;;AAEb;AACAD,MAAAA,cAAc,CAACzD,EAAE,CAAC,SAAS,EAAE0D,WAAW,CAAC;AACzCD,MAAAA,cAAc,CAACzD,EAAE,CAAC,SAAS,EAAE0D,WAAW,CAAC;AAC3C,IAAA;AACF,EAAA,CAAC,CAAC;EAEF,MAAMC,MAAM,GAAGE,kBAAU,CAAC,MACxBC,KAAK,CAACC,IAAI,CAAC;IAAEH,MAAM,EAAEP,UAAU;GAAI,EAAE,CAACW,CAAC,EAAEC,CAAC,KAAKA,CAAC,CAClD,CAAC;EAED,OAAA7C,mBAAA,CACG8C,YAAI,EAAA;IAACC,IAAI,EAAE9B,OAAO,IAAI,IAAI;AAAA,IAAA,IAAAd,QAAAA,GAAA;MAAA,MAAA6C,KAAA,GAAAC,OAAA,EAAA;AAAAzC,MAAAA,UAAA,CAAAwC,KAAA,EAAAhD,mBAAA,CAKtBkD,aAAK,EAAA;AAAA,QAAA,IAACC,IAAIA,GAAA;UAAA,OAAEZ,MAAM,EAAE;AAAA,QAAA,CAAA;QAAApC,QAAA,EACjBiC,GAAG,IAAK;AACR,UAAA,MAAM,CAACzB,OAAO,CAAC,GAAGM,OAAQ;AAC1B,UAAA,MAAMmC,QAAQ,GAAGA,MAAMzC,OAAO,EAAE,EAAE/C,OAAO,EAAE,KAAKwE,GAAG,EAAE;AACrD,UAAA,OAAA,CAAA,MAAA;YAAA,MAAAiB,KAAA,GAAAjC,OAAA,EAAA;YAAAiC,KAAA,CAAAhC,OAAA,GAOa,MAAMc,cAAc,CAACC,GAAG,EAAE,CAAC;AAAAd,YAAAA,UAAA,CAAAC,GAAA,IAAA;AAAA,cAAA,MAAA+B,IAAA,GAL7BvD,KAAK,CAACwD,QAAQ,IAAI,iBAAiB;AAAAC,gBAAAA,IAAA,GAC/B;kBACT,GAAGzD,KAAK,CAAC0D,YAAY;kBACrBC,MAAM,EAAEN,QAAQ;iBACjB;AAAAO,gBAAAA,IAAA,GAEW,CAAA,YAAA,EAAevB,GAAG,EAAE,GAAG,CAAC,CAAA,CAAE;AAAAkB,cAAAA,IAAA,KAAA/B,GAAA,CAAA+B,IAAA,IAAAzB,aAAA,CAAAwB,KAAA,EAAA9B,GAAA,CAAA+B,IAAA,GAAAA,IAAA,CAAA;cAAA/B,GAAA,CAAAiC,IAAA,GAAA1B,aAAA,CAAAuB,KAAA,EAAAG,IAAA,EAAAjC,GAAA,CAAAiC,IAAA,CAAA;AAAAG,cAAAA,IAAA,KAAApC,GAAA,CAAAoC,IAAA,IAAAC,gBAAA,CAAAP,KAAA,EAAA,YAAA,EAAA9B,GAAA,CAAAoC,IAAA,GAAAA,IAAA,CAAA;AAAA,cAAA,OAAApC,GAAA;AAAA,YAAA,CAAA,EAAA;AAAA+B,cAAAA,IAAA,EAAAvB,SAAA;AAAAyB,cAAAA,IAAA,EAAAzB,SAAA;AAAA4B,cAAAA,IAAA,EAAA5B;AAAA,aAAA,CAAA;AAAA,YAAA,OAAAsB,KAAA;AAAA,UAAA,CAAA,GAAA;AAG5C,QAAA;AAAC,OAAA,CAAA,CAAA;AAAA/B,MAAAA,UAAA,CAAAC,GAAA,IAAA;AAAA,QAAA,MAAAsC,IAAA,GAlBI9D,KAAK,CAAC4B,KAAK,IAAI,kBAAkB;UAAAmC,IAAA,GAC7B/D,KAAK,CAACvB,SAAS;AAAAqF,QAAAA,IAAA,KAAAtC,GAAA,CAAAsC,IAAA,IAAAhC,aAAA,CAAAmB,KAAA,EAAAzB,GAAA,CAAAsC,IAAA,GAAAA,IAAA,CAAA;QAAAtC,GAAA,CAAAuC,IAAA,GAAAhC,aAAA,CAAAkB,KAAA,EAAAc,IAAA,EAAAvC,GAAA,CAAAuC,IAAA,CAAA;AAAA,QAAA,OAAAvC,GAAA;AAAA,MAAA,CAAA,EAAA;AAAAsC,QAAAA,IAAA,EAAA9B,SAAA;AAAA+B,QAAAA,IAAA,EAAA/B;AAAA,OAAA,CAAA;AAAA,MAAA,OAAAiB,KAAA;AAAA,IAAA;AAAA,GAAA,CAAA;AAsBlC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMe,gBAIX,GAAIhE,KAAK,IAAK;AACd,EAAA,IAAIM,YAAQ,EAAE,OAAA,CAAA,MAAA;IAAA,MAAA2D,KAAA,GAAAf,OAAA,EAAA;AAAAzC,IAAAA,UAAA,CAAAwD,KAAA,EAAA,MAAajE,KAAK,CAACI,QAAQ,CAAA;AAAA,IAAA,OAAA6D,KAAA;AAAA,EAAA,CAAA,GAAA;AAEzC,EAAA,MAAMC,WAAW,GAAGvD,kBAAU,CAACd,aAAa,CAAC;EAE7C,IAAI,CAACqE,WAAW,EAAE;AAChBC,IAAAA,OAAO,CAACC,IAAI,CAAC,uDAAuD,CAAC;AACrE,IAAA,OAAA,CAAA,MAAA;MAAA,MAAAC,KAAA,GAAAnB,OAAA,EAAA;AAAAzC,MAAAA,UAAA,CAAA4D,KAAA,EAAA,MAAarE,KAAK,CAACI,QAAQ,CAAA;AAAA,MAAA,OAAAiE,KAAA;AAAA,IAAA,CAAA,GAAA;AAC7B,EAAA;AAEA,EAAA,MAAM,CAACC,WAAW,CAAC,GAAGJ,WAAW;;AAEjC;EACA,MAAM,CAACK,WAAW,EAAEC,YAAY,CAAC,GAAGlH,YAAY,CAC9C0C,KAAK,CAACzC,OAAO,IAAI,EAAE,EACnB,IAAIyC,KAAK,CAACxC,OAAO,IAAI,EAAE,CACzB,CAAC;;AAED;EACA0B,oBAAY,CACVL,UAAE,CACA,MAAMjB,YAAM,CAACoC,KAAK,CAACI,QAAQ,CAAC,EAC5B,MAAMS,cAAc,CAAC,MAAM2D,YAAY,CAAClG,MAAM,EAAE,CAAC,EACjD;AAAEwC,IAAAA,KAAK,EAAE;AAAK,GAChB,CACF,CAAC;;AAED;AACAnC,EAAAA,eAAO,CAAC,MAAM;AACZ;AACAkC,IAAAA,cAAc,CAAC,MAAM;MACnB,MAAM4D,kBAAkB,GAAGH,WAAW,EAAE,EAAE7G,MAAM,EAAE;AAClD,MAAA,MAAMiH,mBAAmB,GAAGF,YAAY,CAAC/G,MAAM,EAAE;MAEjD,IAAIgH,kBAAkB,IAAIC,mBAAmB,EAAE;AAC7C;AACA,QAAA,MAAMC,eAAe,GAAG3E,KAAK,CAAC4E,WAAW,IAAI,QAAQ;QACrD,MAAMC,qBAAqB,GAAGA,MAAM;UAClC,MAAMC,WAAW,GAAGR,WAAW,EAAE,EAAEzG,OAAO,EAAE;UAC5C,IAAIiH,WAAW,KAAK9C,SAAS,EAAE;AAC7B;AACA0C,YAAAA,mBAAmB,CAAClC,MAAM,CAACuC,OAAO,CAAEC,KAAK,IAAK;AAC5CA,cAAAA,KAAK,CAACvG,SAAS,CAACwG,MAAM,CAACN,eAAe,CAAC;AACzC,YAAA,CAAC,CAAC;AACF;AACA,YAAA,IAAID,mBAAmB,CAAClC,MAAM,CAACsC,WAAW,CAAC,EAAE;cAC3CJ,mBAAmB,CAAClC,MAAM,CAACsC,WAAW,CAAC,CAACrG,SAAS,CAACC,GAAG,CACnDiG,eACF,CAAC;AACH,YAAA;AACA;AACAH,YAAAA,YAAY,CAACrF,MAAM,CAAC2F,WAAW,CAAC;AAClC,UAAA;QACF,CAAC;;AAED;AACAL,QAAAA,kBAAkB,CAAC5F,EAAE,CAAC,cAAc,EAAEgG,qBAAqB,CAAC;;AAE5D;AACAA,QAAAA,qBAAqB,EAAE;;AAEvB;QACAH,mBAAmB,CAAClC,MAAM,CAACuC,OAAO,CAAC,CAACC,KAAK,EAAE3C,GAAG,KAAK;AACjD2C,UAAAA,KAAK,CAACE,gBAAgB,CAAC,OAAO,EAAE,MAAM;AACpCZ,YAAAA,WAAW,EAAE,EAAEnF,MAAM,CAACkD,GAAG,CAAC;AAC5B,UAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AACJ,MAAA;AACF,IAAA,CAAC,CAAC;AACJ,EAAA,CAAC,CAAC;AAKF,EAAA,OAAA,CAAA,MAAA;IAAA,MAAA8C,KAAA,GAAAjC,OAAA,EAAA;IAAAlC,OAAA,CAAgBuD,WAAW,EAAAY,KAAA,EAAA,MAAA,IAAA,CAAA;AAAA1E,IAAAA,UAAA,CAAA0E,KAAA,EAAA,MAAEnF,KAAK,CAACI,QAAQ,CAAA;AAAA,IAAA,OAAA+E,KAAA;AAAA,EAAA,CAAA,GAAA;AAC7C;AAAEC,kBAAA,CAAA,CAAA,OAAA,CAAA,CAAA;;;;;;;;;;;"}