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.
- package/README.md +145 -4
- package/dist/adaptiveHeight/index.common.js +2 -2
- package/dist/adaptiveHeight/index.common.js.map +1 -1
- package/dist/adaptiveHeight/index.module.js +2 -2
- package/dist/adaptiveHeight/index.module.js.map +1 -1
- package/dist/adaptiveWidth/index.common.js +2 -2
- package/dist/adaptiveWidth/index.common.js.map +1 -1
- package/dist/adaptiveWidth/index.module.js +2 -2
- package/dist/adaptiveWidth/index.module.js.map +1 -1
- package/dist/autoplay/index.common.js +7 -17
- package/dist/autoplay/index.common.js.map +1 -1
- package/dist/autoplay/index.module.js +7 -17
- package/dist/autoplay/index.module.js.map +1 -1
- package/dist/index/components.d.ts +65 -0
- package/dist/index/components.jsx +148 -1
- package/dist/index/index.common.js +273 -212
- package/dist/index/index.common.js.map +1 -1
- package/dist/index/index.module.js +274 -215
- package/dist/index/index.module.js.map +1 -1
- package/dist/slider.css +21 -0
- package/package.json +9 -8
- /package/dist/index/{primitive.js → primitive.jsx} +0 -0
|
@@ -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
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
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
|
-
|
|
44
|
+
const create = newEl => {
|
|
151
45
|
el = newEl;
|
|
152
46
|
el.classList.add("keen-slider");
|
|
153
|
-
solidJs.onMount(
|
|
154
|
-
|
|
155
|
-
|
|
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(
|
|
162
|
-
return options;
|
|
163
|
-
}, update));
|
|
53
|
+
solidJs.createEffect(solidJs.on(() => options, update));
|
|
164
54
|
}
|
|
165
55
|
};
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
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
|
|
178
|
-
next:
|
|
179
|
-
|
|
180
|
-
},
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
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"
|
|
197
|
-
_tmpl$2 = /*#__PURE__*/web.template(`<button
|
|
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
|
-
|
|
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
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
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
|
-
|
|
231
|
-
if (web.isServer) return
|
|
232
|
-
|
|
233
|
-
web.insert(_el$,
|
|
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
|
-
|
|
239
|
-
|
|
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(
|
|
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
|
|
256
|
-
|
|
257
|
-
slider
|
|
258
|
-
|
|
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
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
var _helpers, _helpers2;
|
|
135
|
+
const SliderButton = props => {
|
|
136
|
+
const context = solidJs.useContext(SliderContext);
|
|
137
|
+
const changeSlide = () => {
|
|
279
138
|
if (context == null) return;
|
|
280
|
-
|
|
281
|
-
|
|
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
|
|
285
|
-
|
|
142
|
+
return (() => {
|
|
143
|
+
const _el$3 = _tmpl$2();
|
|
286
144
|
_el$3.$$click = changeSlide;
|
|
287
|
-
web.insert(_el$3,
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
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
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACaA,YAAY,GAAG,SAAfA,YAAY,CAKvBC,OAA2E,EAE/C;AAAA,EAAA,IAAA,KAAA,CAAA;AAAA,EAAA,KAAA,IAAA,IAAA,GAAA,SAAA,CAAA,MAAA,EADzBC,OAAO,GAAA,IAAA,KAAA,CAAA,IAAA,GAAA,CAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,CAAA,EAAA,IAAA,GAAA,CAAA,EAAA,IAAA,GAAA,IAAA,EAAA,IAAA,EAAA,EAAA;IAAPA,OAAO,CAAA,IAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,IAAA,CAAA,CAAA;AAAA,GAAA;AAEV,EAAA,IAAIC,QAA+C,CAAA;AACnD,EAAA,IAAIC,EAAe,CAAA;EACnB,IAAMC,IAAI,GAAG,SAAPA,IAAI,GAAA;IAAA,OAASC,YAAM,CAACL,OAAO,CAAC,CAAA;AAAA,GAAA,CAAA;EAClC,IAA8BM,aAAAA,GAAAA,oBAAY,CAAC,CAAA,CAAA,KAAA,GAAAF,IAAI,EAAE,0CAAN,KAAQG,CAAAA,OAAO,KAAI,CAAC,CAAC;AAAA,IAAA,cAAA,GAAA,cAAA,CAAA,aAAA,EAAA,CAAA,CAAA;IAAzDC,OAAO,GAAA,cAAA,CAAA,CAAA,CAAA;IAAEC,UAAU,GAAA,cAAA,CAAA,CAAA,CAAA,CAAA;EAC1B,IAAMC,OAAO,GAAG,SAAVA,OAAO,GAAA;AAAA,IAAA,OAASR,QAAM,IAAIA,QAAM,CAACQ,OAAO,EAAE,CAAA;AAAA,GAAA,CAAA;EAChD,IAAMC,UAA4D,GAAG,SAA/DA,UAA4D,GAAA;IAAA,IAChEC,SAAS,GAAG,SAAA,CAAA,MAAA,GAAA,CAAA,IAAA,SAAA,CAAA,CAAA,CAAA,KAAA,SAAA,GAAA,SAAA,CAAA,CAAA,CAAA,GAAA,EAAE,CAAA;AAAA,IAAA,OAAAC,cAAA,CAAAA,cAAA,CAAA;MAGdC,QAAQ,EAAEX,EAAE,CAACY,UAAAA;KACVX,EAAAA,IAAI,EAAE,CAAA,EACNQ,SAAS,CAAA,CAAA;GACZ,CAAA;EACF,IAAMI,MAAM,GAAG,SAATA,MAAM,GAAA;AAAA,IAAA,IAAA,OAAA,CAAA;AAAA,IAAA,OAAA,CAAA,OAAA,GAASd,QAAM,MAAN,IAAA,IAAA,OAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAQc,MAAM,CAACL,UAAU,EAAE,CAAC,CAAA;AAAA,GAAA,CAAA;AACjD;AACA,EAAA,IAAMM,MAAM,GAAG,SAATA,MAAM,CAAIC,KAAkB,EAAK;AACrCf,IAAAA,EAAE,GAAGe,KAAK,CAAA;AACVf,IAAAA,EAAE,CAACgB,SAAS,CAACC,GAAG,CAAC,aAAa,CAAC,CAAA;AAC/BC,IAAAA,eAAO,CAAC,YAAM;MACZnB,QAAM,GAAG,IAAIoB,UAAU,CAAUnB,EAAE,EAAEQ,UAAU,EAAE,EAAEV,OAAO,CAAC,CAAA;AAC3DC,MAAAA,QAAM,CAACqB,EAAE,CAAC,cAAc,EAAE,YAAA;QAAA,OAAMd,UAAU,CAACP,QAAM,CAAEsB,KAAK,CAACC,OAAO,CAACC,GAAG,CAAC,CAAA;OAAC,CAAA,CAAA;AACxE,KAAC,CAAC,CAAA;IACFC,iBAAS,CAACjB,OAAO,CAAC,CAAA;AAClB,IAAA,IAAI,OAAOV,OAAO,KAAK,UAAU,EAAE;MACjC4B,oBAAY,CAACL,UAAE,CAAC,YAAA;AAAA,QAAA,OAAMvB,OAAO,CAAA;OAAEgB,EAAAA,MAAM,CAAC,CAAC,CAAA;AACzC,KAAA;GACD,CAAA;AACD,EAAA,IAAMa,MAAM,GAAG,SAATA,MAAM,CACVC,EAAU,EAIP;AAAA,IAAA,IAAA,QAAA,CAAA;IAAA,IAHHC,QAAQ,uEAAG,GAAG,CAAA;IAAA,IACdC,QAAQ,uEAAG,KAAK,CAAA;AAAA,IAAA,IAChBC,MAA8B,GAAA,SAAA,CAAA,MAAA,GAAA,CAAA,GAAA,SAAA,CAAA,CAAA,CAAA,GAAA,SAAA,CAAA;IAE9B,CAAA/B,QAAAA,GAAAA,QAAM,6CAAN,QAAQgC,CAAAA,SAAS,CAACJ,EAAE,EAAEE,QAAQ,EAAE;AAAED,MAAAA,QAAQ,EAARA,QAAQ;AAAEE,MAAAA,MAAM,EAAEA,MAAAA;AAAO,KAAC,CAAC,CAAA;GAC9D,CAAA;EACD,OAAO,CACLhB,MAAM,EACN;AACET,IAAAA,OAAO,EAAPA,OAAO;AACP2B,IAAAA,IAAI,EAAE,SAAA,IAAA,GAAA;AAAA,MAAA,OAAMjC,QAAM,IAAIA,QAAM,CAACiC,IAAI,EAAE,CAAA;AAAA,KAAA;AACnCC,IAAAA,IAAI,EAAE,SAAA,IAAA,GAAA;AAAA,MAAA,OAAMlC,QAAM,IAAIA,QAAM,CAACkC,IAAI,EAAE,CAAA;AAAA,KAAA;AACnCX,IAAAA,OAAO,EAAE,SAAA,OAAA,GAAA;MAAA,OAAOvB,QAAM,GAAGA,QAAM,CAACsB,KAAK,CAACC,OAAO,GAAI,EAAmB,CAAA;KAAC;AACrEvB,IAAAA,MAAM,EAAE,SAAA,MAAA,GAAA;AAAA,MAAA,OAAMA,QAAM,CAAA;AAAA,KAAA;AACpB2B,IAAAA,MAAM,EAANA,MAAM;AACNnB,IAAAA,OAAO,EAAPA,OAAO;AACPM,IAAAA,MAAM,EAANA,MAAAA;AACF,GAAC,CACF,CAAA;AACH;;;;;AC5GA;;AAIO,SAASqB,UAAU,CAAIC,IAAa,EAAE;AAC3C,EAAA,OAAO,EAAE,CAAA;AACX,CAAA;AAIA;AACO,IAAMC,aAAa,GAAGC,qBAAa,CACxClC,oBAAY,CAAuB,IAAI,CAAC,EACzC;;AAED;AACA;AACA;AACA;AACA;AACA;IACamC,cAA6B,GAAG,SAAhCA,cAA6B,CAAIC,KAAK,EAAA;EAAA,OAChDC,mBAAA,CAAA,aAAa,CAAC,QAAQ,EAAA;AAAA,IAAA,IAAC,KAAK,GAAA;MAAA,OAAErC,oBAAY,CAAuB,IAAI,CAAC,CAAA;AAAA,KAAA;AAAA,IAAA,IAAA,QAAA,GAAA;MAAA,OACpEoC,KAAK,CAACE,QAAQ,CAAA;AAAA,KAAA;AAAA,GAAA,CAAA,CAAA;AAAA,EAElB;;AAED;AACA;AACA;AACA;AACA;AACA;IACaC,MAGX,GAAG,SAHQA,MAGX,CAAIH,KAAK,EAAK;AACd,EAAA,IAAII,YAAQ,EAAE,OAAA,YAAA;AAAA,IAAA,IAAA,IAAA,GAAA,MAAA,CAAA,SAAA,CAAA,IAAA,CAAA,CAAA;AAAA,IAAAC,UAAA,CAAA,IAAA,EAAA,YAAA;MAAA,OAAiCL,KAAK,CAACE,QAAQ,CAAA;AAAA,KAAA,CAAA,CAAA;AAAA,IAAA,OAAA,IAAA,CAAA;AAAA,GAAA,EAAA,CAAA;EAC7D,IAAuBI,WAAAA,GAAAA,kBAAU,CAACT,aAAa,CAAC;AAAA,IAAA,YAAA,GAAA,cAAA,CAAA,WAAA,EAAA,CAAA,CAAA;IAAvCU,UAAU,GAAA,YAAA,CAAA,CAAA,CAAA,CAAA;AACnB,EAAA,IAAA,aAAA,GAA0BlD,YAAY,CAAA,KAAA,CAAA,KAAA,CAAA,EAAA,CACpC2C,KAAK,CAAC1C,OAAO,IAAI,EAAE,CAAA,CAAA,MAAA,CAAA,kBAAA,CACf0C,KAAK,CAACzC,OAAO,IAAI,EAAE,CACxB,CAAA,CAAA;AAAA,IAAA,cAAA,GAAA,cAAA,CAAA,aAAA,EAAA,CAAA,CAAA;IAHMC,MAAM,GAAA,cAAA,CAAA,CAAA,CAAA;IAAEgD,OAAO,GAAA,cAAA,CAAA,CAAA,CAAA,CAAA;EAItBD,UAAU,CAACC,OAAO,CAAC,CAAA;EACnBtB,oBAAY,CACVL,UAAE,CACA,YAAA;AAAA,IAAA,OAAMlB,YAAM,CAACqC,KAAK,CAACE,QAAQ,CAAC,CAAA;GAC5B,EAAA,YAAA;AAAA,IAAA,OAAMO,cAAc,CAAC,YAAA;MAAA,OAAMD,OAAO,CAAClC,MAAM,EAAE,CAAA;KAAC,CAAA,CAAA;GAC5C,EAAA;AAAEoC,IAAAA,KAAK,EAAE,IAAA;AAAK,GAAC,CAChB,CACF,CAAA;AAED,EAAA,OAAA,YAAA;AAAA,IAAA,IAAA,KAAA,GAAA,MAAA,CAAA,SAAA,CAAA,IAAA,CAAA,CAAA;IACW,MAAM,CAAA,KAAA,EAAA,YAAA;AAAA,MAAA,OAAA,IAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AAAA,IAAAL,UAAA,CAAA,KAAA,EAAA,YAAA;MAAA,OACZL,KAAK,CAACE,QAAQ,CAAA;AAAA,KAAA,CAAA,CAAA;AAAA,IAAA,OAAA,KAAA,CAAA;AAAA,GAAA,EAAA,CAAA;AAGrB,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACaS,YAMX,GAAG,SANQA,YAMX,CAAIX,KAAK,EAAK;AACd,EAAA,IAAMY,OAAO,GAAGN,kBAAU,CAACT,aAAa,CAAC,CAAA;AACzC,EAAA,IAAMgB,WAAW,GAAG,SAAdA,WAAW,GAAS;AAAA,IAAA,IAAA,QAAA,EAAA,SAAA,CAAA;IACxB,IAAID,OAAO,IAAI,IAAI,EAAE,OAAA;AACrB,IAAA,IAAA,QAAA,GAAA,cAAA,CAAkBA,OAAO,EAAA,CAAA,CAAA;MAAlBJ,OAAO,GAAA,QAAA,CAAA,CAAA,CAAA,CAAA;AACdR,IAAAA,KAAK,CAACP,IAAI,GAAGe,CAAAA,QAAAA,GAAAA,OAAO,EAAE,MAAT,IAAA,IAAA,QAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAWf,IAAI,EAAE,gBAAGe,OAAO,EAAE,MAAT,IAAA,IAAA,SAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,SAAA,CAAWd,IAAI,EAAE,CAAA;GACnD,CAAA;AACD,EAAA,OAAA,YAAA;AAAA,IAAA,IAAA,KAAA,GAAA,OAAA,CAAA,SAAA,CAAA,IAAA,CAAA,CAAA;AAAA,IAAA,KAAA,CAAA,OAAA,GAKamB,WAAW,CAAA;AAAA,IAAAR,UAAA,CAAA,KAAA,EAAA,YAAA;MAAA,OAEnBL,KAAK,CAACE,QAAQ,CAAA;AAAA,KAAA,CAAA,CAAA;AAAA,IAAAY,UAAA,CAAA,UAAA,GAAA,EAAA;AAAA,MAAA,IAAA,GAAA,GALLd,KAAK,CAACe,QAAQ,IAAI,KAAK;AAAA,QAAA,IAAA,GAC1Bf,KAAK,CAAM,OAAA,CAAA;QAAA,IACPA,GAAAA,KAAK,CAACvB,SAAS,CAAA;AAAA,MAAA,GAAA,KAAA,GAAA,CAAA,GAAA,KAAA,KAAA,CAAA,QAAA,GAAA,GAAA,CAAA,GAAA,GAAA,GAAA,CAAA,CAAA;AAAA,MAAA,IAAA,KAAA,GAAA,CAAA,IAAA,KAAA,KAAA,CAAA,SAAA,GAAA,GAAA,CAAA,IAAA,GAAA,IAAA,CAAA,CAAA;AAAA,MAAA,GAAA,CAAA,IAAA,GAAAuC,aAAA,CAAA,KAAA,EAAA,IAAA,EAAA,GAAA,CAAA,IAAA,CAAA,CAAA;AAAA,MAAA,OAAA,GAAA,CAAA;AAAA,KAAA,EAAA;AAAA,MAAA,GAAA,EAAA,SAAA;AAAA,MAAA,IAAA,EAAA,SAAA;AAAA,MAAA,IAAA,EAAA,SAAA;AAAA,KAAA,CAAA,CAAA;AAAA,IAAA,OAAA,KAAA,CAAA;AAAA,GAAA,EAAA,CAAA;AAMhC,EAAC;AAACC,kBAAA,CAAA,CAAA,OAAA,CAAA,CAAA;;;;;;;;;"}
|
|
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;;;;;;;;;;;"}
|