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.
@@ -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
- const createSlider = (options, ...plugins) => {
28
- let slider;
29
- let el;
30
- const opts = () => access(options);
31
- const [current, setCurrent] = createSignal(opts()?.initial || 0);
32
- const destroy = () => slider && slider.destroy();
33
- const getOptions = (overrides = {}
34
- // @ts-ignore
35
- ) => ({
36
- selector: el.childNodes,
37
- ...opts(),
38
- ...overrides
39
- });
40
- const update = () => slider?.update(getOptions());
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
- const create = newEl => {
148
+ var create = function create(newEl) {
43
149
  el = newEl;
44
- el.classList.add('keen-slider');
45
- onMount(() => {
46
- slider = new KeenSlider(el, getOptions(), plugins);
47
- slider.on('slideChanged', () => setCurrent(slider.track.details.rel));
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 === 'function') {
51
- createEffect(on(() => options, update));
158
+ if (typeof options === "function") {
159
+ createEffect(on(function () {
160
+ return options;
161
+ }, update));
52
162
  }
53
163
  };
54
- return [create, {
55
- current,
56
- next: () => slider && slider.next(),
57
- prev: () => slider && slider.prev(),
58
- details: () => slider ? slider.track.details : {},
59
- slider: () => slider,
60
- moveTo: (id, duration = 250, absolute = false, easing) => slider?.moveToIdx(id, absolute, {
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
- destroy,
65
- update
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
- const SliderContext = createContext(createSignal(null));
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
- const SliderProvider = props => createComponent(SliderContext.Provider, {
87
- get value() {
88
- return createSignal(null);
89
- },
90
- get children() {
91
- return props.children;
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
- const Slider = props => {
102
- if (isServer) return (() => {
103
- const _el$ = _tmpl$.cloneNode(true);
104
- insert(_el$, () => props.children);
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
- const [, setHelpers] = useContext(SliderContext);
108
- const [slider, helpers] = createSlider(props.options || {}, ...(props.plugins || []));
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(() => access(props.children), () => queueMicrotask(() => helpers.update()), {
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
- const _el$2 = _tmpl$.cloneNode(true);
115
- slider(_el$2, () => true);
116
- insert(_el$2, () => props.children);
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
- const SliderButton = props => {
130
- const context = useContext(SliderContext);
131
- const changeSlide = () => {
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
- const [helpers] = context;
134
- props.next ? helpers()?.next() : helpers()?.prev();
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
- const _el$3 = _tmpl$2.cloneNode(true);
282
+ return function () {
283
+ var _el$3 = _tmpl$2.cloneNode(true);
138
284
  _el$3.$$click = changeSlide;
139
- insert(_el$3, () => props.children);
140
- effect(_p$ => {
141
- const _v$ = props.disabled || false,
142
- _v$2 = props.class,
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 'solid-js';
2
- import { KeenSliderHooks, KeenSliderInstance, KeenSliderOptions, KeenSliderPlugin, TrackDetails } from 'keen-slider';
3
- declare module 'solid-js' {
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>[]) => [create: (el: HTMLElement) => void, helpers: {
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>;
@@ -1,6 +1,6 @@
1
- import { on, onMount, createSignal, onCleanup, createEffect } from 'solid-js';
2
- import { access } from '@solid-primitives/utils';
3
- import KeenSlider from 'keen-slider';
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('keen-slider');
40
+ el.classList.add("keen-slider");
43
41
  onMount(() => {
44
42
  slider = new KeenSlider(el, getOptions(), plugins);
45
- slider.on('slideChanged', () => setCurrent(slider.track.details.rel));
43
+ slider.on("slideChanged", () => setCurrent(slider.track.details.rel));
46
44
  });
47
45
  onCleanup(destroy);
48
- if (typeof options === 'function') {
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: (id, duration = 250, absolute = false, easing) => slider?.moveToIdx(id, absolute, { duration, easing: easing }),
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.16",
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/style.css": "./dist/adaptiveHeight/slider.css",
54
- "./adaptiveWidth/style.css": "./dist/adaptiveWidth/slider.css"
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.7",
77
- "@solid-primitives/utils": "^6.2.1",
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.5.0",
82
- "prettier": "^3.1.0",
83
- "rollup": "^4.4.1",
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.2.2"
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
+ }