@brytdesigns/web-component-keen-slider 1.0.7 → 1.0.8
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.
|
@@ -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 } from '@brytdesigns/web-component-utils';
|
|
3
|
+
import { getContextFromProvider, invokeOnLoaded } from '@brytdesigns/web-component-utils';
|
|
4
4
|
import KeenSlider from '../KeenSlider';
|
|
5
5
|
|
|
6
6
|
function initializeKeenSliderContext(props) {
|
|
@@ -38,7 +38,7 @@ function initializeKeenSliderContext(props) {
|
|
|
38
38
|
});
|
|
39
39
|
return slider2;
|
|
40
40
|
});
|
|
41
|
-
function
|
|
41
|
+
function addPlugin2(plugin) {
|
|
42
42
|
let index = -1;
|
|
43
43
|
setPlugins((plugins2) => {
|
|
44
44
|
index = plugins2.length;
|
|
@@ -70,7 +70,7 @@ function initializeKeenSliderContext(props) {
|
|
|
70
70
|
() => props.centerSlides,
|
|
71
71
|
(centerSlides) => {
|
|
72
72
|
if (!centerSlides) return;
|
|
73
|
-
const remove =
|
|
73
|
+
const remove = addPlugin2(centeredPlugin);
|
|
74
74
|
return onCleanup(remove);
|
|
75
75
|
}
|
|
76
76
|
)
|
|
@@ -85,7 +85,7 @@ function initializeKeenSliderContext(props) {
|
|
|
85
85
|
);
|
|
86
86
|
})
|
|
87
87
|
);
|
|
88
|
-
return [slider, { addPlugin }];
|
|
88
|
+
return [slider, { addPlugin: addPlugin2 }];
|
|
89
89
|
}
|
|
90
90
|
const KeenSliderContextState = createContext(initializeKeenSliderContext);
|
|
91
91
|
const provideKeenSliderContext = (initialState, element) => {
|
|
@@ -111,7 +111,20 @@ const getKeenSliderContext = (element) => {
|
|
|
111
111
|
);
|
|
112
112
|
return useKeenSliderContext(context);
|
|
113
113
|
};
|
|
114
|
+
function addPlugin({ target, plugin, controller }) {
|
|
115
|
+
if (!target) return;
|
|
116
|
+
invokeOnLoaded(
|
|
117
|
+
() => {
|
|
118
|
+
const [_, { addPlugin: addPlugin2 }] = getKeenSliderContext(target);
|
|
119
|
+
const removePlugin = addPlugin2(plugin);
|
|
120
|
+
controller?.signal?.addEventListener("abort", removePlugin);
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
signal: controller?.signal
|
|
124
|
+
}
|
|
125
|
+
);
|
|
126
|
+
}
|
|
114
127
|
|
|
115
|
-
export { getKeenSliderContext, provideKeenSliderContext, useKeenSlider, useKeenSliderContext };
|
|
128
|
+
export { addPlugin, getKeenSliderContext, provideKeenSliderContext, useKeenSlider, useKeenSliderContext };
|
|
116
129
|
//# sourceMappingURL=useKeenSlider.js.map
|
|
117
130
|
//# sourceMappingURL=useKeenSlider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/hooks/useKeenSlider.ts"],"names":["slider","plugins"],"mappings":";;;;;
|
|
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"]}
|
package/dist/main/index.d.ts
CHANGED
|
@@ -27,5 +27,11 @@ export declare const getKeenSliderContext: (element: Element) => readonly [
|
|
|
27
27
|
readonly addPlugin: (plugin: KeenSliderPlugin) => () => void;
|
|
28
28
|
}
|
|
29
29
|
];
|
|
30
|
+
export type AddPluginOptions = {
|
|
31
|
+
target: void | HTMLElement;
|
|
32
|
+
plugin: KeenSliderPlugin;
|
|
33
|
+
controller?: AbortController;
|
|
34
|
+
};
|
|
35
|
+
export declare function addPlugin({ target, plugin, controller }: AddPluginOptions): void;
|
|
30
36
|
|
|
31
37
|
export {};
|
package/dist/main/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { customShadowlessElement, correctElementType } from '@brytdesigns/web-component-utils';
|
|
2
2
|
import { KeenSlider } from './components/index.js';
|
|
3
3
|
import { initializeSliderClasses } from './utils.js';
|
|
4
|
-
export { getKeenSliderContext, useKeenSlider } from './hooks/index.js';
|
|
4
|
+
export { addPlugin, getKeenSliderContext, useKeenSlider } from './hooks/index.js';
|
|
5
5
|
|
|
6
6
|
customShadowlessElement(
|
|
7
7
|
"keen-slider",
|
package/dist/main/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;
|
|
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"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brytdesigns/web-component-keen-slider",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.8",
|
|
4
4
|
"description": "Keen slider web component",
|
|
5
5
|
"main": "./dist/main/index.js",
|
|
6
6
|
"module": "./dist/main/index.js",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"keen-slider": "^6.8.6",
|
|
24
24
|
"solid-element": "^1.9.1",
|
|
25
25
|
"solid-js": "^1.9.6",
|
|
26
|
-
"@brytdesigns/web-component-utils": "0.1.
|
|
26
|
+
"@brytdesigns/web-component-utils": "0.1.10"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"dts-bundle-generator": "^9.5.1",
|