@brytdesigns/web-component-keen-slider 1.0.13 → 1.1.0

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/dist/esm/index.js CHANGED
@@ -1,9 +1,20 @@
1
- import { customShadowlessElement, correctElementType, getContextFromProvider, invokeOnLoaded } from '@brytdesigns/web-component-utils';
1
+ import { createWithElementContext, customShadowlessElement, correctElementType, getContextFromProvider, invokeOnLoaded } from '@brytdesigns/web-component-core/utils';
2
2
  import { splitProps, createSignal, createMemo, onCleanup, createEffect, on, observable, mergeProps } from 'solid-js';
3
3
  import _KeenSlider from 'keen-slider';
4
- import { createContext, provide, consume } from 'component-register';
4
+ import { createContext, consume, provide } from 'component-register';
5
5
 
6
- // src/index.ts
6
+ var __defProp = Object.defineProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+
12
+ // src/components/keen-slider.ts
13
+ var keen_slider_exports = {};
14
+ __export(keen_slider_exports, {
15
+ Component: () => Component,
16
+ Name: () => Name
17
+ });
7
18
 
8
19
  // src/utils.ts
9
20
  function constrain(value, min = -Infinity, max = Infinity) {
@@ -105,12 +116,12 @@ var KeenSlider = class extends _KeenSlider {
105
116
  this.direction = null;
106
117
  this.on("slideChanged", attachMoreDetails(prevSlide));
107
118
  attachAriaAttributes(this);
119
+ const _next = this.next, _prev = this.prev;
108
120
  this.next = function() {
109
- if (!this.options?.slides) return;
110
121
  if (typeof this.options.slides === "number" || typeof this.options.slides === "function")
111
- return;
122
+ return _next();
112
123
  let amount = 1;
113
- if ("perScroll" in this.options.slides === true) {
124
+ if (this.options?.slides && "perScroll" in this.options.slides === true) {
114
125
  amount = this.options?.slides?.perScroll || 1;
115
126
  }
116
127
  if (!this.options.loop) {
@@ -125,11 +136,10 @@ var KeenSlider = class extends _KeenSlider {
125
136
  return this.moveToIdx(constrain(this.track.details.abs + amount), true);
126
137
  };
127
138
  this.prev = function() {
128
- if (!this.options?.slides) return;
129
139
  if (typeof this.options.slides === "number" || typeof this.options.slides === "function")
130
- return;
140
+ return _prev();
131
141
  let amount = 1;
132
- if ("perScroll" in this.options.slides === true) {
142
+ if (this.options?.slides && "perScroll" in this.options.slides === true) {
133
143
  amount = this.options?.slides?.perScroll || 1;
134
144
  }
135
145
  if (!this.options.loop) {
@@ -176,6 +186,7 @@ function initializeKeenSliderContext(props) {
176
186
  }
177
187
  onCleanup(() => {
178
188
  slider2.destroy();
189
+ privateProps.root.setAttribute("data-initialized", "false");
179
190
  if (m) m.disconnect();
180
191
  });
181
192
  return slider2;
@@ -266,14 +277,16 @@ function addPlugin({ target, plugin, controller }) {
266
277
  }
267
278
  );
268
279
  }
280
+ var withKeenSliderElementContext = createWithElementContext(KeenSliderContextState);
269
281
 
270
282
  // src/components/keen-slider.ts
271
- var KeenSlider2 = (props, { element }) => {
283
+ var Name = `keen-slider`;
284
+ var Component = (props, { element }) => {
272
285
  const context = provideKeenSliderContext(props, element);
273
286
  const [slider, methods] = useKeenSliderContext(context);
274
287
  const observer = observable(slider);
275
288
  Object.assign(element, {
276
- subscribe(callback = (slider2) => null) {
289
+ subscribe(callback = (_) => null) {
277
290
  function listen(slider2) {
278
291
  const cleanup = callback(slider2);
279
292
  slider2.on(
@@ -290,17 +303,17 @@ var KeenSlider2 = (props, { element }) => {
290
303
 
291
304
  // src/index.ts
292
305
  customShadowlessElement(
293
- "keen-slider",
306
+ keen_slider_exports.Name,
294
307
  {
295
308
  // @ts-ignore
296
309
  config: {},
297
310
  centerSlides: false,
298
311
  refreshOnChildrenChange: false
299
312
  },
300
- correctElementType(KeenSlider2),
313
+ correctElementType(keen_slider_exports.Component),
301
314
  initializeSliderClasses
302
315
  );
303
316
 
304
- export { addPlugin, getKeenSliderContext, useKeenSlider };
317
+ export { addPlugin, getKeenSliderContext, useKeenSlider, withKeenSliderElementContext };
305
318
  //# sourceMappingURL=index.js.map
306
319
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils.ts","../../src/KeenSlider.ts","../../src/hooks/useKeenSlider.ts","../../src/components/keen-slider.ts","../../src/index.ts"],"names":["slider","addPlugin","plugins","KeenSlider"],"mappings":"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","file":"index.js","sourcesContent":["import type { ICustomElement } from \"component-register\";\n\nexport function constrain(value: number, min = -Infinity, max = Infinity) {\n return Math.min(Math.max(value, min), max);\n}\n\ntype Options = {\n element: HTMLElement & ICustomElement;\n};\n\nexport function initializeSliderClasses<Props>(\n ComponentType = (props: Props, options: Options) => {}\n) {\n return (props: Props, options: Options) => {\n const { element } = options;\n element.classList.add(\"keen-slider\");\n Array.from(element.children).forEach((child) =>\n child.classList.add(\"keen-slider__slide\")\n );\n return ComponentType(props, options);\n };\n}\n","import type { ICustomElement } from \"component-register\";\n\nimport _KeenSlider, {\n type KeenSliderOptions as _KeenSliderOptions,\n type KeenSliderPlugin as _KeenSliderPlugin,\n type KeenSliderInstance as _KeenSliderInstance,\n type KeenSliderHooks as _KeenSliderHooks,\n} from \"keen-slider\";\n\nimport { constrain } from \"./utils\";\n\nexport type KeenSliderHooks = _KeenSliderHooks;\n\nexport type KeenSliderInstance<\n O = {},\n P = {},\n H extends _KeenSliderHooks = _KeenSliderHooks,\n> = _KeenSliderInstance<O, P, H>;\n\ntype ExtendedSlidesOption = NonNullable<\n _KeenSliderInstance[\"options\"][\"slides\"]\n> & {\n perScroll?: number;\n};\n\ntype ExtendedKeenSliderOptions = Omit<\n _KeenSliderInstance[\"options\"],\n \"slides\"\n> & {\n slides?: ExtendedSlidesOption;\n};\n\nexport type KeenSliderOptions<\n O = {},\n P = {},\n H extends _KeenSliderHooks = _KeenSliderHooks,\n> = _KeenSliderOptions<O, P, H> & {\n slides: {\n perScroll?: number;\n } & _KeenSliderOptions<O, P, H>[\"slides\"];\n};\n\nexport type KeenSliderPlugin<\n O = {},\n P = {},\n H extends _KeenSliderHooks = _KeenSliderHooks,\n> = _KeenSliderPlugin<O, P, H>;\n\nfunction attachMoreDetails(prevSlide: number) {\n return function(slider: KeenSliderInstance) {\n if (slider.track.details.rel != slider.animator.targetIdx) return;\n\n (slider as KeenSlider).direction =\n slider.track.details.rel > prevSlide ? \"forward\" : \"backward\";\n\n prevSlide = slider.track.details.rel;\n };\n}\n\nconst attachAriaAttributes: KeenSliderPlugin = (slider) => {\n const maxIdx =\n slider?.track?.details?.maxIdx === Infinity\n ? slider.track.details.length\n : slider?.track?.details?.maxIdx || 0;\n slider.container.setAttribute(\"role\", \"listbox\");\n slider.container.setAttribute(\n \"aria-orientation\",\n slider.options?.vertical ? \"vertical\" : \"horizontal\",\n );\n slider.container.setAttribute(\"aria-multiselectable\", \"false\");\n slider.container.setAttribute(\"aria-label\", \"Slider\");\n slider.container.setAttribute(\"tabindex\", \"0\");\n slider.container.setAttribute(\"aria-live\", \"polite\");\n slider.container.setAttribute(\"aria-atomic\", \"true\");\n slider.container.setAttribute(\"aria-live\", \"polite\");\n slider.container.setAttribute(\"aria-busy\", \"false\");\n slider.container.setAttribute(\"aria-valuemin\", \"0\");\n slider.container.setAttribute(\"aria-valuemax\", `${maxIdx}`);\n slider.container.setAttribute(\n \"aria-valuenow\",\n `${slider?.track?.details?.rel || 0}`,\n );\n\n function getMaxRel(rel: number, perView = 1) {\n return Math.floor(rel + perView - 1);\n }\n\n function slideIsActive(idx: number) {\n const perView = ((slider.options?.slides as any)?.perView as number) || 1,\n rel = slider.track.details.rel,\n maxRel = getMaxRel(rel, perView);\n\n return rel <= idx && idx <= maxRel;\n }\n\n async function updateTabIndexes(slide: HTMLElement, tabindex: string) {\n const focusableElements = Array.from(\n slide.querySelectorAll(\n \"input, a, button:not(:disabled), textarea, select, textarea, [tabindex]\",\n ),\n );\n focusableElements.forEach((element) => {\n element.setAttribute(\"tabindex\", tabindex);\n });\n }\n\n function updateAriaActiveSlide(slide: HTMLElement) {\n slide.setAttribute(\"aria-selected\", \"true\");\n slide.setAttribute(\"aria-hidden\", \"false\");\n slide.setAttribute(\"tabindex\", \"0\");\n updateTabIndexes(slide, \"0\");\n }\n\n function updateAriaInActiveSlide(slide: HTMLElement) {\n slide.setAttribute(\"aria-selected\", \"false\");\n slide.setAttribute(\"aria-hidden\", \"true\");\n slide.setAttribute(\"tabindex\", \"-1\");\n updateTabIndexes(slide, \"-1\");\n }\n\n function updateSlideAriaAttributes(slider: _KeenSliderInstance) {\n if (slider.options?.disabled) {\n slider.slides.forEach((slide, i) => {\n slide.setAttribute(\"role\", \"option\");\n updateAriaActiveSlide(slide);\n });\n return;\n }\n\n slider.slides.forEach((slide, i) => {\n slide.setAttribute(\"role\", \"option\");\n if (slideIsActive(i)) updateAriaActiveSlide(slide);\n else updateAriaInActiveSlide(slide);\n });\n }\n\n slider.on(\"slideChanged\", updateSlideAriaAttributes);\n slider.on(\"created\", updateSlideAriaAttributes);\n slider.on(\"optionsChanged\", updateSlideAriaAttributes);\n slider.on(\"updated\", updateSlideAriaAttributes);\n};\n\nexport default class KeenSlider extends _KeenSlider {\n direction: \"forward\" | \"backward\" | null = null;\n constructor(\n element: ICustomElement & HTMLElement,\n config: KeenSliderOptions,\n plugins: _KeenSliderPlugin[] = [],\n ) {\n super(element, config, plugins);\n let prevSlide = 0;\n\n this.direction = null;\n this.on(\"slideChanged\", attachMoreDetails(prevSlide) as any);\n\n attachAriaAttributes(this);\n\n this.next = function() {\n if (!this.options?.slides) return;\n if (\n typeof this.options.slides === \"number\" ||\n typeof this.options.slides === \"function\"\n )\n return;\n let amount: number = 1;\n if (\"perScroll\" in this.options.slides === true) {\n amount = (this.options?.slides?.perScroll as number) || 1;\n }\n if (!this.options.loop) {\n return this.moveToIdx(\n constrain(\n this.track.details.rel + amount,\n 0,\n this.track.details.maxIdx,\n ),\n );\n }\n return this.moveToIdx(constrain(this.track.details.abs + amount), true);\n };\n\n this.prev = function() {\n if (!this.options?.slides) return;\n if (\n typeof this.options.slides === \"number\" ||\n typeof this.options.slides === \"function\"\n )\n return;\n let amount: number = 1;\n if (\"perScroll\" in this.options.slides === true) {\n amount = (this.options?.slides?.perScroll as number) || 1;\n }\n if (!this.options.loop) {\n this.moveToIdx(\n constrain(\n this.track.details.rel - amount,\n 0,\n this.track.details.maxIdx,\n ),\n );\n }\n return this.moveToIdx(constrain(this.track.details.abs - amount), true);\n };\n }\n}\n","import {\n type ICustomElement,\n createContext,\n provide,\n consume,\n} from \"component-register\";\nimport {\n createEffect,\n mergeProps,\n createSignal,\n createMemo,\n onCleanup,\n on,\n splitProps,\n} from \"solid-js\";\nimport {\n getContextFromProvider,\n invokeOnLoaded,\n} from \"@brytdesigns/web-component-utils\";\nimport KeenSlider, {\n type KeenSliderInstance,\n type KeenSliderOptions,\n type KeenSliderPlugin,\n} from \"../KeenSlider\";\n\ntype CreateContextOptions = {\n root: HTMLElement & ICustomElement;\n config?: KeenSliderOptions;\n centerSlides?: boolean;\n refreshOnChildrenChange?: boolean;\n};\n\ntype WalkableNode = Parameters<typeof provide>[2];\n\ntype KeenSliderContext = ReturnType<typeof initializeKeenSliderContext>;\n\nfunction initializeKeenSliderContext(props: CreateContextOptions) {\n const [privateProps, publicProps] = splitProps(props, [\n \"root\",\n \"centerSlides\",\n \"refreshOnChildrenChange\",\n ]);\n\n const [plugins, setPlugins] = createSignal<KeenSliderPlugin[]>([]);\n const [forceSliderRebuild, setForceSliderRebuild] = createSignal(false);\n\n const mutObserver = createMemo(() => {\n if (props.refreshOnChildrenChange)\n return new MutationObserver(function (mutations) {\n mutations.forEach(function (_) {\n setForceSliderRebuild((v) => !v);\n });\n });\n return null;\n });\n\n const slider = createMemo(() => {\n privateProps.root.setAttribute(\"data-initialized\", \"true\");\n const slider = new KeenSlider(\n privateProps.root,\n publicProps.config || ({} as any),\n plugins(),\n );\n const m = mutObserver();\n\n if (m) {\n m.observe(slider.container, { childList: true });\n forceSliderRebuild();\n }\n\n onCleanup(() => {\n slider.destroy();\n if (m) m.disconnect();\n });\n\n return slider;\n });\n\n function addPlugin(plugin: KeenSliderPlugin) {\n let index = -1;\n\n setPlugins((plugins) => {\n index = plugins.length;\n return [...plugins, plugin];\n });\n\n return function () {\n setPlugins((plugins) => {\n return [...plugins.slice(0, index), ...plugins.slice(index + 1)];\n });\n };\n }\n\n const centeredPlugin: KeenSliderPlugin = (slider) => {\n function centerSlides(slider: KeenSliderInstance) {\n if (slider.track.details.maxIdx > 0) {\n //@ts-ignore\n slider.container.style.justifyContent = null;\n //@ts-ignore\n slider.container.style.transform = null;\n } else {\n slider.container.style.cssText = `\n justify-content: center;\n transform: translateX(-${(slider.options.slides as any)?.spacing || 16}px)\n `;\n }\n }\n\n slider.on(\"created\", centerSlides);\n slider.on(\"optionsChanged\", centerSlides);\n };\n\n createEffect(\n on(\n () => props.centerSlides,\n (centerSlides) => {\n if (!centerSlides) return;\n const remove = addPlugin(centeredPlugin);\n return onCleanup(remove);\n },\n ),\n );\n\n createEffect(\n on(plugins, (plugins) => {\n if (plugins.length === 0) return;\n console.log(\n `Registered a new plugin on element.\\n`,\n `Total slider plugins: ${plugins.length}`,\n );\n }),\n );\n\n return [slider, { addPlugin }] as const;\n}\n\nconst KeenSliderContextState = createContext(initializeKeenSliderContext);\n\nexport const provideKeenSliderContext = (\n initialState: Omit<CreateContextOptions, \"root\">,\n element: WalkableNode,\n): KeenSliderContext => {\n const props = mergeProps(initialState, { root: element });\n return provide(KeenSliderContextState, props, element);\n};\n\nexport const useKeenSliderContext = (context: KeenSliderContext) => {\n return context;\n};\n\nexport const useKeenSlider = (element: HTMLElement & ICustomElement) => {\n const context: KeenSliderContext = consume(KeenSliderContextState, element);\n\n if (!context) {\n throw console.error(\n \"KeenSliderContext not found! Please ensure to wrap your custom element with keen-slider element.\",\n );\n }\n\n return useKeenSliderContext(context);\n};\n\nexport const getKeenSliderContext = (element: Element) => {\n const context = getContextFromProvider<KeenSliderContext>(\n KeenSliderContextState,\n element,\n );\n return useKeenSliderContext(context);\n};\n\ntype AddPluginOptions = {\n target: void | HTMLElement;\n plugin: KeenSliderPlugin;\n controller?: AbortController;\n};\n\nexport function addPlugin({ target, plugin, controller }: AddPluginOptions) {\n if (!target) return;\n\n invokeOnLoaded(\n () => {\n const [_, { addPlugin }] = getKeenSliderContext(target);\n const removePlugin = addPlugin(plugin);\n controller?.signal?.addEventListener(\"abort\", removePlugin);\n },\n {\n signal: controller?.signal,\n },\n );\n}\n","import type { CorrectComponentType } from \"@brytdesigns/web-component-utils\";\n\nimport { observable } from \"solid-js\";\nimport _KeenSlider, {\n type KeenSliderInstance,\n type KeenSliderOptions,\n} from \"../KeenSlider.js\";\n\nimport {\n provideKeenSliderContext,\n useKeenSliderContext,\n} from \"../hooks/index.js\";\n\ntype KeenSliderContextProps = {\n config?: KeenSliderOptions;\n centerSlides: boolean;\n refreshOnChildrenChange: boolean;\n};\n\nexport const KeenSlider: CorrectComponentType<KeenSliderContextProps> = (\n props,\n { element }\n) => {\n const context = provideKeenSliderContext(props, element);\n const [slider, methods] = useKeenSliderContext(context);\n\n const observer = observable(slider);\n\n Object.assign(element, {\n subscribe(callback = (slider: KeenSliderInstance) => null) {\n function listen(slider: KeenSliderInstance) {\n const cleanup = callback(slider);\n slider.on(\n \"destroyed\",\n typeof cleanup === \"function\" ? cleanup : () => null\n );\n }\n return observer.subscribe(listen).unsubscribe;\n },\n });\n\n Object.assign(element, { slider });\n Object.assign(element, { addPlugin: methods.addPlugin });\n};\n","import {\n customShadowlessElement,\n correctElementType,\n} from \"@brytdesigns/web-component-utils\";\nimport { KeenSlider } from \"./components/index.js\";\nimport { initializeSliderClasses } from \"./utils.js\";\n\nexport type {\n KeenSliderInstance,\n KeenSliderOptions,\n KeenSliderPlugin,\n} from \"./KeenSlider.js\";\n\nexport {\n useKeenSlider,\n addPlugin,\n getKeenSliderContext,\n} from \"./hooks/index.js\";\n\ncustomShadowlessElement(\n \"keen-slider\",\n {\n // @ts-ignore\n config: {},\n centerSlides: false,\n refreshOnChildrenChange: false,\n },\n correctElementType(KeenSlider),\n initializeSliderClasses,\n);\n"]}
1
+ {"version":3,"sources":["../../src/components/keen-slider.ts","../../src/utils.ts","../../src/KeenSlider.ts","../../src/hooks/useKeenSlider.ts","../../src/index.ts"],"names":["slider","addPlugin","plugins"],"mappings":"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","file":"index.js","sourcesContent":["import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\n\nimport { observable } from \"solid-js\";\nimport _KeenSlider, {\n type KeenSliderInstance,\n type KeenSliderOptions,\n} from \"../KeenSlider.js\";\n\nimport {\n provideKeenSliderContext,\n useKeenSliderContext,\n} from \"../hooks/index.js\";\n\ntype Props = {\n config?: KeenSliderOptions;\n centerSlides: boolean;\n refreshOnChildrenChange: boolean;\n};\n\nexport const Name = `keen-slider`;\n\nexport const Component: CorrectComponentType<Props> = (props, { element }) => {\n const context = provideKeenSliderContext(props, element);\n const [slider, methods] = useKeenSliderContext(context);\n\n const observer = observable(slider);\n\n Object.assign(element, {\n subscribe(callback = (_: KeenSliderInstance) => null) {\n function listen(slider: KeenSliderInstance) {\n const cleanup = callback(slider);\n slider.on(\n \"destroyed\",\n typeof cleanup === \"function\" ? cleanup : () => null,\n );\n }\n return observer.subscribe(listen).unsubscribe;\n },\n });\n\n Object.assign(element, { slider });\n Object.assign(element, { addPlugin: methods.addPlugin });\n};\n","import type { ICustomElement } from \"component-register\";\n\nexport function constrain(value: number, min = -Infinity, max = Infinity) {\n return Math.min(Math.max(value, min), max);\n}\n\ntype Options = {\n element: HTMLElement & ICustomElement;\n};\n\nexport function initializeSliderClasses<Props>(\n ComponentType = (props: Props, options: Options) => {}\n) {\n return (props: Props, options: Options) => {\n const { element } = options;\n element.classList.add(\"keen-slider\");\n Array.from(element.children).forEach((child) =>\n child.classList.add(\"keen-slider__slide\")\n );\n return ComponentType(props, options);\n };\n}\n","import type { ICustomElement } from \"component-register\";\n\nimport _KeenSlider, {\n type KeenSliderOptions as _KeenSliderOptions,\n type KeenSliderPlugin as _KeenSliderPlugin,\n type KeenSliderInstance as _KeenSliderInstance,\n type KeenSliderHooks as _KeenSliderHooks,\n} from \"keen-slider\";\n\nimport { constrain } from \"./utils\";\n\nexport type KeenSliderHooks = _KeenSliderHooks;\n\nexport type KeenSliderInstance<\n O = {},\n P = {},\n H extends _KeenSliderHooks = _KeenSliderHooks,\n> = _KeenSliderInstance<O, P, H>;\n\ntype ExtendedSlidesOption = NonNullable<\n _KeenSliderInstance[\"options\"][\"slides\"]\n> & {\n perScroll?: number;\n};\n\ntype ExtendedKeenSliderOptions = Omit<\n _KeenSliderInstance[\"options\"],\n \"slides\"\n> & {\n slides?: ExtendedSlidesOption;\n};\n\nexport type KeenSliderOptions<\n O = {},\n P = {},\n H extends _KeenSliderHooks = _KeenSliderHooks,\n> = _KeenSliderOptions<O, P, H> & {\n slides: {\n perScroll?: number;\n } & _KeenSliderOptions<O, P, H>[\"slides\"];\n};\n\nexport type KeenSliderPlugin<\n O = {},\n P = {},\n H extends _KeenSliderHooks = _KeenSliderHooks,\n> = _KeenSliderPlugin<O, P, H>;\n\nfunction attachMoreDetails(prevSlide: number) {\n return function (slider: KeenSliderInstance) {\n if (slider.track.details.rel != slider.animator.targetIdx) return;\n\n (slider as KeenSlider).direction =\n slider.track.details.rel > prevSlide ? \"forward\" : \"backward\";\n\n prevSlide = slider.track.details.rel;\n };\n}\n\nconst attachAriaAttributes: KeenSliderPlugin = (slider) => {\n const maxIdx =\n slider?.track?.details?.maxIdx === Infinity\n ? slider.track.details.length\n : slider?.track?.details?.maxIdx || 0;\n slider.container.setAttribute(\"role\", \"listbox\");\n slider.container.setAttribute(\n \"aria-orientation\",\n slider.options?.vertical ? \"vertical\" : \"horizontal\",\n );\n slider.container.setAttribute(\"aria-multiselectable\", \"false\");\n slider.container.setAttribute(\"aria-label\", \"Slider\");\n slider.container.setAttribute(\"tabindex\", \"0\");\n slider.container.setAttribute(\"aria-live\", \"polite\");\n slider.container.setAttribute(\"aria-atomic\", \"true\");\n slider.container.setAttribute(\"aria-live\", \"polite\");\n slider.container.setAttribute(\"aria-busy\", \"false\");\n slider.container.setAttribute(\"aria-valuemin\", \"0\");\n slider.container.setAttribute(\"aria-valuemax\", `${maxIdx}`);\n slider.container.setAttribute(\n \"aria-valuenow\",\n `${slider?.track?.details?.rel || 0}`,\n );\n\n function getMaxRel(rel: number, perView = 1) {\n return Math.floor(rel + perView - 1);\n }\n\n function slideIsActive(idx: number) {\n const perView = ((slider.options?.slides as any)?.perView as number) || 1,\n rel = slider.track.details.rel,\n maxRel = getMaxRel(rel, perView);\n\n return rel <= idx && idx <= maxRel;\n }\n\n async function updateTabIndexes(slide: HTMLElement, tabindex: string) {\n const focusableElements = Array.from(\n slide.querySelectorAll(\n \"input, a, button:not(:disabled), textarea, select, textarea, [tabindex]\",\n ),\n );\n focusableElements.forEach((element) => {\n element.setAttribute(\"tabindex\", tabindex);\n });\n }\n\n function updateAriaActiveSlide(slide: HTMLElement) {\n slide.setAttribute(\"aria-selected\", \"true\");\n slide.setAttribute(\"aria-hidden\", \"false\");\n slide.setAttribute(\"tabindex\", \"0\");\n updateTabIndexes(slide, \"0\");\n }\n\n function updateAriaInActiveSlide(slide: HTMLElement) {\n slide.setAttribute(\"aria-selected\", \"false\");\n slide.setAttribute(\"aria-hidden\", \"true\");\n slide.setAttribute(\"tabindex\", \"-1\");\n updateTabIndexes(slide, \"-1\");\n }\n\n function updateSlideAriaAttributes(slider: _KeenSliderInstance) {\n if (slider.options?.disabled) {\n slider.slides.forEach((slide, i) => {\n slide.setAttribute(\"role\", \"option\");\n updateAriaActiveSlide(slide);\n });\n return;\n }\n\n slider.slides.forEach((slide, i) => {\n slide.setAttribute(\"role\", \"option\");\n if (slideIsActive(i)) updateAriaActiveSlide(slide);\n else updateAriaInActiveSlide(slide);\n });\n }\n\n slider.on(\"slideChanged\", updateSlideAriaAttributes);\n slider.on(\"created\", updateSlideAriaAttributes);\n slider.on(\"optionsChanged\", updateSlideAriaAttributes);\n slider.on(\"updated\", updateSlideAriaAttributes);\n};\n\nexport default class KeenSlider extends _KeenSlider {\n direction: \"forward\" | \"backward\" | null = null;\n constructor(\n element: ICustomElement & HTMLElement,\n config: KeenSliderOptions,\n plugins: _KeenSliderPlugin[] = [],\n ) {\n super(element, config, plugins);\n let prevSlide = 0;\n\n this.direction = null;\n this.on(\"slideChanged\", attachMoreDetails(prevSlide) as any);\n\n attachAriaAttributes(this);\n\n const _next = this.next,\n _prev = this.prev;\n\n this.next = function () {\n if (\n typeof this.options.slides === \"number\" ||\n typeof this.options.slides === \"function\"\n )\n return _next();\n let amount: number = 1;\n if (this.options?.slides && \"perScroll\" in this.options.slides === true) {\n amount = (this.options?.slides?.perScroll as number) || 1;\n }\n if (!this.options.loop) {\n return this.moveToIdx(\n constrain(\n this.track.details.rel + amount,\n 0,\n this.track.details.maxIdx,\n ),\n );\n }\n return this.moveToIdx(constrain(this.track.details.abs + amount), true);\n };\n\n this.prev = function () {\n if (\n typeof this.options.slides === \"number\" ||\n typeof this.options.slides === \"function\"\n )\n return _prev();\n let amount: number = 1;\n if (this.options?.slides && \"perScroll\" in this.options.slides === true) {\n amount = (this.options?.slides?.perScroll as number) || 1;\n }\n if (!this.options.loop) {\n this.moveToIdx(\n constrain(\n this.track.details.rel - amount,\n 0,\n this.track.details.maxIdx,\n ),\n );\n }\n return this.moveToIdx(constrain(this.track.details.abs - amount), true);\n };\n }\n}\n","import {\n type ICustomElement,\n createContext,\n provide,\n consume,\n} from \"component-register\";\nimport {\n createEffect,\n mergeProps,\n createSignal,\n createMemo,\n onCleanup,\n on,\n splitProps,\n} from \"solid-js\";\nimport {\n createWithElementContext,\n getContextFromProvider,\n invokeOnLoaded,\n} from \"@brytdesigns/web-component-core/utils\";\n\nimport KeenSlider, {\n type KeenSliderInstance,\n type KeenSliderOptions,\n type KeenSliderPlugin,\n} from \"../KeenSlider\";\n\ntype CreateContextOptions = {\n root: HTMLElement & ICustomElement;\n config?: KeenSliderOptions;\n centerSlides?: boolean;\n refreshOnChildrenChange?: boolean;\n};\n\ntype WalkableNode = Parameters<typeof provide>[2];\n\ntype KeenSliderContext = ReturnType<typeof initializeKeenSliderContext>;\n\nfunction initializeKeenSliderContext(props: CreateContextOptions) {\n const [privateProps, publicProps] = splitProps(props, [\n \"root\",\n \"centerSlides\",\n \"refreshOnChildrenChange\",\n ]);\n\n const [plugins, setPlugins] = createSignal<KeenSliderPlugin[]>([]);\n const [forceSliderRebuild, setForceSliderRebuild] = createSignal(false);\n\n const mutObserver = createMemo(() => {\n if (props.refreshOnChildrenChange)\n return new MutationObserver(function (mutations) {\n mutations.forEach(function (_) {\n setForceSliderRebuild((v) => !v);\n });\n });\n return null;\n });\n\n const slider = createMemo(() => {\n privateProps.root.setAttribute(\"data-initialized\", \"true\");\n const slider = new KeenSlider(\n privateProps.root,\n publicProps.config || ({} as any),\n plugins(),\n );\n const m = mutObserver();\n\n if (m) {\n m.observe(slider.container, { childList: true });\n forceSliderRebuild();\n }\n\n onCleanup(() => {\n slider.destroy();\n privateProps.root.setAttribute(\"data-initialized\", \"false\");\n if (m) m.disconnect();\n });\n\n return slider;\n });\n\n function addPlugin(plugin: KeenSliderPlugin) {\n let index = -1;\n\n setPlugins((plugins) => {\n index = plugins.length;\n return [...plugins, plugin];\n });\n\n return function () {\n setPlugins((plugins) => {\n return [...plugins.slice(0, index), ...plugins.slice(index + 1)];\n });\n };\n }\n\n const centeredPlugin: KeenSliderPlugin = (slider) => {\n function centerSlides(slider: KeenSliderInstance) {\n if (slider.track.details.maxIdx > 0) {\n //@ts-ignore\n slider.container.style.justifyContent = null;\n //@ts-ignore\n slider.container.style.transform = null;\n } else {\n slider.container.style.cssText = `\n justify-content: center;\n transform: translateX(-${(slider.options.slides as any)?.spacing || 16}px)\n `;\n }\n }\n\n slider.on(\"created\", centerSlides);\n slider.on(\"optionsChanged\", centerSlides);\n };\n\n createEffect(\n on(\n () => props.centerSlides,\n (centerSlides) => {\n if (!centerSlides) return;\n const remove = addPlugin(centeredPlugin);\n return onCleanup(remove);\n },\n ),\n );\n\n createEffect(\n on(plugins, (plugins) => {\n if (plugins.length === 0) return;\n console.log(\n `Registered a new plugin on element.\\n`,\n `Total slider plugins: ${plugins.length}`,\n );\n }),\n );\n\n return [slider, { addPlugin }] as const;\n}\n\nconst KeenSliderContextState = createContext(initializeKeenSliderContext);\n\nexport const provideKeenSliderContext = (\n initialState: Omit<CreateContextOptions, \"root\">,\n element: WalkableNode,\n): KeenSliderContext => {\n const props = mergeProps(initialState, { root: element });\n return provide(KeenSliderContextState, props, element);\n};\n\nexport const useKeenSliderContext = (context: KeenSliderContext) => {\n return context;\n};\n\nexport const useKeenSlider = (element: HTMLElement & ICustomElement) => {\n const context: KeenSliderContext = consume(KeenSliderContextState, element);\n\n if (!context) {\n throw console.error(\n \"KeenSliderContext not found! Please ensure to wrap your custom element with keen-slider element.\",\n );\n }\n\n return useKeenSliderContext(context);\n};\n\nexport const getKeenSliderContext = (element: Element) => {\n const context = getContextFromProvider<KeenSliderContext>(\n KeenSliderContextState,\n element,\n );\n return useKeenSliderContext(context);\n};\n\ntype AddPluginOptions = {\n target: void | HTMLElement;\n plugin: KeenSliderPlugin;\n controller?: AbortController;\n};\n\nexport function addPlugin({ target, plugin, controller }: AddPluginOptions) {\n if (!target) return;\n\n invokeOnLoaded(\n () => {\n const [_, { addPlugin }] = getKeenSliderContext(target);\n const removePlugin = addPlugin(plugin);\n controller?.signal?.addEventListener(\"abort\", removePlugin);\n },\n {\n signal: controller?.signal,\n },\n );\n}\n\nexport const withKeenSliderElementContext = createWithElementContext<\n typeof KeenSliderContextState,\n KeenSliderContext\n>(KeenSliderContextState);\n","import {\n customShadowlessElement,\n correctElementType,\n} from \"@brytdesigns/web-component-core/utils\";\nimport { KeenSlider } from \"./components/index.js\";\nimport { initializeSliderClasses } from \"./utils.js\";\n\nexport type {\n KeenSliderInstance,\n KeenSliderOptions,\n KeenSliderPlugin,\n} from \"./KeenSlider.js\";\n\nexport {\n useKeenSlider,\n addPlugin,\n getKeenSliderContext,\n withKeenSliderElementContext,\n} from \"./hooks/index.js\";\n\ncustomShadowlessElement(\n KeenSlider.Name,\n {\n // @ts-ignore\n config: {},\n centerSlides: false,\n refreshOnChildrenChange: false,\n },\n correctElementType(KeenSlider.Component),\n initializeSliderClasses,\n);\n"]}
@@ -84,12 +84,12 @@ class KeenSlider extends _KeenSlider {
84
84
  this.direction = null;
85
85
  this.on("slideChanged", attachMoreDetails(prevSlide));
86
86
  attachAriaAttributes(this);
87
+ const _next = this.next, _prev = this.prev;
87
88
  this.next = function() {
88
- if (!this.options?.slides) return;
89
89
  if (typeof this.options.slides === "number" || typeof this.options.slides === "function")
90
- return;
90
+ return _next();
91
91
  let amount = 1;
92
- if ("perScroll" in this.options.slides === true) {
92
+ if (this.options?.slides && "perScroll" in this.options.slides === true) {
93
93
  amount = this.options?.slides?.perScroll || 1;
94
94
  }
95
95
  if (!this.options.loop) {
@@ -104,11 +104,10 @@ class KeenSlider extends _KeenSlider {
104
104
  return this.moveToIdx(constrain(this.track.details.abs + amount), true);
105
105
  };
106
106
  this.prev = function() {
107
- if (!this.options?.slides) return;
108
107
  if (typeof this.options.slides === "number" || typeof this.options.slides === "function")
109
- return;
108
+ return _prev();
110
109
  let amount = 1;
111
- if ("perScroll" in this.options.slides === true) {
110
+ if (this.options?.slides && "perScroll" in this.options.slides === true) {
112
111
  amount = this.options?.slides?.perScroll || 1;
113
112
  }
114
113
  if (!this.options.loop) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/KeenSlider.ts"],"names":["slider"],"mappings":"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","file":"KeenSlider.js","sourcesContent":["import type { ICustomElement } from \"component-register\";\n\nimport _KeenSlider, {\n type KeenSliderOptions as _KeenSliderOptions,\n type KeenSliderPlugin as _KeenSliderPlugin,\n type KeenSliderInstance as _KeenSliderInstance,\n type KeenSliderHooks as _KeenSliderHooks,\n} from \"keen-slider\";\n\nimport { constrain } from \"./utils\";\n\nexport type KeenSliderHooks = _KeenSliderHooks;\n\nexport type KeenSliderInstance<\n O = {},\n P = {},\n H extends _KeenSliderHooks = _KeenSliderHooks,\n> = _KeenSliderInstance<O, P, H>;\n\ntype ExtendedSlidesOption = NonNullable<\n _KeenSliderInstance[\"options\"][\"slides\"]\n> & {\n perScroll?: number;\n};\n\ntype ExtendedKeenSliderOptions = Omit<\n _KeenSliderInstance[\"options\"],\n \"slides\"\n> & {\n slides?: ExtendedSlidesOption;\n};\n\nexport type KeenSliderOptions<\n O = {},\n P = {},\n H extends _KeenSliderHooks = _KeenSliderHooks,\n> = _KeenSliderOptions<O, P, H> & {\n slides: {\n perScroll?: number;\n } & _KeenSliderOptions<O, P, H>[\"slides\"];\n};\n\nexport type KeenSliderPlugin<\n O = {},\n P = {},\n H extends _KeenSliderHooks = _KeenSliderHooks,\n> = _KeenSliderPlugin<O, P, H>;\n\nfunction attachMoreDetails(prevSlide: number) {\n return function(slider: KeenSliderInstance) {\n if (slider.track.details.rel != slider.animator.targetIdx) return;\n\n (slider as KeenSlider).direction =\n slider.track.details.rel > prevSlide ? \"forward\" : \"backward\";\n\n prevSlide = slider.track.details.rel;\n };\n}\n\nconst attachAriaAttributes: KeenSliderPlugin = (slider) => {\n const maxIdx =\n slider?.track?.details?.maxIdx === Infinity\n ? slider.track.details.length\n : slider?.track?.details?.maxIdx || 0;\n slider.container.setAttribute(\"role\", \"listbox\");\n slider.container.setAttribute(\n \"aria-orientation\",\n slider.options?.vertical ? \"vertical\" : \"horizontal\",\n );\n slider.container.setAttribute(\"aria-multiselectable\", \"false\");\n slider.container.setAttribute(\"aria-label\", \"Slider\");\n slider.container.setAttribute(\"tabindex\", \"0\");\n slider.container.setAttribute(\"aria-live\", \"polite\");\n slider.container.setAttribute(\"aria-atomic\", \"true\");\n slider.container.setAttribute(\"aria-live\", \"polite\");\n slider.container.setAttribute(\"aria-busy\", \"false\");\n slider.container.setAttribute(\"aria-valuemin\", \"0\");\n slider.container.setAttribute(\"aria-valuemax\", `${maxIdx}`);\n slider.container.setAttribute(\n \"aria-valuenow\",\n `${slider?.track?.details?.rel || 0}`,\n );\n\n function getMaxRel(rel: number, perView = 1) {\n return Math.floor(rel + perView - 1);\n }\n\n function slideIsActive(idx: number) {\n const perView = ((slider.options?.slides as any)?.perView as number) || 1,\n rel = slider.track.details.rel,\n maxRel = getMaxRel(rel, perView);\n\n return rel <= idx && idx <= maxRel;\n }\n\n async function updateTabIndexes(slide: HTMLElement, tabindex: string) {\n const focusableElements = Array.from(\n slide.querySelectorAll(\n \"input, a, button:not(:disabled), textarea, select, textarea, [tabindex]\",\n ),\n );\n focusableElements.forEach((element) => {\n element.setAttribute(\"tabindex\", tabindex);\n });\n }\n\n function updateAriaActiveSlide(slide: HTMLElement) {\n slide.setAttribute(\"aria-selected\", \"true\");\n slide.setAttribute(\"aria-hidden\", \"false\");\n slide.setAttribute(\"tabindex\", \"0\");\n updateTabIndexes(slide, \"0\");\n }\n\n function updateAriaInActiveSlide(slide: HTMLElement) {\n slide.setAttribute(\"aria-selected\", \"false\");\n slide.setAttribute(\"aria-hidden\", \"true\");\n slide.setAttribute(\"tabindex\", \"-1\");\n updateTabIndexes(slide, \"-1\");\n }\n\n function updateSlideAriaAttributes(slider: _KeenSliderInstance) {\n if (slider.options?.disabled) {\n slider.slides.forEach((slide, i) => {\n slide.setAttribute(\"role\", \"option\");\n updateAriaActiveSlide(slide);\n });\n return;\n }\n\n slider.slides.forEach((slide, i) => {\n slide.setAttribute(\"role\", \"option\");\n if (slideIsActive(i)) updateAriaActiveSlide(slide);\n else updateAriaInActiveSlide(slide);\n });\n }\n\n slider.on(\"slideChanged\", updateSlideAriaAttributes);\n slider.on(\"created\", updateSlideAriaAttributes);\n slider.on(\"optionsChanged\", updateSlideAriaAttributes);\n slider.on(\"updated\", updateSlideAriaAttributes);\n};\n\nexport default class KeenSlider extends _KeenSlider {\n direction: \"forward\" | \"backward\" | null = null;\n constructor(\n element: ICustomElement & HTMLElement,\n config: KeenSliderOptions,\n plugins: _KeenSliderPlugin[] = [],\n ) {\n super(element, config, plugins);\n let prevSlide = 0;\n\n this.direction = null;\n this.on(\"slideChanged\", attachMoreDetails(prevSlide) as any);\n\n attachAriaAttributes(this);\n\n this.next = function() {\n if (!this.options?.slides) return;\n if (\n typeof this.options.slides === \"number\" ||\n typeof this.options.slides === \"function\"\n )\n return;\n let amount: number = 1;\n if (\"perScroll\" in this.options.slides === true) {\n amount = (this.options?.slides?.perScroll as number) || 1;\n }\n if (!this.options.loop) {\n return this.moveToIdx(\n constrain(\n this.track.details.rel + amount,\n 0,\n this.track.details.maxIdx,\n ),\n );\n }\n return this.moveToIdx(constrain(this.track.details.abs + amount), true);\n };\n\n this.prev = function() {\n if (!this.options?.slides) return;\n if (\n typeof this.options.slides === \"number\" ||\n typeof this.options.slides === \"function\"\n )\n return;\n let amount: number = 1;\n if (\"perScroll\" in this.options.slides === true) {\n amount = (this.options?.slides?.perScroll as number) || 1;\n }\n if (!this.options.loop) {\n this.moveToIdx(\n constrain(\n this.track.details.rel - amount,\n 0,\n this.track.details.maxIdx,\n ),\n );\n }\n return this.moveToIdx(constrain(this.track.details.abs - amount), true);\n };\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/KeenSlider.ts"],"names":["slider"],"mappings":"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","file":"KeenSlider.js","sourcesContent":["import type { ICustomElement } from \"component-register\";\n\nimport _KeenSlider, {\n type KeenSliderOptions as _KeenSliderOptions,\n type KeenSliderPlugin as _KeenSliderPlugin,\n type KeenSliderInstance as _KeenSliderInstance,\n type KeenSliderHooks as _KeenSliderHooks,\n} from \"keen-slider\";\n\nimport { constrain } from \"./utils\";\n\nexport type KeenSliderHooks = _KeenSliderHooks;\n\nexport type KeenSliderInstance<\n O = {},\n P = {},\n H extends _KeenSliderHooks = _KeenSliderHooks,\n> = _KeenSliderInstance<O, P, H>;\n\ntype ExtendedSlidesOption = NonNullable<\n _KeenSliderInstance[\"options\"][\"slides\"]\n> & {\n perScroll?: number;\n};\n\ntype ExtendedKeenSliderOptions = Omit<\n _KeenSliderInstance[\"options\"],\n \"slides\"\n> & {\n slides?: ExtendedSlidesOption;\n};\n\nexport type KeenSliderOptions<\n O = {},\n P = {},\n H extends _KeenSliderHooks = _KeenSliderHooks,\n> = _KeenSliderOptions<O, P, H> & {\n slides: {\n perScroll?: number;\n } & _KeenSliderOptions<O, P, H>[\"slides\"];\n};\n\nexport type KeenSliderPlugin<\n O = {},\n P = {},\n H extends _KeenSliderHooks = _KeenSliderHooks,\n> = _KeenSliderPlugin<O, P, H>;\n\nfunction attachMoreDetails(prevSlide: number) {\n return function (slider: KeenSliderInstance) {\n if (slider.track.details.rel != slider.animator.targetIdx) return;\n\n (slider as KeenSlider).direction =\n slider.track.details.rel > prevSlide ? \"forward\" : \"backward\";\n\n prevSlide = slider.track.details.rel;\n };\n}\n\nconst attachAriaAttributes: KeenSliderPlugin = (slider) => {\n const maxIdx =\n slider?.track?.details?.maxIdx === Infinity\n ? slider.track.details.length\n : slider?.track?.details?.maxIdx || 0;\n slider.container.setAttribute(\"role\", \"listbox\");\n slider.container.setAttribute(\n \"aria-orientation\",\n slider.options?.vertical ? \"vertical\" : \"horizontal\",\n );\n slider.container.setAttribute(\"aria-multiselectable\", \"false\");\n slider.container.setAttribute(\"aria-label\", \"Slider\");\n slider.container.setAttribute(\"tabindex\", \"0\");\n slider.container.setAttribute(\"aria-live\", \"polite\");\n slider.container.setAttribute(\"aria-atomic\", \"true\");\n slider.container.setAttribute(\"aria-live\", \"polite\");\n slider.container.setAttribute(\"aria-busy\", \"false\");\n slider.container.setAttribute(\"aria-valuemin\", \"0\");\n slider.container.setAttribute(\"aria-valuemax\", `${maxIdx}`);\n slider.container.setAttribute(\n \"aria-valuenow\",\n `${slider?.track?.details?.rel || 0}`,\n );\n\n function getMaxRel(rel: number, perView = 1) {\n return Math.floor(rel + perView - 1);\n }\n\n function slideIsActive(idx: number) {\n const perView = ((slider.options?.slides as any)?.perView as number) || 1,\n rel = slider.track.details.rel,\n maxRel = getMaxRel(rel, perView);\n\n return rel <= idx && idx <= maxRel;\n }\n\n async function updateTabIndexes(slide: HTMLElement, tabindex: string) {\n const focusableElements = Array.from(\n slide.querySelectorAll(\n \"input, a, button:not(:disabled), textarea, select, textarea, [tabindex]\",\n ),\n );\n focusableElements.forEach((element) => {\n element.setAttribute(\"tabindex\", tabindex);\n });\n }\n\n function updateAriaActiveSlide(slide: HTMLElement) {\n slide.setAttribute(\"aria-selected\", \"true\");\n slide.setAttribute(\"aria-hidden\", \"false\");\n slide.setAttribute(\"tabindex\", \"0\");\n updateTabIndexes(slide, \"0\");\n }\n\n function updateAriaInActiveSlide(slide: HTMLElement) {\n slide.setAttribute(\"aria-selected\", \"false\");\n slide.setAttribute(\"aria-hidden\", \"true\");\n slide.setAttribute(\"tabindex\", \"-1\");\n updateTabIndexes(slide, \"-1\");\n }\n\n function updateSlideAriaAttributes(slider: _KeenSliderInstance) {\n if (slider.options?.disabled) {\n slider.slides.forEach((slide, i) => {\n slide.setAttribute(\"role\", \"option\");\n updateAriaActiveSlide(slide);\n });\n return;\n }\n\n slider.slides.forEach((slide, i) => {\n slide.setAttribute(\"role\", \"option\");\n if (slideIsActive(i)) updateAriaActiveSlide(slide);\n else updateAriaInActiveSlide(slide);\n });\n }\n\n slider.on(\"slideChanged\", updateSlideAriaAttributes);\n slider.on(\"created\", updateSlideAriaAttributes);\n slider.on(\"optionsChanged\", updateSlideAriaAttributes);\n slider.on(\"updated\", updateSlideAriaAttributes);\n};\n\nexport default class KeenSlider extends _KeenSlider {\n direction: \"forward\" | \"backward\" | null = null;\n constructor(\n element: ICustomElement & HTMLElement,\n config: KeenSliderOptions,\n plugins: _KeenSliderPlugin[] = [],\n ) {\n super(element, config, plugins);\n let prevSlide = 0;\n\n this.direction = null;\n this.on(\"slideChanged\", attachMoreDetails(prevSlide) as any);\n\n attachAriaAttributes(this);\n\n const _next = this.next,\n _prev = this.prev;\n\n this.next = function () {\n if (\n typeof this.options.slides === \"number\" ||\n typeof this.options.slides === \"function\"\n )\n return _next();\n let amount: number = 1;\n if (this.options?.slides && \"perScroll\" in this.options.slides === true) {\n amount = (this.options?.slides?.perScroll as number) || 1;\n }\n if (!this.options.loop) {\n return this.moveToIdx(\n constrain(\n this.track.details.rel + amount,\n 0,\n this.track.details.maxIdx,\n ),\n );\n }\n return this.moveToIdx(constrain(this.track.details.abs + amount), true);\n };\n\n this.prev = function () {\n if (\n typeof this.options.slides === \"number\" ||\n typeof this.options.slides === \"function\"\n )\n return _prev();\n let amount: number = 1;\n if (this.options?.slides && \"perScroll\" in this.options.slides === true) {\n amount = (this.options?.slides?.perScroll as number) || 1;\n }\n if (!this.options.loop) {\n this.moveToIdx(\n constrain(\n this.track.details.rel - amount,\n 0,\n this.track.details.maxIdx,\n ),\n );\n }\n return this.moveToIdx(constrain(this.track.details.abs - amount), true);\n };\n }\n}\n"]}
@@ -1,3 +1,4 @@
1
- export * from './keen-slider.js';
1
+ import * as keenSlider_js from './keen-slider.js';
2
+ export { keenSlider_js as KeenSlider };
2
3
  //# sourceMappingURL=index.js.map
3
4
  //# sourceMappingURL=index.js.map
@@ -2,12 +2,13 @@ import { observable } from 'solid-js';
2
2
  import '../KeenSlider.js';
3
3
  import { provideKeenSliderContext, useKeenSliderContext } from '../hooks/index.js';
4
4
 
5
- const KeenSlider = (props, { element }) => {
5
+ const Name = `keen-slider`;
6
+ const Component = (props, { element }) => {
6
7
  const context = provideKeenSliderContext(props, element);
7
8
  const [slider, methods] = useKeenSliderContext(context);
8
9
  const observer = observable(slider);
9
10
  Object.assign(element, {
10
- subscribe(callback = (slider2) => null) {
11
+ subscribe(callback = (_) => null) {
11
12
  function listen(slider2) {
12
13
  const cleanup = callback(slider2);
13
14
  slider2.on(
@@ -22,6 +23,6 @@ const KeenSlider = (props, { element }) => {
22
23
  Object.assign(element, { addPlugin: methods.addPlugin });
23
24
  };
24
25
 
25
- export { KeenSlider };
26
+ export { Component, Name };
26
27
  //# sourceMappingURL=keen-slider.js.map
27
28
  //# sourceMappingURL=keen-slider.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/keen-slider.ts"],"names":["slider"],"mappings":";;;;AAmBO,MAAM,UAA2D,GAAA,CACtE,KACA,EAAA,EAAE,SACC,KAAA;AACH,EAAM,MAAA,OAAA,GAAU,wBAAyB,CAAA,KAAA,EAAO,OAAO,CAAA;AACvD,EAAA,MAAM,CAAC,MAAA,EAAQ,OAAO,CAAA,GAAI,qBAAqB,OAAO,CAAA;AAEtD,EAAM,MAAA,QAAA,GAAW,WAAW,MAAM,CAAA;AAElC,EAAA,MAAA,CAAO,OAAO,OAAS,EAAA;AAAA,IACrB,SAAU,CAAA,QAAA,GAAW,CAACA,OAAAA,KAA+B,IAAM,EAAA;AACzD,MAAA,SAAS,OAAOA,OAA4B,EAAA;AAC1C,QAAM,MAAA,OAAA,GAAU,SAASA,OAAM,CAAA;AAC/B,QAAAA,OAAO,CAAA,EAAA;AAAA,UACL,WAAA;AAAA,UACA,OAAO,OAAA,KAAY,UAAa,GAAA,OAAA,GAAU,MAAM;AAAA,SAClD;AAAA;AAEF,MAAO,OAAA,QAAA,CAAS,SAAU,CAAA,MAAM,CAAE,CAAA,WAAA;AAAA;AACpC,GACD,CAAA;AAED,EAAA,MAAA,CAAO,MAAO,CAAA,OAAA,EAAS,EAAE,MAAA,EAAQ,CAAA;AACjC,EAAA,MAAA,CAAO,OAAO,OAAS,EAAA,EAAE,SAAW,EAAA,OAAA,CAAQ,WAAW,CAAA;AACzD","file":"keen-slider.js","sourcesContent":["import type { CorrectComponentType } from \"@brytdesigns/web-component-utils\";\n\nimport { observable } from \"solid-js\";\nimport _KeenSlider, {\n type KeenSliderInstance,\n type KeenSliderOptions,\n} from \"../KeenSlider.js\";\n\nimport {\n provideKeenSliderContext,\n useKeenSliderContext,\n} from \"../hooks/index.js\";\n\ntype KeenSliderContextProps = {\n config?: KeenSliderOptions;\n centerSlides: boolean;\n refreshOnChildrenChange: boolean;\n};\n\nexport const KeenSlider: CorrectComponentType<KeenSliderContextProps> = (\n props,\n { element }\n) => {\n const context = provideKeenSliderContext(props, element);\n const [slider, methods] = useKeenSliderContext(context);\n\n const observer = observable(slider);\n\n Object.assign(element, {\n subscribe(callback = (slider: KeenSliderInstance) => null) {\n function listen(slider: KeenSliderInstance) {\n const cleanup = callback(slider);\n slider.on(\n \"destroyed\",\n typeof cleanup === \"function\" ? cleanup : () => null\n );\n }\n return observer.subscribe(listen).unsubscribe;\n },\n });\n\n Object.assign(element, { slider });\n Object.assign(element, { addPlugin: methods.addPlugin });\n};\n"]}
1
+ {"version":3,"sources":["../../../src/components/keen-slider.ts"],"names":["slider"],"mappings":";;;;AAmBO,MAAM,IAAO,GAAA,CAAA,WAAA;AAEb,MAAM,SAAyC,GAAA,CAAC,KAAO,EAAA,EAAE,SAAc,KAAA;AAC5E,EAAM,MAAA,OAAA,GAAU,wBAAyB,CAAA,KAAA,EAAO,OAAO,CAAA;AACvD,EAAA,MAAM,CAAC,MAAA,EAAQ,OAAO,CAAA,GAAI,qBAAqB,OAAO,CAAA;AAEtD,EAAM,MAAA,QAAA,GAAW,WAAW,MAAM,CAAA;AAElC,EAAA,MAAA,CAAO,OAAO,OAAS,EAAA;AAAA,IACrB,SAAU,CAAA,QAAA,GAAW,CAAC,CAAA,KAA0B,IAAM,EAAA;AACpD,MAAA,SAAS,OAAOA,OAA4B,EAAA;AAC1C,QAAM,MAAA,OAAA,GAAU,SAASA,OAAM,CAAA;AAC/B,QAAAA,OAAO,CAAA,EAAA;AAAA,UACL,WAAA;AAAA,UACA,OAAO,OAAA,KAAY,UAAa,GAAA,OAAA,GAAU,MAAM;AAAA,SAClD;AAAA;AAEF,MAAO,OAAA,QAAA,CAAS,SAAU,CAAA,MAAM,CAAE,CAAA,WAAA;AAAA;AACpC,GACD,CAAA;AAED,EAAA,MAAA,CAAO,MAAO,CAAA,OAAA,EAAS,EAAE,MAAA,EAAQ,CAAA;AACjC,EAAA,MAAA,CAAO,OAAO,OAAS,EAAA,EAAE,SAAW,EAAA,OAAA,CAAQ,WAAW,CAAA;AACzD","file":"keen-slider.js","sourcesContent":["import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\n\nimport { observable } from \"solid-js\";\nimport _KeenSlider, {\n type KeenSliderInstance,\n type KeenSliderOptions,\n} from \"../KeenSlider.js\";\n\nimport {\n provideKeenSliderContext,\n useKeenSliderContext,\n} from \"../hooks/index.js\";\n\ntype Props = {\n config?: KeenSliderOptions;\n centerSlides: boolean;\n refreshOnChildrenChange: boolean;\n};\n\nexport const Name = `keen-slider`;\n\nexport const Component: CorrectComponentType<Props> = (props, { element }) => {\n const context = provideKeenSliderContext(props, element);\n const [slider, methods] = useKeenSliderContext(context);\n\n const observer = observable(slider);\n\n Object.assign(element, {\n subscribe(callback = (_: KeenSliderInstance) => null) {\n function listen(slider: KeenSliderInstance) {\n const cleanup = callback(slider);\n slider.on(\n \"destroyed\",\n typeof cleanup === \"function\" ? cleanup : () => null,\n );\n }\n return observer.subscribe(listen).unsubscribe;\n },\n });\n\n Object.assign(element, { slider });\n Object.assign(element, { addPlugin: methods.addPlugin });\n};\n"]}
@@ -1,6 +1,6 @@
1
1
  import { createContext, provide, consume } from 'component-register';
2
2
  import { splitProps, createSignal, createMemo, onCleanup, createEffect, on, mergeProps } from 'solid-js';
3
- import { getContextFromProvider, invokeOnLoaded } from '@brytdesigns/web-component-utils';
3
+ import { createWithElementContext, getContextFromProvider, invokeOnLoaded } from '@brytdesigns/web-component-core/utils';
4
4
  import KeenSlider from '../KeenSlider';
5
5
 
6
6
  function initializeKeenSliderContext(props) {
@@ -34,6 +34,7 @@ function initializeKeenSliderContext(props) {
34
34
  }
35
35
  onCleanup(() => {
36
36
  slider2.destroy();
37
+ privateProps.root.setAttribute("data-initialized", "false");
37
38
  if (m) m.disconnect();
38
39
  });
39
40
  return slider2;
@@ -124,7 +125,8 @@ function addPlugin({ target, plugin, controller }) {
124
125
  }
125
126
  );
126
127
  }
128
+ const withKeenSliderElementContext = createWithElementContext(KeenSliderContextState);
127
129
 
128
- export { addPlugin, getKeenSliderContext, provideKeenSliderContext, useKeenSlider, useKeenSliderContext };
130
+ export { addPlugin, getKeenSliderContext, provideKeenSliderContext, useKeenSlider, useKeenSliderContext, withKeenSliderElementContext };
129
131
  //# sourceMappingURL=useKeenSlider.js.map
130
132
  //# sourceMappingURL=useKeenSlider.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/useKeenSlider.ts"],"names":["slider","addPlugin","plugins"],"mappings":"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","file":"useKeenSlider.js","sourcesContent":["import {\n type ICustomElement,\n createContext,\n provide,\n consume,\n} from \"component-register\";\nimport {\n createEffect,\n mergeProps,\n createSignal,\n createMemo,\n onCleanup,\n on,\n splitProps,\n} from \"solid-js\";\nimport {\n getContextFromProvider,\n invokeOnLoaded,\n} from \"@brytdesigns/web-component-utils\";\nimport KeenSlider, {\n type KeenSliderInstance,\n type KeenSliderOptions,\n type KeenSliderPlugin,\n} from \"../KeenSlider\";\n\ntype CreateContextOptions = {\n root: HTMLElement & ICustomElement;\n config?: KeenSliderOptions;\n centerSlides?: boolean;\n refreshOnChildrenChange?: boolean;\n};\n\ntype WalkableNode = Parameters<typeof provide>[2];\n\ntype KeenSliderContext = ReturnType<typeof initializeKeenSliderContext>;\n\nfunction initializeKeenSliderContext(props: CreateContextOptions) {\n const [privateProps, publicProps] = splitProps(props, [\n \"root\",\n \"centerSlides\",\n \"refreshOnChildrenChange\",\n ]);\n\n const [plugins, setPlugins] = createSignal<KeenSliderPlugin[]>([]);\n const [forceSliderRebuild, setForceSliderRebuild] = createSignal(false);\n\n const mutObserver = createMemo(() => {\n if (props.refreshOnChildrenChange)\n return new MutationObserver(function (mutations) {\n mutations.forEach(function (_) {\n setForceSliderRebuild((v) => !v);\n });\n });\n return null;\n });\n\n const slider = createMemo(() => {\n privateProps.root.setAttribute(\"data-initialized\", \"true\");\n const slider = new KeenSlider(\n privateProps.root,\n publicProps.config || ({} as any),\n plugins(),\n );\n const m = mutObserver();\n\n if (m) {\n m.observe(slider.container, { childList: true });\n forceSliderRebuild();\n }\n\n onCleanup(() => {\n slider.destroy();\n if (m) m.disconnect();\n });\n\n return slider;\n });\n\n function addPlugin(plugin: KeenSliderPlugin) {\n let index = -1;\n\n setPlugins((plugins) => {\n index = plugins.length;\n return [...plugins, plugin];\n });\n\n return function () {\n setPlugins((plugins) => {\n return [...plugins.slice(0, index), ...plugins.slice(index + 1)];\n });\n };\n }\n\n const centeredPlugin: KeenSliderPlugin = (slider) => {\n function centerSlides(slider: KeenSliderInstance) {\n if (slider.track.details.maxIdx > 0) {\n //@ts-ignore\n slider.container.style.justifyContent = null;\n //@ts-ignore\n slider.container.style.transform = null;\n } else {\n slider.container.style.cssText = `\n justify-content: center;\n transform: translateX(-${(slider.options.slides as any)?.spacing || 16}px)\n `;\n }\n }\n\n slider.on(\"created\", centerSlides);\n slider.on(\"optionsChanged\", centerSlides);\n };\n\n createEffect(\n on(\n () => props.centerSlides,\n (centerSlides) => {\n if (!centerSlides) return;\n const remove = addPlugin(centeredPlugin);\n return onCleanup(remove);\n },\n ),\n );\n\n createEffect(\n on(plugins, (plugins) => {\n if (plugins.length === 0) return;\n console.log(\n `Registered a new plugin on element.\\n`,\n `Total slider plugins: ${plugins.length}`,\n );\n }),\n );\n\n return [slider, { addPlugin }] as const;\n}\n\nconst KeenSliderContextState = createContext(initializeKeenSliderContext);\n\nexport const provideKeenSliderContext = (\n initialState: Omit<CreateContextOptions, \"root\">,\n element: WalkableNode,\n): KeenSliderContext => {\n const props = mergeProps(initialState, { root: element });\n return provide(KeenSliderContextState, props, element);\n};\n\nexport const useKeenSliderContext = (context: KeenSliderContext) => {\n return context;\n};\n\nexport const useKeenSlider = (element: HTMLElement & ICustomElement) => {\n const context: KeenSliderContext = consume(KeenSliderContextState, element);\n\n if (!context) {\n throw console.error(\n \"KeenSliderContext not found! Please ensure to wrap your custom element with keen-slider element.\",\n );\n }\n\n return useKeenSliderContext(context);\n};\n\nexport const getKeenSliderContext = (element: Element) => {\n const context = getContextFromProvider<KeenSliderContext>(\n KeenSliderContextState,\n element,\n );\n return useKeenSliderContext(context);\n};\n\ntype AddPluginOptions = {\n target: void | HTMLElement;\n plugin: KeenSliderPlugin;\n controller?: AbortController;\n};\n\nexport function addPlugin({ target, plugin, controller }: AddPluginOptions) {\n if (!target) return;\n\n invokeOnLoaded(\n () => {\n const [_, { addPlugin }] = getKeenSliderContext(target);\n const removePlugin = addPlugin(plugin);\n controller?.signal?.addEventListener(\"abort\", removePlugin);\n },\n {\n signal: controller?.signal,\n },\n );\n}\n"]}
1
+ {"version":3,"sources":["../../../src/hooks/useKeenSlider.ts"],"names":["slider","addPlugin","plugins"],"mappings":"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","file":"useKeenSlider.js","sourcesContent":["import {\n type ICustomElement,\n createContext,\n provide,\n consume,\n} from \"component-register\";\nimport {\n createEffect,\n mergeProps,\n createSignal,\n createMemo,\n onCleanup,\n on,\n splitProps,\n} from \"solid-js\";\nimport {\n createWithElementContext,\n getContextFromProvider,\n invokeOnLoaded,\n} from \"@brytdesigns/web-component-core/utils\";\n\nimport KeenSlider, {\n type KeenSliderInstance,\n type KeenSliderOptions,\n type KeenSliderPlugin,\n} from \"../KeenSlider\";\n\ntype CreateContextOptions = {\n root: HTMLElement & ICustomElement;\n config?: KeenSliderOptions;\n centerSlides?: boolean;\n refreshOnChildrenChange?: boolean;\n};\n\ntype WalkableNode = Parameters<typeof provide>[2];\n\ntype KeenSliderContext = ReturnType<typeof initializeKeenSliderContext>;\n\nfunction initializeKeenSliderContext(props: CreateContextOptions) {\n const [privateProps, publicProps] = splitProps(props, [\n \"root\",\n \"centerSlides\",\n \"refreshOnChildrenChange\",\n ]);\n\n const [plugins, setPlugins] = createSignal<KeenSliderPlugin[]>([]);\n const [forceSliderRebuild, setForceSliderRebuild] = createSignal(false);\n\n const mutObserver = createMemo(() => {\n if (props.refreshOnChildrenChange)\n return new MutationObserver(function (mutations) {\n mutations.forEach(function (_) {\n setForceSliderRebuild((v) => !v);\n });\n });\n return null;\n });\n\n const slider = createMemo(() => {\n privateProps.root.setAttribute(\"data-initialized\", \"true\");\n const slider = new KeenSlider(\n privateProps.root,\n publicProps.config || ({} as any),\n plugins(),\n );\n const m = mutObserver();\n\n if (m) {\n m.observe(slider.container, { childList: true });\n forceSliderRebuild();\n }\n\n onCleanup(() => {\n slider.destroy();\n privateProps.root.setAttribute(\"data-initialized\", \"false\");\n if (m) m.disconnect();\n });\n\n return slider;\n });\n\n function addPlugin(plugin: KeenSliderPlugin) {\n let index = -1;\n\n setPlugins((plugins) => {\n index = plugins.length;\n return [...plugins, plugin];\n });\n\n return function () {\n setPlugins((plugins) => {\n return [...plugins.slice(0, index), ...plugins.slice(index + 1)];\n });\n };\n }\n\n const centeredPlugin: KeenSliderPlugin = (slider) => {\n function centerSlides(slider: KeenSliderInstance) {\n if (slider.track.details.maxIdx > 0) {\n //@ts-ignore\n slider.container.style.justifyContent = null;\n //@ts-ignore\n slider.container.style.transform = null;\n } else {\n slider.container.style.cssText = `\n justify-content: center;\n transform: translateX(-${(slider.options.slides as any)?.spacing || 16}px)\n `;\n }\n }\n\n slider.on(\"created\", centerSlides);\n slider.on(\"optionsChanged\", centerSlides);\n };\n\n createEffect(\n on(\n () => props.centerSlides,\n (centerSlides) => {\n if (!centerSlides) return;\n const remove = addPlugin(centeredPlugin);\n return onCleanup(remove);\n },\n ),\n );\n\n createEffect(\n on(plugins, (plugins) => {\n if (plugins.length === 0) return;\n console.log(\n `Registered a new plugin on element.\\n`,\n `Total slider plugins: ${plugins.length}`,\n );\n }),\n );\n\n return [slider, { addPlugin }] as const;\n}\n\nconst KeenSliderContextState = createContext(initializeKeenSliderContext);\n\nexport const provideKeenSliderContext = (\n initialState: Omit<CreateContextOptions, \"root\">,\n element: WalkableNode,\n): KeenSliderContext => {\n const props = mergeProps(initialState, { root: element });\n return provide(KeenSliderContextState, props, element);\n};\n\nexport const useKeenSliderContext = (context: KeenSliderContext) => {\n return context;\n};\n\nexport const useKeenSlider = (element: HTMLElement & ICustomElement) => {\n const context: KeenSliderContext = consume(KeenSliderContextState, element);\n\n if (!context) {\n throw console.error(\n \"KeenSliderContext not found! Please ensure to wrap your custom element with keen-slider element.\",\n );\n }\n\n return useKeenSliderContext(context);\n};\n\nexport const getKeenSliderContext = (element: Element) => {\n const context = getContextFromProvider<KeenSliderContext>(\n KeenSliderContextState,\n element,\n );\n return useKeenSliderContext(context);\n};\n\ntype AddPluginOptions = {\n target: void | HTMLElement;\n plugin: KeenSliderPlugin;\n controller?: AbortController;\n};\n\nexport function addPlugin({ target, plugin, controller }: AddPluginOptions) {\n if (!target) return;\n\n invokeOnLoaded(\n () => {\n const [_, { addPlugin }] = getKeenSliderContext(target);\n const removePlugin = addPlugin(plugin);\n controller?.signal?.addEventListener(\"abort\", removePlugin);\n },\n {\n signal: controller?.signal,\n },\n );\n}\n\nexport const withKeenSliderElementContext = createWithElementContext<\n typeof KeenSliderContextState,\n KeenSliderContext\n>(KeenSliderContextState);\n"]}
@@ -33,5 +33,11 @@ export type AddPluginOptions = {
33
33
  controller?: AbortController;
34
34
  };
35
35
  export declare function addPlugin({ target, plugin, controller }: AddPluginOptions): void;
36
+ export declare const withKeenSliderElementContext: <D extends unknown>(target: string | import("solid-js").Accessor<string> | import("solid-js").Accessor<() => Element>, dependencies: import("solid-js").Accessor<D> | undefined, cb: (context: readonly [
37
+ import("solid-js").Accessor<KeenSlider>,
38
+ {
39
+ readonly addPlugin: (plugin: KeenSliderPlugin) => () => void;
40
+ }
41
+ ], dependencies: D) => void | (() => void)) => void;
36
42
 
37
43
  export {};
@@ -1,17 +1,17 @@
1
- import { customShadowlessElement, correctElementType } from '@brytdesigns/web-component-utils';
1
+ import { customShadowlessElement, correctElementType } from '@brytdesigns/web-component-core/utils';
2
2
  import { KeenSlider } from './components/index.js';
3
3
  import { initializeSliderClasses } from './utils.js';
4
- export { addPlugin, getKeenSliderContext, useKeenSlider } from './hooks/index.js';
4
+ export { addPlugin, getKeenSliderContext, useKeenSlider, withKeenSliderElementContext } from './hooks/index.js';
5
5
 
6
6
  customShadowlessElement(
7
- "keen-slider",
7
+ KeenSlider.Name,
8
8
  {
9
9
  // @ts-ignore
10
10
  config: {},
11
11
  centerSlides: false,
12
12
  refreshOnChildrenChange: false
13
13
  },
14
- correctElementType(KeenSlider),
14
+ correctElementType(KeenSlider.Component),
15
15
  initializeSliderClasses
16
16
  );
17
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;AAmBA,uBAAA;AAAA,EACE,aAAA;AAAA,EACA;AAAA;AAAA,IAEE,QAAQ,EAAC;AAAA,IACT,YAAc,EAAA,KAAA;AAAA,IACd,uBAAyB,EAAA;AAAA,GAC3B;AAAA,EACA,mBAAmB,UAAU,CAAA;AAAA,EAC7B;AACF,CAAA","file":"index.js","sourcesContent":["import {\n customShadowlessElement,\n correctElementType,\n} from \"@brytdesigns/web-component-utils\";\nimport { KeenSlider } from \"./components/index.js\";\nimport { initializeSliderClasses } from \"./utils.js\";\n\nexport type {\n KeenSliderInstance,\n KeenSliderOptions,\n KeenSliderPlugin,\n} from \"./KeenSlider.js\";\n\nexport {\n useKeenSlider,\n addPlugin,\n getKeenSliderContext,\n} from \"./hooks/index.js\";\n\ncustomShadowlessElement(\n \"keen-slider\",\n {\n // @ts-ignore\n config: {},\n centerSlides: false,\n refreshOnChildrenChange: false,\n },\n correctElementType(KeenSlider),\n initializeSliderClasses,\n);\n"]}
1
+ {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;AAoBA,uBAAA;AAAA,EACE,UAAW,CAAA,IAAA;AAAA,EACX;AAAA;AAAA,IAEE,QAAQ,EAAC;AAAA,IACT,YAAc,EAAA,KAAA;AAAA,IACd,uBAAyB,EAAA;AAAA,GAC3B;AAAA,EACA,kBAAA,CAAmB,WAAW,SAAS,CAAA;AAAA,EACvC;AACF,CAAA","file":"index.js","sourcesContent":["import {\n customShadowlessElement,\n correctElementType,\n} from \"@brytdesigns/web-component-core/utils\";\nimport { KeenSlider } from \"./components/index.js\";\nimport { initializeSliderClasses } from \"./utils.js\";\n\nexport type {\n KeenSliderInstance,\n KeenSliderOptions,\n KeenSliderPlugin,\n} from \"./KeenSlider.js\";\n\nexport {\n useKeenSlider,\n addPlugin,\n getKeenSliderContext,\n withKeenSliderElementContext,\n} from \"./hooks/index.js\";\n\ncustomShadowlessElement(\n KeenSlider.Name,\n {\n // @ts-ignore\n config: {},\n centerSlides: false,\n refreshOnChildrenChange: false,\n },\n correctElementType(KeenSlider.Component),\n initializeSliderClasses,\n);\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brytdesigns/web-component-keen-slider",
3
- "version": "1.0.13",
3
+ "version": "1.1.0",
4
4
  "description": "Keen slider web component",
5
5
  "main": "./dist/main/index.js",
6
6
  "module": "./dist/main/index.js",
@@ -10,7 +10,8 @@
10
10
  ".": {
11
11
  "types": "./dist/main/index.d.ts",
12
12
  "module": "./dist/main/index.js"
13
- }
13
+ },
14
+ "./styles.css": "./dist/styles.css"
14
15
  },
15
16
  "files": [
16
17
  "dist"
@@ -23,7 +24,7 @@
23
24
  "keen-slider": "^6.8.6",
24
25
  "solid-element": "^1.9.1",
25
26
  "solid-js": "^1.9.7",
26
- "@brytdesigns/web-component-utils": "0.1.14"
27
+ "@brytdesigns/web-component-core": "1.1.2"
27
28
  },
28
29
  "devDependencies": {
29
30
  "dts-bundle-generator": "^9.5.1",