solid-slider 1.3.16 → 1.3.18
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 +55 -17
- package/dist/adaptiveHeight/index.common.js +2 -4
- 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 -4
- 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/autoplay.d.ts +2 -2
- package/dist/autoplay/autoplay.jsx +4 -4
- package/dist/autoplay/index.common.js +17 -9
- package/dist/autoplay/index.common.js.map +1 -1
- package/dist/autoplay/index.module.js +17 -7
- package/dist/autoplay/index.module.js.map +1 -1
- package/dist/index/components.d.ts +5 -5
- package/dist/index/index.common.js +213 -71
- package/dist/index/index.common.js.map +1 -1
- package/dist/index/index.module.js +214 -66
- package/dist/index/index.module.js.map +1 -1
- package/dist/index/primitive.d.ts +17 -13
- package/dist/index/primitive.js +14 -13
- package/package.json +18 -15
|
@@ -3,6 +3,99 @@ import { access } from '@solid-primitives/utils';
|
|
|
3
3
|
import KeenSlider from 'keen-slider';
|
|
4
4
|
import { createComponent, isServer, insert, effect, classList, delegateEvents, template } from 'solid-js/web';
|
|
5
5
|
|
|
6
|
+
function ownKeys(object, enumerableOnly) {
|
|
7
|
+
var keys = Object.keys(object);
|
|
8
|
+
if (Object.getOwnPropertySymbols) {
|
|
9
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
10
|
+
enumerableOnly && (symbols = symbols.filter(function (sym) {
|
|
11
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
12
|
+
})), keys.push.apply(keys, symbols);
|
|
13
|
+
}
|
|
14
|
+
return keys;
|
|
15
|
+
}
|
|
16
|
+
function _objectSpread2(target) {
|
|
17
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
18
|
+
var source = null != arguments[i] ? arguments[i] : {};
|
|
19
|
+
i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
|
|
20
|
+
_defineProperty(target, key, source[key]);
|
|
21
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
|
|
22
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
return target;
|
|
26
|
+
}
|
|
27
|
+
function _defineProperty(obj, key, value) {
|
|
28
|
+
if (key in obj) {
|
|
29
|
+
Object.defineProperty(obj, key, {
|
|
30
|
+
value: value,
|
|
31
|
+
enumerable: true,
|
|
32
|
+
configurable: true,
|
|
33
|
+
writable: true
|
|
34
|
+
});
|
|
35
|
+
} else {
|
|
36
|
+
obj[key] = value;
|
|
37
|
+
}
|
|
38
|
+
return obj;
|
|
39
|
+
}
|
|
40
|
+
function _slicedToArray(arr, i) {
|
|
41
|
+
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
|
42
|
+
}
|
|
43
|
+
function _toConsumableArray(arr) {
|
|
44
|
+
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
|
|
45
|
+
}
|
|
46
|
+
function _arrayWithoutHoles(arr) {
|
|
47
|
+
if (Array.isArray(arr)) return _arrayLikeToArray(arr);
|
|
48
|
+
}
|
|
49
|
+
function _arrayWithHoles(arr) {
|
|
50
|
+
if (Array.isArray(arr)) return arr;
|
|
51
|
+
}
|
|
52
|
+
function _iterableToArray(iter) {
|
|
53
|
+
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
54
|
+
}
|
|
55
|
+
function _iterableToArrayLimit(arr, i) {
|
|
56
|
+
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
57
|
+
if (_i == null) return;
|
|
58
|
+
var _arr = [];
|
|
59
|
+
var _n = true;
|
|
60
|
+
var _d = false;
|
|
61
|
+
var _s, _e;
|
|
62
|
+
try {
|
|
63
|
+
for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
|
|
64
|
+
_arr.push(_s.value);
|
|
65
|
+
if (i && _arr.length === i) break;
|
|
66
|
+
}
|
|
67
|
+
} catch (err) {
|
|
68
|
+
_d = true;
|
|
69
|
+
_e = err;
|
|
70
|
+
} finally {
|
|
71
|
+
try {
|
|
72
|
+
if (!_n && _i["return"] != null) _i["return"]();
|
|
73
|
+
} finally {
|
|
74
|
+
if (_d) throw _e;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return _arr;
|
|
78
|
+
}
|
|
79
|
+
function _unsupportedIterableToArray(o, minLen) {
|
|
80
|
+
if (!o) return;
|
|
81
|
+
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
82
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
83
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
84
|
+
if (n === "Map" || n === "Set") return Array.from(o);
|
|
85
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
86
|
+
}
|
|
87
|
+
function _arrayLikeToArray(arr, len) {
|
|
88
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
89
|
+
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
90
|
+
return arr2;
|
|
91
|
+
}
|
|
92
|
+
function _nonIterableSpread() {
|
|
93
|
+
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
94
|
+
}
|
|
95
|
+
function _nonIterableRest() {
|
|
96
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
97
|
+
}
|
|
98
|
+
|
|
6
99
|
/**
|
|
7
100
|
* Creates a slider powered by KeenSlider.
|
|
8
101
|
*
|
|
@@ -24,45 +117,77 @@ import { createComponent, isServer, insert, effect, classList, delegateEvents, t
|
|
|
24
117
|
* <div use:slider>...</div>
|
|
25
118
|
* ```
|
|
26
119
|
*/
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
120
|
+
var createSlider = function createSlider(options) {
|
|
121
|
+
var _opts;
|
|
122
|
+
for (var _len = arguments.length, plugins = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
123
|
+
plugins[_key - 1] = arguments[_key];
|
|
124
|
+
}
|
|
125
|
+
var _slider3;
|
|
126
|
+
var el;
|
|
127
|
+
var opts = function opts() {
|
|
128
|
+
return access(options);
|
|
129
|
+
};
|
|
130
|
+
var _createSignal = createSignal(((_opts = opts()) === null || _opts === void 0 ? void 0 : _opts.initial) || 0),
|
|
131
|
+
_createSignal2 = _slicedToArray(_createSignal, 2),
|
|
132
|
+
current = _createSignal2[0],
|
|
133
|
+
setCurrent = _createSignal2[1];
|
|
134
|
+
var destroy = function destroy() {
|
|
135
|
+
return _slider3 && _slider3.destroy();
|
|
136
|
+
};
|
|
137
|
+
var getOptions = function getOptions() {
|
|
138
|
+
var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
139
|
+
return _objectSpread2(_objectSpread2({
|
|
140
|
+
selector: el.childNodes
|
|
141
|
+
}, opts()), overrides);
|
|
142
|
+
};
|
|
143
|
+
var update = function update() {
|
|
144
|
+
var _slider;
|
|
145
|
+
return (_slider = _slider3) === null || _slider === void 0 ? void 0 : _slider.update(getOptions());
|
|
146
|
+
};
|
|
41
147
|
// Slider creation method and directive function
|
|
42
|
-
|
|
148
|
+
var create = function create(newEl) {
|
|
43
149
|
el = newEl;
|
|
44
|
-
el.classList.add(
|
|
45
|
-
onMount(()
|
|
46
|
-
|
|
47
|
-
|
|
150
|
+
el.classList.add("keen-slider");
|
|
151
|
+
onMount(function () {
|
|
152
|
+
_slider3 = new KeenSlider(el, getOptions(), plugins);
|
|
153
|
+
_slider3.on("slideChanged", function () {
|
|
154
|
+
return setCurrent(_slider3.track.details.rel);
|
|
155
|
+
});
|
|
48
156
|
});
|
|
49
157
|
onCleanup(destroy);
|
|
50
|
-
if (typeof options ===
|
|
51
|
-
createEffect(on(()
|
|
158
|
+
if (typeof options === "function") {
|
|
159
|
+
createEffect(on(function () {
|
|
160
|
+
return options;
|
|
161
|
+
}, update));
|
|
52
162
|
}
|
|
53
163
|
};
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
duration,
|
|
164
|
+
var moveTo = function moveTo(id) {
|
|
165
|
+
var _slider2;
|
|
166
|
+
var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 250;
|
|
167
|
+
var absolute = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
168
|
+
var easing = arguments.length > 3 ? arguments[3] : undefined;
|
|
169
|
+
(_slider2 = _slider3) === null || _slider2 === void 0 ? void 0 : _slider2.moveToIdx(id, absolute, {
|
|
170
|
+
duration: duration,
|
|
62
171
|
easing: easing
|
|
63
|
-
})
|
|
64
|
-
|
|
65
|
-
|
|
172
|
+
});
|
|
173
|
+
};
|
|
174
|
+
return [create, {
|
|
175
|
+
current: current,
|
|
176
|
+
next: function next() {
|
|
177
|
+
return _slider3 && _slider3.next();
|
|
178
|
+
},
|
|
179
|
+
prev: function prev() {
|
|
180
|
+
return _slider3 && _slider3.prev();
|
|
181
|
+
},
|
|
182
|
+
details: function details() {
|
|
183
|
+
return _slider3 ? _slider3.track.details : {};
|
|
184
|
+
},
|
|
185
|
+
slider: function slider() {
|
|
186
|
+
return _slider3;
|
|
187
|
+
},
|
|
188
|
+
moveTo: moveTo,
|
|
189
|
+
destroy: destroy,
|
|
190
|
+
update: update
|
|
66
191
|
}];
|
|
67
192
|
};
|
|
68
193
|
|
|
@@ -75,7 +200,7 @@ function returnType(func) {
|
|
|
75
200
|
return {};
|
|
76
201
|
}
|
|
77
202
|
// Main context for the slider
|
|
78
|
-
|
|
203
|
+
var SliderContext = createContext(createSignal(null));
|
|
79
204
|
|
|
80
205
|
/**
|
|
81
206
|
* A helpful and simple Provider to wrap your Slider if controls such as SliderButton are used.
|
|
@@ -83,14 +208,16 @@ const SliderContext = createContext(createSignal(null));
|
|
|
83
208
|
* @param props {KeenSliderOptions} options - Accepts all KeenSlider options.
|
|
84
209
|
* @param props {KeenSLiderPlugin} plugins - A list of Solid Slider or Keen slider plugins.
|
|
85
210
|
*/
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
}
|
|
211
|
+
var SliderProvider = function SliderProvider(props) {
|
|
212
|
+
return createComponent(SliderContext.Provider, {
|
|
213
|
+
get value() {
|
|
214
|
+
return createSignal(null);
|
|
215
|
+
},
|
|
216
|
+
get children() {
|
|
217
|
+
return props.children;
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
};
|
|
94
221
|
|
|
95
222
|
/**
|
|
96
223
|
* Main Slider component for specifying the Slider on the page.
|
|
@@ -98,24 +225,41 @@ const SliderProvider = props => createComponent(SliderContext.Provider, {
|
|
|
98
225
|
* @param props {KeenSliderOptions} options - Accepts all KeenSlider options.
|
|
99
226
|
* @param props {KeenSLiderPlugin} plugins - A list of Solid Slider or Keen slider plugins.
|
|
100
227
|
*/
|
|
101
|
-
|
|
102
|
-
if (isServer) return (
|
|
103
|
-
|
|
104
|
-
insert(_el$, ()
|
|
228
|
+
var Slider = function Slider(props) {
|
|
229
|
+
if (isServer) return function () {
|
|
230
|
+
var _el$ = _tmpl$.cloneNode(true);
|
|
231
|
+
insert(_el$, function () {
|
|
232
|
+
return props.children;
|
|
233
|
+
});
|
|
105
234
|
return _el$;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
|
|
235
|
+
}();
|
|
236
|
+
var _useContext = useContext(SliderContext),
|
|
237
|
+
_useContext2 = _slicedToArray(_useContext, 2),
|
|
238
|
+
setHelpers = _useContext2[1];
|
|
239
|
+
var _createSlider = createSlider.apply(void 0, [props.options || {}].concat(_toConsumableArray(props.plugins || []))),
|
|
240
|
+
_createSlider2 = _slicedToArray(_createSlider, 2),
|
|
241
|
+
slider = _createSlider2[0],
|
|
242
|
+
helpers = _createSlider2[1];
|
|
109
243
|
setHelpers(helpers);
|
|
110
|
-
createEffect(on(
|
|
244
|
+
createEffect(on(function () {
|
|
245
|
+
return access(props.children);
|
|
246
|
+
}, function () {
|
|
247
|
+
return queueMicrotask(function () {
|
|
248
|
+
return helpers.update();
|
|
249
|
+
});
|
|
250
|
+
}, {
|
|
111
251
|
defer: true
|
|
112
252
|
}));
|
|
113
|
-
return (
|
|
114
|
-
|
|
115
|
-
slider(_el$2, ()
|
|
116
|
-
|
|
253
|
+
return function () {
|
|
254
|
+
var _el$2 = _tmpl$.cloneNode(true);
|
|
255
|
+
slider(_el$2, function () {
|
|
256
|
+
return true;
|
|
257
|
+
});
|
|
258
|
+
insert(_el$2, function () {
|
|
259
|
+
return props.children;
|
|
260
|
+
});
|
|
117
261
|
return _el$2;
|
|
118
|
-
}
|
|
262
|
+
}();
|
|
119
263
|
};
|
|
120
264
|
|
|
121
265
|
/**
|
|
@@ -126,20 +270,24 @@ const Slider = props => {
|
|
|
126
270
|
* @param props {string} class - Class to override the button.
|
|
127
271
|
* @param props {object} classList - List of classes to override the button.
|
|
128
272
|
*/
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
273
|
+
var SliderButton = function SliderButton(props) {
|
|
274
|
+
var context = useContext(SliderContext);
|
|
275
|
+
var changeSlide = function changeSlide() {
|
|
276
|
+
var _helpers, _helpers2;
|
|
132
277
|
if (context == null) return;
|
|
133
|
-
|
|
134
|
-
|
|
278
|
+
var _context = _slicedToArray(context, 1),
|
|
279
|
+
helpers = _context[0];
|
|
280
|
+
props.next ? (_helpers = helpers()) === null || _helpers === void 0 ? void 0 : _helpers.next() : (_helpers2 = helpers()) === null || _helpers2 === void 0 ? void 0 : _helpers2.prev();
|
|
135
281
|
};
|
|
136
|
-
return (
|
|
137
|
-
|
|
282
|
+
return function () {
|
|
283
|
+
var _el$3 = _tmpl$2.cloneNode(true);
|
|
138
284
|
_el$3.$$click = changeSlide;
|
|
139
|
-
insert(_el$3, ()
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
285
|
+
insert(_el$3, function () {
|
|
286
|
+
return props.children;
|
|
287
|
+
});
|
|
288
|
+
effect(function (_p$) {
|
|
289
|
+
var _v$ = props.disabled || false,
|
|
290
|
+
_v$2 = props["class"],
|
|
143
291
|
_v$3 = props.classList;
|
|
144
292
|
_v$ !== _p$._v$ && (_el$3.disabled = _p$._v$ = _v$);
|
|
145
293
|
_v$2 !== _p$._v$2 && (_el$3.className = _p$._v$2 = _v$2);
|
|
@@ -151,7 +299,7 @@ const SliderButton = props => {
|
|
|
151
299
|
_v$3: undefined
|
|
152
300
|
});
|
|
153
301
|
return _el$3;
|
|
154
|
-
}
|
|
302
|
+
}();
|
|
155
303
|
};
|
|
156
304
|
delegateEvents(["click"]);
|
|
157
305
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.module.js","sources":["../../src/primitive.ts","../../src/components.tsx"],"sourcesContent":["import { on, onMount, createSignal, onCleanup, Accessor, createEffect } 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\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 = <O = {}, P = {}, H extends string = KeenSliderHooks>(\n options?: KeenSliderOptions<O, P, H> | Accessor<KeenSliderOptions<O, P, H>>,\n ...plugins: KeenSliderPlugin<O, P, H>[]\n): [\n create: (el: HTMLElement) => void,\n helpers: {\n current: Accessor<number>;\n next: Accessor<void>;\n prev: Accessor<void>;\n moveTo: (\n id: number,\n duration?: number,\n absolute?: boolean,\n easing?: (t: number) => number\n ) => void;\n details: Accessor<TrackDetails>;\n slider: Accessor<KeenSliderInstance<O, P, H> | undefined>;\n destroy: Accessor<void>;\n update: VoidFunction;\n }\n] => {\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 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: (id: number, duration = 250, absolute = false, easing?: (t: number) => number) =>\n slider?.moveToIdx(id, absolute, { duration, easing: easing }),\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","current","setCurrent","createSignal","initial","destroy","getOptions","overrides","selector","childNodes","update","create","newEl","classList","add","onMount","KeenSlider","on","track","details","rel","onCleanup","createEffect","next","prev","moveTo","id","duration","absolute","easing","moveToIdx","returnType","func","SliderContext","createContext","SliderProvider","props","_$createComponent","children","Slider","isServer","_$insert","setHelpers","useContext","helpers","queueMicrotask","defer","SliderButton","context","changeSlide","_$effect","disabled","class","_$classList","_$delegateEvents"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.module.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,12 +1,25 @@
|
|
|
1
|
-
import { Accessor } from
|
|
2
|
-
import { KeenSliderHooks, KeenSliderInstance, KeenSliderOptions, KeenSliderPlugin, TrackDetails } from
|
|
3
|
-
declare module
|
|
1
|
+
import { Accessor } from "solid-js";
|
|
2
|
+
import { KeenSliderHooks, KeenSliderInstance, KeenSliderOptions, KeenSliderPlugin, TrackDetails } from "keen-slider";
|
|
3
|
+
declare module "solid-js" {
|
|
4
4
|
namespace JSX {
|
|
5
5
|
interface Directives {
|
|
6
6
|
slider: {};
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
+
export type SliderControls<O, P, H extends string> = [
|
|
11
|
+
create: (el: HTMLElement) => void,
|
|
12
|
+
helpers: {
|
|
13
|
+
current: Accessor<number>;
|
|
14
|
+
next: VoidFunction;
|
|
15
|
+
prev: VoidFunction;
|
|
16
|
+
moveTo: (id: number, duration?: number, absolute?: boolean, easing?: (t: number) => number) => void;
|
|
17
|
+
details: () => TrackDetails;
|
|
18
|
+
slider: () => KeenSliderInstance<O, P, H> | undefined;
|
|
19
|
+
destroy: VoidFunction;
|
|
20
|
+
update: VoidFunction;
|
|
21
|
+
}
|
|
22
|
+
];
|
|
10
23
|
/**
|
|
11
24
|
* Creates a slider powered by KeenSlider.
|
|
12
25
|
*
|
|
@@ -28,13 +41,4 @@ declare module 'solid-js' {
|
|
|
28
41
|
* <div use:slider>...</div>
|
|
29
42
|
* ```
|
|
30
43
|
*/
|
|
31
|
-
export declare const createSlider: <O = {}, P = {}, H extends string = KeenSliderHooks>(options?: KeenSliderOptions<O, P, H> | Accessor<KeenSliderOptions<O, P, H>>, ...plugins: KeenSliderPlugin<O, P, H>[]) =>
|
|
32
|
-
current: Accessor<number>;
|
|
33
|
-
next: Accessor<void>;
|
|
34
|
-
prev: Accessor<void>;
|
|
35
|
-
moveTo: (id: number, duration?: number, absolute?: boolean, easing?: (t: number) => number) => void;
|
|
36
|
-
details: Accessor<TrackDetails>;
|
|
37
|
-
slider: Accessor<KeenSliderInstance<O, P, H>>;
|
|
38
|
-
destroy: Accessor<void>;
|
|
39
|
-
update: VoidFunction;
|
|
40
|
-
}];
|
|
44
|
+
export declare const createSlider: <O = {}, P = {}, H extends string = KeenSliderHooks>(options?: KeenSliderOptions<O, P, H> | Accessor<KeenSliderOptions<O, P, H>>, ...plugins: KeenSliderPlugin<O, P, H>[]) => SliderControls<O, P, H>;
|
package/dist/index/primitive.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { on, onMount, createSignal, onCleanup, createEffect } from
|
|
2
|
-
import { access } from
|
|
3
|
-
import KeenSlider from
|
|
1
|
+
import { on, onMount, createSignal, onCleanup, createEffect, } from "solid-js";
|
|
2
|
+
import { access } from "@solid-primitives/utils";
|
|
3
|
+
import KeenSlider from "keen-slider";
|
|
4
4
|
/**
|
|
5
5
|
* Creates a slider powered by KeenSlider.
|
|
6
6
|
*
|
|
@@ -28,27 +28,28 @@ export const createSlider = (options, ...plugins) => {
|
|
|
28
28
|
const opts = () => access(options);
|
|
29
29
|
const [current, setCurrent] = createSignal(opts()?.initial || 0);
|
|
30
30
|
const destroy = () => slider && slider.destroy();
|
|
31
|
-
const getOptions = (overrides = {}
|
|
32
|
-
// @ts-ignore
|
|
33
|
-
) => ({
|
|
31
|
+
const getOptions = (overrides = {}) => ({
|
|
34
32
|
selector: el.childNodes,
|
|
35
33
|
...opts(),
|
|
36
|
-
...overrides
|
|
34
|
+
...overrides,
|
|
37
35
|
});
|
|
38
36
|
const update = () => slider?.update(getOptions());
|
|
39
37
|
// Slider creation method and directive function
|
|
40
38
|
const create = (newEl) => {
|
|
41
39
|
el = newEl;
|
|
42
|
-
el.classList.add(
|
|
40
|
+
el.classList.add("keen-slider");
|
|
43
41
|
onMount(() => {
|
|
44
42
|
slider = new KeenSlider(el, getOptions(), plugins);
|
|
45
|
-
slider.on(
|
|
43
|
+
slider.on("slideChanged", () => setCurrent(slider.track.details.rel));
|
|
46
44
|
});
|
|
47
45
|
onCleanup(destroy);
|
|
48
|
-
if (typeof options ===
|
|
46
|
+
if (typeof options === "function") {
|
|
49
47
|
createEffect(on(() => options, update));
|
|
50
48
|
}
|
|
51
49
|
};
|
|
50
|
+
const moveTo = (id, duration = 250, absolute = false, easing) => {
|
|
51
|
+
slider?.moveToIdx(id, absolute, { duration, easing: easing });
|
|
52
|
+
};
|
|
52
53
|
return [
|
|
53
54
|
create,
|
|
54
55
|
{
|
|
@@ -57,9 +58,9 @@ export const createSlider = (options, ...plugins) => {
|
|
|
57
58
|
prev: () => slider && slider.prev(),
|
|
58
59
|
details: () => (slider ? slider.track.details : {}),
|
|
59
60
|
slider: () => slider,
|
|
60
|
-
moveTo
|
|
61
|
+
moveTo,
|
|
61
62
|
destroy,
|
|
62
|
-
update
|
|
63
|
-
}
|
|
63
|
+
update,
|
|
64
|
+
},
|
|
64
65
|
];
|
|
65
66
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "solid-slider",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.18",
|
|
4
4
|
"description": "A slider utility for SolidJS.",
|
|
5
5
|
"author": "David Di Biase",
|
|
6
6
|
"repository": {
|
|
@@ -12,14 +12,10 @@
|
|
|
12
12
|
"url": "https://github.com/davedbase/solid-slider/issues"
|
|
13
13
|
},
|
|
14
14
|
"homepage": "https://github.com/davedbase/solid-slider#readme",
|
|
15
|
-
"scripts": {
|
|
16
|
-
"format": "prettier -w \"src/**/*.{js,ts,json,css,tsx,jsx}\"",
|
|
17
|
-
"build": "rollup -c rollup.config.js && cp src/slider.css dist/slider.css && cp src/plugins/adaptiveHeight.css dist/adaptiveHeight/style.css && cp src/plugins/adaptiveWidth.css dist/adaptiveWidth/style.css"
|
|
18
|
-
},
|
|
19
15
|
"type": "module",
|
|
20
16
|
"main": "dist/index/index.common.js",
|
|
21
17
|
"module": "dist/index/index.module.js",
|
|
22
|
-
"types": "dist/index/index.d.ts",
|
|
18
|
+
"types": "./dist/index/index.d.ts",
|
|
23
19
|
"exports": {
|
|
24
20
|
".": {
|
|
25
21
|
"solid": "./dist/index/index.jsx",
|
|
@@ -29,6 +25,7 @@
|
|
|
29
25
|
"node": "./dist/index/index.common.js"
|
|
30
26
|
},
|
|
31
27
|
"./plugins/autoplay": {
|
|
28
|
+
"types": "./dist/autoplay/index.d.ts",
|
|
32
29
|
"solid": "./dist/autoplay/autoplay.jsx",
|
|
33
30
|
"import": "./dist/autoplay/index.module.js",
|
|
34
31
|
"browser": "./dist/autoplay/index.module.js",
|
|
@@ -36,6 +33,7 @@
|
|
|
36
33
|
"node": "./dist/autoplay/index.common.js"
|
|
37
34
|
},
|
|
38
35
|
"./plugins/adaptiveHeight": {
|
|
36
|
+
"types": "./dist/adaptiveHeight/index.d.ts",
|
|
39
37
|
"solid": "./dist/adaptiveHeight/adaptiveHeight.jsx",
|
|
40
38
|
"import": "./dist/adaptiveHeight/index.module.js",
|
|
41
39
|
"browser": "./dist/adaptiveHeight/index.module.js",
|
|
@@ -43,6 +41,7 @@
|
|
|
43
41
|
"node": "./dist/adaptiveHeight/index.common.js"
|
|
44
42
|
},
|
|
45
43
|
"./plugins/adaptiveWidth": {
|
|
44
|
+
"types": "./dist/adaptiveWidth/index.d.ts",
|
|
46
45
|
"solid": "./dist/adaptiveWidth/adaptiveWidth.jsx",
|
|
47
46
|
"import": "./dist/adaptiveWidth/index.module.js",
|
|
48
47
|
"browser": "./dist/adaptiveWidth/index.module.js",
|
|
@@ -50,8 +49,8 @@
|
|
|
50
49
|
"node": "./dist/adaptiveWidth/index.common.js"
|
|
51
50
|
},
|
|
52
51
|
"./slider.css": "./dist/slider.css",
|
|
53
|
-
"./adaptiveHeight
|
|
54
|
-
"./adaptiveWidth
|
|
52
|
+
"./plugins/adaptiveHeight.css": "./dist/adaptiveHeight/slider.css",
|
|
53
|
+
"./plugins/adaptiveWidth.css": "./dist/adaptiveWidth/slider.css"
|
|
55
54
|
},
|
|
56
55
|
"sideEffects": false,
|
|
57
56
|
"files": [
|
|
@@ -73,15 +72,19 @@
|
|
|
73
72
|
"solid-js": "^1.8.5"
|
|
74
73
|
},
|
|
75
74
|
"dependencies": {
|
|
76
|
-
"@solid-primitives/timer": "^1.3.
|
|
77
|
-
"@solid-primitives/utils": "^6.2.
|
|
75
|
+
"@solid-primitives/timer": "^1.3.10",
|
|
76
|
+
"@solid-primitives/utils": "^6.2.3",
|
|
78
77
|
"keen-slider": "^6.8.6"
|
|
79
78
|
},
|
|
80
79
|
"devDependencies": {
|
|
81
|
-
"esbuild-plugin-solid": "^0.
|
|
82
|
-
"prettier": "^3.
|
|
83
|
-
"rollup": "^4.
|
|
80
|
+
"esbuild-plugin-solid": "^0.6.0",
|
|
81
|
+
"prettier": "^3.3.3",
|
|
82
|
+
"rollup": "^4.21.3",
|
|
84
83
|
"rollup-preset-solid": "^2.0.1",
|
|
85
|
-
"typescript": "^5.
|
|
84
|
+
"typescript": "^5.5.4"
|
|
85
|
+
},
|
|
86
|
+
"scripts": {
|
|
87
|
+
"format": "prettier -w \"src/**/*.{js,ts,json,css,tsx,jsx}\"",
|
|
88
|
+
"build": "rollup -c rollup.config.js && cp src/slider.css dist/slider.css && cp src/plugins/adaptiveHeight.css dist/adaptiveHeight/style.css && cp src/plugins/adaptiveWidth.css dist/adaptiveWidth/style.css"
|
|
86
89
|
}
|
|
87
|
-
}
|
|
90
|
+
}
|