@brytdesigns/web-component-keen-slider 1.2.2 → 3.0.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/main/KeenSlider.js +166 -124
- package/dist/main/KeenSlider.js.map +1 -1
- package/dist/main/components/index.js +1 -4
- package/dist/main/components/keen-slider.js +24 -25
- package/dist/main/components/keen-slider.js.map +1 -1
- package/dist/main/hooks/index.js +2 -3
- package/dist/main/hooks/useKeenSlider.js +88 -120
- package/dist/main/hooks/useKeenSlider.js.map +1 -1
- package/dist/main/index.d.ts +10 -5
- package/dist/main/index.js +13 -14
- package/dist/main/index.js.map +1 -1
- package/dist/main/utils.js +4 -14
- package/dist/main/utils.js.map +1 -1
- package/dist/styles.css +35 -31
- package/package.json +7 -8
- package/dist/esm/index.js +0 -307
- package/dist/esm/index.js.map +0 -1
- package/dist/main/components/index.js.map +0 -1
- package/dist/main/hooks/index.js.map +0 -1
|
@@ -1,132 +1,100 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
|
|
1
|
+
import KeenSlider from "../KeenSlider.js";
|
|
2
|
+
import { createGuardedEffect, createRemoteContext, getContextFromProvider, invokeOnLoaded } from "@brytdesigns/web-component-core/utils";
|
|
3
|
+
import { createMemo, createSignal, merge, omit, onCleanup } from "solid-js";
|
|
4
|
+
import { consume, createContext, provide } from "component-register";
|
|
5
|
+
//#region src/hooks/useKeenSlider.ts
|
|
6
6
|
function initializeKeenSliderContext(props) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
});
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
const centeredPlugin = (slider2) => {
|
|
55
|
-
function centerSlides(slider3) {
|
|
56
|
-
if (slider3.track.details.maxIdx > 0) {
|
|
57
|
-
slider3.container.style.justifyContent = null;
|
|
58
|
-
slider3.container.style.transform = null;
|
|
59
|
-
} else {
|
|
60
|
-
slider3.container.style.cssText = `
|
|
7
|
+
const publicProps = omit(props, "root", "centerSlides", "refreshOnChildrenChange");
|
|
8
|
+
const [plugins, setPlugins] = createSignal([]);
|
|
9
|
+
const [forceSliderRebuild, setForceSliderRebuild] = createSignal(false);
|
|
10
|
+
const mutObserver = createMemo(() => {
|
|
11
|
+
if (props.refreshOnChildrenChange) return new MutationObserver((mutations) => {
|
|
12
|
+
mutations.forEach((_) => {
|
|
13
|
+
setForceSliderRebuild((v) => !v);
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
return null;
|
|
17
|
+
});
|
|
18
|
+
const slider = createMemo(() => {
|
|
19
|
+
props.root.setAttribute("data-initialized", "true");
|
|
20
|
+
const slider = new KeenSlider(props.root, publicProps.config || {}, plugins());
|
|
21
|
+
const m = mutObserver();
|
|
22
|
+
if (m) {
|
|
23
|
+
m.observe(slider.container, { childList: true });
|
|
24
|
+
forceSliderRebuild();
|
|
25
|
+
}
|
|
26
|
+
onCleanup(() => {
|
|
27
|
+
slider.destroy();
|
|
28
|
+
props.root.setAttribute("data-initialized", "false");
|
|
29
|
+
if (m) m.disconnect();
|
|
30
|
+
});
|
|
31
|
+
return slider;
|
|
32
|
+
});
|
|
33
|
+
function addPlugin(plugin) {
|
|
34
|
+
let index = -1;
|
|
35
|
+
setPlugins((plugins) => {
|
|
36
|
+
index = plugins.length;
|
|
37
|
+
return [...plugins, plugin];
|
|
38
|
+
});
|
|
39
|
+
return () => {
|
|
40
|
+
setPlugins((plugins) => {
|
|
41
|
+
return [...plugins.slice(0, index), ...plugins.slice(index + 1)];
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
const centeredPlugin = (slider) => {
|
|
46
|
+
function centerSlides(slider) {
|
|
47
|
+
if (slider.track.details.maxIdx > 0) {
|
|
48
|
+
slider.container.style.justifyContent = null;
|
|
49
|
+
slider.container.style.transform = null;
|
|
50
|
+
} else slider.container.style.cssText = `
|
|
61
51
|
justify-content: center;
|
|
62
|
-
transform: translateX(-${
|
|
52
|
+
transform: translateX(-${slider.options.slides?.spacing || 16}px)
|
|
63
53
|
`;
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
)
|
|
78
|
-
);
|
|
79
|
-
createEffect(
|
|
80
|
-
on(plugins, (plugins2) => {
|
|
81
|
-
if (plugins2.length === 0) return;
|
|
82
|
-
console.log(
|
|
83
|
-
`Registered a new plugin on element.
|
|
84
|
-
`,
|
|
85
|
-
`Total slider plugins: ${plugins2.length}`
|
|
86
|
-
);
|
|
87
|
-
})
|
|
88
|
-
);
|
|
89
|
-
return [slider, { addPlugin: addPlugin2 }];
|
|
54
|
+
}
|
|
55
|
+
slider.on("created", centerSlides);
|
|
56
|
+
slider.on("optionsChanged", centerSlides);
|
|
57
|
+
};
|
|
58
|
+
createGuardedEffect(() => props.centerSlides, (centerSlides) => {
|
|
59
|
+
if (!centerSlides) return;
|
|
60
|
+
return addPlugin(centeredPlugin);
|
|
61
|
+
});
|
|
62
|
+
createGuardedEffect(plugins, (plugins) => {
|
|
63
|
+
if (plugins.length === 0) return;
|
|
64
|
+
console.log(`Registered a new plugin on element.\n`, `Total slider plugins: ${plugins.length}`);
|
|
65
|
+
});
|
|
66
|
+
return [slider, { addPlugin }];
|
|
90
67
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
68
|
+
var KeenSliderContextState = createContext(initializeKeenSliderContext);
|
|
69
|
+
var provideKeenSliderContext = (initialState, element) => {
|
|
70
|
+
const props = merge(initialState, { root: element });
|
|
71
|
+
return provide(KeenSliderContextState, props, element);
|
|
95
72
|
};
|
|
96
|
-
|
|
97
|
-
|
|
73
|
+
var useKeenSliderContext = (context) => {
|
|
74
|
+
return context;
|
|
98
75
|
};
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
"KeenSliderContext not found! Please ensure to wrap your custom element with keen-slider element."
|
|
104
|
-
);
|
|
105
|
-
}
|
|
106
|
-
return useKeenSliderContext(context);
|
|
76
|
+
var useKeenSlider = (element) => {
|
|
77
|
+
const context = consume(KeenSliderContextState, element);
|
|
78
|
+
if (!context) throw new Error("KeenSliderContext not found! Please ensure to wrap your custom element with keen-slider element.");
|
|
79
|
+
return useKeenSliderContext(context);
|
|
107
80
|
};
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
KeenSliderContextState,
|
|
111
|
-
element
|
|
112
|
-
);
|
|
113
|
-
return useKeenSliderContext(context);
|
|
81
|
+
var getKeenSliderContext = (element) => {
|
|
82
|
+
return useKeenSliderContext(getContextFromProvider(KeenSliderContextState, element));
|
|
114
83
|
};
|
|
115
84
|
function addPlugin({ target, plugin, controller }) {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
},
|
|
123
|
-
{
|
|
124
|
-
signal: controller?.signal
|
|
125
|
-
}
|
|
126
|
-
);
|
|
85
|
+
if (!target) return;
|
|
86
|
+
invokeOnLoaded(() => {
|
|
87
|
+
const [_, { addPlugin }] = getKeenSliderContext(target);
|
|
88
|
+
const removePlugin = addPlugin(plugin);
|
|
89
|
+
controller?.signal?.addEventListener("abort", removePlugin);
|
|
90
|
+
}, { signal: controller?.signal });
|
|
127
91
|
}
|
|
128
|
-
|
|
92
|
+
var useKeenSliderAt = createRemoteContext(KeenSliderContextState, { resolve: (target, host) => {
|
|
93
|
+
const el = target ? document.querySelector(target) : host;
|
|
94
|
+
if (!el) return null;
|
|
95
|
+
return el.tagName === "KEEN-SLIDER" ? el : el.querySelector("keen-slider");
|
|
96
|
+
} });
|
|
97
|
+
//#endregion
|
|
98
|
+
export { addPlugin, getKeenSliderContext, provideKeenSliderContext, useKeenSlider, useKeenSliderAt, useKeenSliderContext };
|
|
129
99
|
|
|
130
|
-
export { addPlugin, getKeenSliderContext, provideKeenSliderContext, useKeenSlider, useKeenSliderContext, withKeenSliderElementContext };
|
|
131
|
-
//# sourceMappingURL=useKeenSlider.js.map
|
|
132
100
|
//# sourceMappingURL=useKeenSlider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"useKeenSlider.js","names":[],"sources":["../../../src/hooks/useKeenSlider.ts"],"sourcesContent":["import {\n\tcreateGuardedEffect,\n\tcreateRemoteContext,\n\tgetContextFromProvider,\n\tinvokeOnLoaded,\n} from \"@brytdesigns/web-component-core/utils\";\nimport {\n\tconsume,\n\tcreateContext,\n\ttype ICustomElement,\n\tprovide,\n} from \"component-register\";\nimport { createMemo, createSignal, merge, omit, onCleanup } from \"solid-js\";\n\nimport KeenSlider, {\n\ttype KeenSliderInstance,\n\ttype KeenSliderOptions,\n\ttype KeenSliderPlugin,\n} from \"../KeenSlider\";\n\ntype CreateContextOptions = {\n\troot: HTMLElement & ICustomElement;\n\tconfig?: KeenSliderOptions;\n\tcenterSlides?: boolean;\n\trefreshOnChildrenChange?: boolean;\n};\n\ntype WalkableNode = Parameters<typeof provide>[2];\n\ntype KeenSliderContext = ReturnType<typeof initializeKeenSliderContext>;\n\nfunction initializeKeenSliderContext(props: CreateContextOptions) {\n\t// `omit` returns only the rest; picked keys are read straight off `props`.\n\tconst publicProps = omit(\n\t\tprops,\n\t\t\"root\",\n\t\t\"centerSlides\",\n\t\t\"refreshOnChildrenChange\",\n\t);\n\n\tconst [plugins, setPlugins] = createSignal<KeenSliderPlugin[]>([]);\n\tconst [forceSliderRebuild, setForceSliderRebuild] = createSignal(false);\n\n\tconst mutObserver = createMemo(() => {\n\t\tif (props.refreshOnChildrenChange)\n\t\t\treturn new MutationObserver((mutations) => {\n\t\t\t\tmutations.forEach((_) => {\n\t\t\t\t\tsetForceSliderRebuild((v) => !v);\n\t\t\t\t});\n\t\t\t});\n\t\treturn null;\n\t});\n\n\tconst slider = createMemo(() => {\n\t\tprops.root.setAttribute(\"data-initialized\", \"true\");\n\t\tconst slider = new KeenSlider(\n\t\t\tprops.root,\n\t\t\tpublicProps.config || ({} as any),\n\t\t\tplugins(),\n\t\t);\n\t\tconst m = mutObserver();\n\n\t\tif (m) {\n\t\t\tm.observe(slider.container, { childList: true });\n\t\t\tforceSliderRebuild();\n\t\t}\n\n\t\tonCleanup(() => {\n\t\t\tslider.destroy();\n\t\t\tprops.root.setAttribute(\"data-initialized\", \"false\");\n\t\t\tif (m) m.disconnect();\n\t\t});\n\n\t\treturn slider;\n\t});\n\n\tfunction addPlugin(plugin: KeenSliderPlugin) {\n\t\tlet index = -1;\n\n\t\tsetPlugins((plugins) => {\n\t\t\tindex = plugins.length;\n\t\t\treturn [...plugins, plugin];\n\t\t});\n\n\t\treturn () => {\n\t\t\tsetPlugins((plugins) => {\n\t\t\t\treturn [...plugins.slice(0, index), ...plugins.slice(index + 1)];\n\t\t\t});\n\t\t};\n\t}\n\n\tconst centeredPlugin: KeenSliderPlugin = (slider) => {\n\t\tfunction centerSlides(slider: KeenSliderInstance) {\n\t\t\tif (slider.track.details.maxIdx > 0) {\n\t\t\t\t//@ts-expect-error\n\t\t\t\tslider.container.style.justifyContent = null;\n\t\t\t\t//@ts-expect-error\n\t\t\t\tslider.container.style.transform = null;\n\t\t\t} else {\n\t\t\t\tslider.container.style.cssText = `\n justify-content: center;\n transform: translateX(-${(slider.options.slides as any)?.spacing || 16}px)\n `;\n\t\t\t}\n\t\t}\n\n\t\tslider.on(\"created\", centerSlides);\n\t\tslider.on(\"optionsChanged\", centerSlides);\n\t};\n\n\tcreateGuardedEffect(\n\t\t() => props.centerSlides,\n\t\t(centerSlides) => {\n\t\t\tif (!centerSlides) return;\n\t\t\tconst remove = addPlugin(centeredPlugin);\n\t\t\treturn remove;\n\t\t},\n\t);\n\n\tcreateGuardedEffect(plugins, (plugins) => {\n\t\tif (plugins.length === 0) return;\n\t\tconsole.log(\n\t\t\t`Registered a new plugin on element.\\n`,\n\t\t\t`Total slider plugins: ${plugins.length}`,\n\t\t);\n\t});\n\n\treturn [slider, { addPlugin }] as const;\n}\n\nconst KeenSliderContextState = createContext(initializeKeenSliderContext);\n\nexport const provideKeenSliderContext = (\n\tinitialState: Omit<CreateContextOptions, \"root\">,\n\telement: WalkableNode,\n): KeenSliderContext => {\n\tconst props = merge(initialState, { root: element });\n\treturn provide(KeenSliderContextState, props, element);\n};\n\nexport const useKeenSliderContext = (context: KeenSliderContext) => {\n\treturn context;\n};\n\nexport const useKeenSlider = (element: HTMLElement & ICustomElement) => {\n\tconst context: KeenSliderContext = consume(KeenSliderContextState, element);\n\n\tif (!context) {\n\t\tthrow new Error(\n\t\t\t\"KeenSliderContext not found! Please ensure to wrap your custom element with keen-slider element.\",\n\t\t);\n\t}\n\n\treturn useKeenSliderContext(context);\n};\n\nexport const getKeenSliderContext = (element: Element) => {\n\tconst context = getContextFromProvider<KeenSliderContext>(\n\t\tKeenSliderContextState,\n\t\telement,\n\t);\n\treturn useKeenSliderContext(context);\n};\n\ntype AddPluginOptions = {\n\ttarget: void | HTMLElement;\n\tplugin: KeenSliderPlugin;\n\tcontroller?: AbortController;\n};\n\nexport function addPlugin({ target, plugin, controller }: AddPluginOptions) {\n\tif (!target) return;\n\n\tinvokeOnLoaded(\n\t\t() => {\n\t\t\tconst [_, { addPlugin }] = getKeenSliderContext(target);\n\t\t\tconst removePlugin = addPlugin(plugin);\n\t\t\tcontroller?.signal?.addEventListener(\"abort\", removePlugin);\n\t\t},\n\t\t{\n\t\t\tsignal: controller?.signal,\n\t\t},\n\t);\n}\n\nexport const useKeenSliderAt = createRemoteContext<KeenSliderContext>(\n\tKeenSliderContextState,\n\t{\n\t\t// A target may name the slider itself or an ancestor of it. Stated once\n\t\t// here instead of the identical ten-line thunk that was copy-pasted into\n\t\t// all six extension packages.\n\t\tresolve: (target, host) => {\n\t\t\tconst el = target ? document.querySelector(target) : host;\n\t\t\tif (!el) return null;\n\t\t\treturn el.tagName === \"KEEN-SLIDER\"\n\t\t\t\t? el\n\t\t\t\t: el.querySelector(\"keen-slider\");\n\t\t},\n\t},\n);\n"],"mappings":";;;;;AA+BA,SAAS,4BAA4B,OAA6B;CAEjE,MAAM,cAAc,KACnB,OACA,QACA,gBACA,yBACD;CAEA,MAAM,CAAC,SAAS,cAAc,aAAiC,CAAC,CAAC;CACjE,MAAM,CAAC,oBAAoB,yBAAyB,aAAa,KAAK;CAEtE,MAAM,cAAc,iBAAiB;EACpC,IAAI,MAAM,yBACT,OAAO,IAAI,kBAAkB,cAAc;GAC1C,UAAU,SAAS,MAAM;IACxB,uBAAuB,MAAM,CAAC,CAAC;GAChC,CAAC;EACF,CAAC;EACF,OAAO;CACR,CAAC;CAED,MAAM,SAAS,iBAAiB;EAC/B,MAAM,KAAK,aAAa,oBAAoB,MAAM;EAClD,MAAM,SAAS,IAAI,WAClB,MAAM,MACN,YAAY,UAAW,CAAC,GACxB,QAAQ,CACT;EACA,MAAM,IAAI,YAAY;EAEtB,IAAI,GAAG;GACN,EAAE,QAAQ,OAAO,WAAW,EAAE,WAAW,KAAK,CAAC;GAC/C,mBAAmB;EACpB;EAEA,gBAAgB;GACf,OAAO,QAAQ;GACf,MAAM,KAAK,aAAa,oBAAoB,OAAO;GACnD,IAAI,GAAG,EAAE,WAAW;EACrB,CAAC;EAED,OAAO;CACR,CAAC;CAED,SAAS,UAAU,QAA0B;EAC5C,IAAI,QAAQ;EAEZ,YAAY,YAAY;GACvB,QAAQ,QAAQ;GAChB,OAAO,CAAC,GAAG,SAAS,MAAM;EAC3B,CAAC;EAED,aAAa;GACZ,YAAY,YAAY;IACvB,OAAO,CAAC,GAAG,QAAQ,MAAM,GAAG,KAAK,GAAG,GAAG,QAAQ,MAAM,QAAQ,CAAC,CAAC;GAChE,CAAC;EACF;CACD;CAEA,MAAM,kBAAoC,WAAW;EACpD,SAAS,aAAa,QAA4B;GACjD,IAAI,OAAO,MAAM,QAAQ,SAAS,GAAG;IAEpC,OAAO,UAAU,MAAM,iBAAiB;IAExC,OAAO,UAAU,MAAM,YAAY;GACpC,OACC,OAAO,UAAU,MAAM,UAAU;;mCAED,OAAO,QAAQ,QAAgB,WAAW,GAAG;;EAG/E;EAEA,OAAO,GAAG,WAAW,YAAY;EACjC,OAAO,GAAG,kBAAkB,YAAY;CACzC;CAEA,0BACO,MAAM,eACX,iBAAiB;EACjB,IAAI,CAAC,cAAc;EAEnB,OADe,UAAU,cAClB;CACR,CACD;CAEA,oBAAoB,UAAU,YAAY;EACzC,IAAI,QAAQ,WAAW,GAAG;EAC1B,QAAQ,IACP,yCACA,yBAAyB,QAAQ,QAClC;CACD,CAAC;CAED,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC9B;AAEA,IAAM,yBAAyB,cAAc,2BAA2B;AAExE,IAAa,4BACZ,cACA,YACuB;CACvB,MAAM,QAAQ,MAAM,cAAc,EAAE,MAAM,QAAQ,CAAC;CACnD,OAAO,QAAQ,wBAAwB,OAAO,OAAO;AACtD;AAEA,IAAa,wBAAwB,YAA+B;CACnE,OAAO;AACR;AAEA,IAAa,iBAAiB,YAA0C;CACvE,MAAM,UAA6B,QAAQ,wBAAwB,OAAO;CAE1E,IAAI,CAAC,SACJ,MAAM,IAAI,MACT,kGACD;CAGD,OAAO,qBAAqB,OAAO;AACpC;AAEA,IAAa,wBAAwB,YAAqB;CAKzD,OAAO,qBAJS,uBACf,wBACA,OAE2B,CAAO;AACpC;AAQA,SAAgB,UAAU,EAAE,QAAQ,QAAQ,cAAgC;CAC3E,IAAI,CAAC,QAAQ;CAEb,qBACO;EACL,MAAM,CAAC,GAAG,EAAE,eAAe,qBAAqB,MAAM;EACtD,MAAM,eAAe,UAAU,MAAM;EACrC,YAAY,QAAQ,iBAAiB,SAAS,YAAY;CAC3D,GACA,EACC,QAAQ,YAAY,OACrB,CACD;AACD;AAEA,IAAa,kBAAkB,oBAC9B,wBACA,EAIC,UAAU,QAAQ,SAAS;CAC1B,MAAM,KAAK,SAAS,SAAS,cAAc,MAAM,IAAI;CACrD,IAAI,CAAC,IAAI,OAAO;CAChB,OAAO,GAAG,YAAY,gBACnB,KACA,GAAG,cAAc,aAAa;AAClC,EACD,CACD"}
|
package/dist/main/index.d.ts
CHANGED
|
@@ -4,6 +4,11 @@ import { ICustomElement } from 'component-register';
|
|
|
4
4
|
import _KeenSlider from 'keen-slider';
|
|
5
5
|
import { KeenSliderHooks as _KeenSliderHooks, KeenSliderInstance as _KeenSliderInstance, KeenSliderOptions as _KeenSliderOptions, KeenSliderPlugin as _KeenSliderPlugin } from 'keen-slider';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* `component-register` types `options.element` as a bare `ICustomElement`, but
|
|
9
|
+
* at runtime it is always also an `HTMLElement`. Every component in this repo
|
|
10
|
+
* needs the DOM half.
|
|
11
|
+
*/
|
|
7
12
|
export type CorrectComponentOptions = {
|
|
8
13
|
element: HTMLElement & ICustomElement;
|
|
9
14
|
};
|
|
@@ -27,13 +32,13 @@ export type Props = {
|
|
|
27
32
|
declare const Name = "keen-slider";
|
|
28
33
|
declare const Component: CorrectComponentType<Props>;
|
|
29
34
|
export declare const useKeenSlider: (element: HTMLElement & ICustomElement) => readonly [
|
|
30
|
-
import("solid-js").
|
|
35
|
+
import("solid-js").SourceAccessor<KeenSlider>,
|
|
31
36
|
{
|
|
32
37
|
readonly addPlugin: (plugin: KeenSliderPlugin) => () => void;
|
|
33
38
|
}
|
|
34
39
|
];
|
|
35
40
|
export declare const getKeenSliderContext: (element: Element) => readonly [
|
|
36
|
-
import("solid-js").
|
|
41
|
+
import("solid-js").SourceAccessor<KeenSlider>,
|
|
37
42
|
{
|
|
38
43
|
readonly addPlugin: (plugin: KeenSliderPlugin) => () => void;
|
|
39
44
|
}
|
|
@@ -44,12 +49,12 @@ export type AddPluginOptions = {
|
|
|
44
49
|
controller?: AbortController;
|
|
45
50
|
};
|
|
46
51
|
export declare function addPlugin({ target, plugin, controller }: AddPluginOptions): void;
|
|
47
|
-
export declare const
|
|
48
|
-
import("solid-js").
|
|
52
|
+
export declare const useKeenSliderAt: (target: () => string | undefined, host: HTMLElement) => import("solid-js").SourceAccessor<readonly [
|
|
53
|
+
import("solid-js").SourceAccessor<KeenSlider>,
|
|
49
54
|
{
|
|
50
55
|
readonly addPlugin: (plugin: KeenSliderPlugin) => () => void;
|
|
51
56
|
}
|
|
52
|
-
]
|
|
57
|
+
]>;
|
|
53
58
|
export type KeenSliderProps = KeenSlider$1.Props;
|
|
54
59
|
|
|
55
60
|
declare namespace KeenSlider$1 {
|
package/dist/main/index.js
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
|
|
1
|
+
import { addPlugin, getKeenSliderContext, useKeenSlider, useKeenSliderAt } from "./hooks/useKeenSlider.js";
|
|
2
|
+
import "./hooks/index.js";
|
|
3
|
+
import { Component, Name } from "./components/keen-slider.js";
|
|
4
|
+
import "./components/index.js";
|
|
5
|
+
import { customShadowlessElement } from "@brytdesigns/web-component-core/utils";
|
|
6
|
+
//#region src/index.ts
|
|
7
|
+
customShadowlessElement(Name, {
|
|
8
|
+
config: {},
|
|
9
|
+
centerSlides: false,
|
|
10
|
+
refreshOnChildrenChange: false
|
|
11
|
+
}, Component);
|
|
12
|
+
//#endregion
|
|
13
|
+
export { addPlugin, getKeenSliderContext, useKeenSlider, useKeenSliderAt };
|
|
4
14
|
|
|
5
|
-
customShadowlessElement(
|
|
6
|
-
KeenSlider.Name,
|
|
7
|
-
{
|
|
8
|
-
// @ts-ignore
|
|
9
|
-
config: {},
|
|
10
|
-
centerSlides: false,
|
|
11
|
-
refreshOnChildrenChange: false
|
|
12
|
-
},
|
|
13
|
-
correctElementType(KeenSlider.Component)
|
|
14
|
-
);
|
|
15
|
-
//# sourceMappingURL=index.js.map
|
|
16
15
|
//# sourceMappingURL=index.js.map
|
package/dist/main/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["import { customShadowlessElement } from \"@brytdesigns/web-component-core/utils\";\nimport { KeenSlider } from \"./components/index.js\";\n\nexport type {\n\tKeenSliderInstance,\n\tKeenSliderOptions,\n\tKeenSliderPlugin,\n} from \"./KeenSlider.js\";\n\nexport type KeenSliderProps = KeenSlider.Props;\n\nexport {\n\taddPlugin,\n\tgetKeenSliderContext,\n\tuseKeenSlider,\n\tuseKeenSliderAt,\n} from \"./hooks/index.js\";\n\ncustomShadowlessElement(\n\tKeenSlider.Name,\n\t{\n\t\t// @ts-expect-error\n\t\tconfig: {},\n\t\tcenterSlides: false,\n\t\trefreshOnChildrenChange: false,\n\t},\n\tKeenSlider.Component,\n);\n"],"mappings":";;;;;;AAkBA,wBACC,MACA;CAEC,QAAQ,CAAC;CACT,cAAc;CACd,yBAAyB;AAC1B,GACA,SACD"}
|
package/dist/main/utils.js
CHANGED
|
@@ -1,18 +1,8 @@
|
|
|
1
|
+
//#region src/utils.ts
|
|
1
2
|
function constrain(value, min = -Infinity, max = Infinity) {
|
|
2
|
-
|
|
3
|
-
}
|
|
4
|
-
function initializeSliderClasses(ComponentType = (props, options) => {
|
|
5
|
-
}) {
|
|
6
|
-
return (props, options) => {
|
|
7
|
-
const { element } = options;
|
|
8
|
-
element.classList.add("keen-slider");
|
|
9
|
-
Array.from(element.children).forEach(
|
|
10
|
-
(child) => child.classList.add("keen-slider__slide")
|
|
11
|
-
);
|
|
12
|
-
return ComponentType(props, options);
|
|
13
|
-
};
|
|
3
|
+
return Math.min(Math.max(value, min), max);
|
|
14
4
|
}
|
|
5
|
+
//#endregion
|
|
6
|
+
export { constrain };
|
|
15
7
|
|
|
16
|
-
export { constrain, initializeSliderClasses };
|
|
17
|
-
//# sourceMappingURL=utils.js.map
|
|
18
8
|
//# sourceMappingURL=utils.js.map
|
package/dist/main/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"utils.js","names":[],"sources":["../../src/utils.ts"],"sourcesContent":["import type { ICustomElement } from \"component-register\";\n\nexport function constrain(value: number, min = -Infinity, max = Infinity) {\n\treturn Math.min(Math.max(value, min), max);\n}\n\ntype Options = {\n\telement: HTMLElement & ICustomElement;\n};\n\nexport function initializeSliderClasses<Props>(\n\tComponentType = (props: Props, options: Options) => {},\n) {\n\treturn (props: Props, options: Options) => {\n\t\tconst { element } = options;\n\t\telement.classList.add(\"keen-slider\");\n\t\tArray.from(element.children).forEach((child) => {\n\t\t\tchild.classList.add(\"keen-slider__slide\");\n\t\t});\n\t\treturn ComponentType(props, options);\n\t};\n}\n"],"mappings":";AAEA,SAAgB,UAAU,OAAe,MAAM,WAAW,MAAM,UAAU;CACzE,OAAO,KAAK,IAAI,KAAK,IAAI,OAAO,GAAG,GAAG,GAAG;AAC1C"}
|
package/dist/styles.css
CHANGED
|
@@ -1,51 +1,55 @@
|
|
|
1
1
|
keen-slider:not([data-keen-slider-disabled]) {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
2
|
+
-webkit-touch-callout: none;
|
|
3
|
+
-webkit-tap-highlight-color: transparent;
|
|
4
|
+
align-content: flex-start;
|
|
5
|
+
display: flex;
|
|
6
|
+
overflow: hidden;
|
|
7
|
+
position: relative;
|
|
8
|
+
touch-action: pan-y;
|
|
9
|
+
-webkit-user-select: none;
|
|
10
|
+
-moz-user-select: none;
|
|
11
|
+
-ms-user-select: none;
|
|
12
|
+
user-select: none;
|
|
13
|
+
/* biome-ignore lint/correctness/noUnknownProperty: KHTML prefix is obsolete
|
|
14
|
+
but harmless; kept so the published stylesheet stays byte-stable. */
|
|
15
|
+
-khtml-user-select: none;
|
|
16
|
+
width: 100%;
|
|
15
17
|
}
|
|
16
18
|
|
|
17
19
|
keen-slider:not([data-keen-slider-disabled]):not([config*='"perView": "auto"'])
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
.keen-slider__slide {
|
|
21
|
+
position: relative;
|
|
22
|
+
overflow: hidden;
|
|
23
|
+
min-width: calc(
|
|
24
|
+
calc(100% / var(--slides-per-view, 1)) -
|
|
25
|
+
var(--slides-spacing, 0px)
|
|
26
|
+
);
|
|
27
|
+
min-height: 100%;
|
|
25
28
|
}
|
|
26
29
|
|
|
27
30
|
keen-slider[config*='"vertical": true']:not([data-keen-slider-disabled])
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
.keen-slider__slide {
|
|
32
|
+
position: relative;
|
|
33
|
+
overflow: hidden;
|
|
34
|
+
min-height: calc(
|
|
35
|
+
calc(100% / var(--slides-per-view, 1)) -
|
|
36
|
+
var(--slides-spacing, 0px)
|
|
37
|
+
);
|
|
38
|
+
min-width: 100%;
|
|
35
39
|
}
|
|
36
40
|
|
|
37
41
|
keen-slider:not([data-initialized]) {
|
|
38
|
-
|
|
42
|
+
gap: var(--slides-spacing, 0px);
|
|
39
43
|
}
|
|
40
44
|
|
|
41
45
|
keen-slider:not([data-keen-slider-disabled])[data-keen-slider-reverse] {
|
|
42
|
-
|
|
46
|
+
flex-direction: row-reverse;
|
|
43
47
|
}
|
|
44
48
|
|
|
45
49
|
keen-slider:not([data-keen-slider-disabled])[config*='"vertical": true'] {
|
|
46
|
-
|
|
50
|
+
flex-wrap: wrap;
|
|
47
51
|
}
|
|
48
52
|
|
|
49
53
|
keen-slider:not([data-keen-slider-disabled])[data-keen-slider-moves] * {
|
|
50
|
-
|
|
54
|
+
pointer-events: none;
|
|
51
55
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brytdesigns/web-component-keen-slider",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "Keen slider web component",
|
|
5
5
|
"main": "./dist/main/index.js",
|
|
6
6
|
"module": "./dist/main/index.js",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"exports": {
|
|
10
10
|
".": {
|
|
11
11
|
"types": "./dist/main/index.d.ts",
|
|
12
|
-
"
|
|
12
|
+
"default": "./dist/main/index.js"
|
|
13
13
|
},
|
|
14
14
|
"./styles.css": "./dist/styles.css"
|
|
15
15
|
},
|
|
@@ -20,18 +20,17 @@
|
|
|
20
20
|
"author": "Bryt Designs",
|
|
21
21
|
"license": "ISC",
|
|
22
22
|
"dependencies": {
|
|
23
|
+
"@brytdesigns/web-component-core": "3.0.0",
|
|
23
24
|
"component-register": "0.8.7",
|
|
24
25
|
"keen-slider": "^6.8.6",
|
|
25
|
-
"solid-
|
|
26
|
-
"solid-js": "^1.9.9",
|
|
27
|
-
"@brytdesigns/web-component-core": "1.1.6"
|
|
26
|
+
"solid-js": "2.0.0-rc.14"
|
|
28
27
|
},
|
|
29
28
|
"devDependencies": {
|
|
30
|
-
"
|
|
31
|
-
"
|
|
29
|
+
"@repo/vite-config": "0.0.0",
|
|
30
|
+
"vite": "^8.2.2"
|
|
32
31
|
},
|
|
33
32
|
"scripts": {
|
|
34
|
-
"build": "
|
|
33
|
+
"build": "vite build",
|
|
35
34
|
"typecheck": "tsc --noEmit"
|
|
36
35
|
}
|
|
37
36
|
}
|