@zayne-labs/ui-react 0.0.8 → 0.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/chunk-ENDWJXPF.js +47 -0
- package/dist/esm/chunk-ENDWJXPF.js.map +1 -0
- package/dist/esm/chunk-GBLTOENX.js +42 -0
- package/dist/esm/chunk-GBLTOENX.js.map +1 -0
- package/dist/esm/chunk-OHG7GB7O.js +8 -0
- package/dist/esm/chunk-OHG7GB7O.js.map +1 -0
- package/dist/esm/chunk-PZ5AY32C.js +9 -0
- package/dist/esm/chunk-PZ5AY32C.js.map +1 -0
- package/dist/esm/common/for/index.js +2 -40
- package/dist/esm/common/for/index.js.map +1 -1
- package/dist/esm/common/show/index.d.ts +10 -6
- package/dist/esm/common/show/index.js +10 -6
- package/dist/esm/common/show/index.js.map +1 -1
- package/dist/esm/common/slot/index.js +2 -45
- package/dist/esm/common/slot/index.js.map +1 -1
- package/dist/esm/common/switch/index.d.ts +2 -5
- package/dist/esm/common/switch/index.js +4 -7
- package/dist/esm/common/switch/index.js.map +1 -1
- package/dist/esm/common/teleport/index.js +1 -1
- package/dist/esm/ui/card/index.d.ts +5 -7
- package/dist/esm/ui/card/index.js +22 -59
- package/dist/esm/ui/card/index.js.map +1 -1
- package/dist/esm/ui/carousel/index.d.ts +6 -11
- package/dist/esm/ui/carousel/index.js +33 -59
- package/dist/esm/ui/carousel/index.js.map +1 -1
- package/dist/esm/ui/drag-scroll/index.d.ts +285 -4
- package/dist/esm/ui/drag-scroll/index.js +42 -24
- package/dist/esm/ui/drag-scroll/index.js.map +1 -1
- package/dist/esm/ui/drop-zone/index.d.ts +24 -14
- package/dist/esm/ui/drop-zone/index.js +46 -47
- package/dist/esm/ui/drop-zone/index.js.map +1 -1
- package/dist/esm/ui/form/index.d.ts +41 -32
- package/dist/esm/ui/form/index.js +84 -96
- package/dist/esm/ui/form/index.js.map +1 -1
- package/package.json +10 -10
|
@@ -1,51 +1,14 @@
|
|
|
1
|
+
import { getElementList } from '../../chunk-GBLTOENX.js';
|
|
2
|
+
import { cnMerge } from '../../chunk-OHG7GB7O.js';
|
|
3
|
+
import { __export } from '../../chunk-PZ5AY32C.js';
|
|
1
4
|
import * as React3 from 'react';
|
|
2
5
|
import { useEffect, useState } from 'react';
|
|
3
|
-
import { isArray } from '@zayne-labs/toolkit-type-helpers';
|
|
4
|
-
import { twMerge } from 'tailwind-merge';
|
|
5
6
|
import { useConstant, useAnimationInterval, useCallbackRef } from '@zayne-labs/toolkit-react';
|
|
6
7
|
import { createZustandContext } from '@zayne-labs/toolkit-react/zustand';
|
|
7
8
|
import { create } from 'zustand';
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const { children, each, render } = props;
|
|
12
|
-
if (!isArray(each)) {
|
|
13
|
-
return each;
|
|
14
|
-
}
|
|
15
|
-
const JSXElementList = each.map((...params) => {
|
|
16
|
-
if (typeof children === "function") {
|
|
17
|
-
return children(...params);
|
|
18
|
-
}
|
|
19
|
-
return render(...params);
|
|
20
|
-
});
|
|
21
|
-
return JSXElementList;
|
|
22
|
-
}
|
|
23
|
-
function ForList(props) {
|
|
24
|
-
const { as: ListContainer = "ul", children, className, each, ref, render, ...restOfListProps } = props;
|
|
25
|
-
return /* @__PURE__ */ React3.createElement(ListContainer, { ref, className, ...restOfListProps }, /* @__PURE__ */ React3.createElement(ForBase, { ...{ children, each, render } }));
|
|
26
|
-
}
|
|
27
|
-
var Base = ForBase;
|
|
28
|
-
var List = ForList;
|
|
29
|
-
|
|
30
|
-
// src/components/common/for/getElementList.ts
|
|
31
|
-
var getElementList = (variant) => {
|
|
32
|
-
switch (variant) {
|
|
33
|
-
case "base": {
|
|
34
|
-
return [Base];
|
|
35
|
-
}
|
|
36
|
-
case "withWrapper": {
|
|
37
|
-
return [List];
|
|
38
|
-
}
|
|
39
|
-
default: {
|
|
40
|
-
return [List];
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
// src/components/icons/ChevronLeftIcon.tsx
|
|
46
|
-
var ChevronLeftIcon = (props) => /* @__PURE__ */ React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", viewBox: "0 0 24 24", ...props }, /* @__PURE__ */ React.createElement("g", { fill: "none", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2" }, /* @__PURE__ */ React.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ React.createElement("path", { d: "m14 16l-4-4l4-4" })));
|
|
47
|
-
var cnMerge = (...classNames) => twMerge(classNames);
|
|
48
|
-
var [Provider, useCarouselStore] = createZustandContext({
|
|
10
|
+
var ChevronLeftIcon = (props) => /* @__PURE__ */ React3.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", viewBox: "0 0 24 24", ...props }, /* @__PURE__ */ React3.createElement("g", { fill: "none", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2" }, /* @__PURE__ */ React3.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ React3.createElement("path", { d: "m14 16l-4-4l4-4" })));
|
|
11
|
+
var [Provider, useCarouselStoreContext] = createZustandContext({
|
|
49
12
|
hookName: "useCarouselStore",
|
|
50
13
|
name: "CarouselStoreContext",
|
|
51
14
|
providerName: "CarouselContextProvider"
|
|
@@ -85,17 +48,22 @@ var createCarouselStore = (storeValues) => {
|
|
|
85
48
|
}));
|
|
86
49
|
return useInitCarouselStore;
|
|
87
50
|
};
|
|
88
|
-
|
|
89
|
-
const {
|
|
51
|
+
var useCarousel = (props) => {
|
|
52
|
+
const { images, onSlideBtnClick } = props;
|
|
90
53
|
const useInitCarouselStore = useConstant(() => createCarouselStore({ images, onSlideBtnClick }));
|
|
91
54
|
useEffect(() => {
|
|
92
55
|
useInitCarouselStore.setState({ images });
|
|
93
56
|
}, [images]);
|
|
57
|
+
return useInitCarouselStore;
|
|
58
|
+
};
|
|
59
|
+
function CarouselContextProvider(props) {
|
|
60
|
+
const { children, images, onSlideBtnClick } = props;
|
|
61
|
+
const useInitCarouselStore = useCarousel({ images, onSlideBtnClick });
|
|
94
62
|
return /* @__PURE__ */ React.createElement(Provider, { value: useInitCarouselStore }, children);
|
|
95
63
|
}
|
|
96
64
|
var useCarouselOptions = (options = {}) => {
|
|
97
65
|
const { autoSlideInterval = 5e3, hasAutoSlide = false, shouldPauseOnHover = false } = options;
|
|
98
|
-
const { goToNextSlide } =
|
|
66
|
+
const { goToNextSlide } = useCarouselStoreContext((state) => state.actions);
|
|
99
67
|
const [isPaused, setIsPaused] = useState(false);
|
|
100
68
|
const shouldAutoSlide = hasAutoSlide && !isPaused;
|
|
101
69
|
useAnimationInterval({
|
|
@@ -145,7 +113,7 @@ function CarouselContent(props) {
|
|
|
145
113
|
}
|
|
146
114
|
function CarouselButton(props) {
|
|
147
115
|
const { classNames, icon, variant } = props;
|
|
148
|
-
const { goToNextSlide, goToPreviousSlide } =
|
|
116
|
+
const { goToNextSlide, goToPreviousSlide } = useCarouselStoreContext((state) => state.actions);
|
|
149
117
|
return /* @__PURE__ */ React3.createElement(
|
|
150
118
|
"button",
|
|
151
119
|
{
|
|
@@ -218,8 +186,8 @@ function CarouselControls(props) {
|
|
|
218
186
|
function CarouselItemWrapper(props) {
|
|
219
187
|
const { children, className, each, render } = props;
|
|
220
188
|
const [ItemList] = getElementList("base");
|
|
221
|
-
const currentSlide =
|
|
222
|
-
const images =
|
|
189
|
+
const currentSlide = useCarouselStoreContext((state) => state.currentSlide);
|
|
190
|
+
const images = useCarouselStoreContext((state) => each ?? state.images);
|
|
223
191
|
return /* @__PURE__ */ React3.createElement(
|
|
224
192
|
"ul",
|
|
225
193
|
{
|
|
@@ -252,7 +220,7 @@ function CarouselCaption(props) {
|
|
|
252
220
|
}
|
|
253
221
|
function CarouselIndicatorWrapper(props) {
|
|
254
222
|
const { children, className, each, render } = props;
|
|
255
|
-
const images =
|
|
223
|
+
const images = useCarouselStoreContext((state) => each ?? state.images);
|
|
256
224
|
const [IndicatorList] = getElementList("base");
|
|
257
225
|
return /* @__PURE__ */ React3.createElement(
|
|
258
226
|
"ul",
|
|
@@ -271,7 +239,7 @@ function CarouselIndicator(props) {
|
|
|
271
239
|
const {
|
|
272
240
|
actions: { goToSlide },
|
|
273
241
|
currentSlide
|
|
274
|
-
} =
|
|
242
|
+
} = useCarouselStoreContext((state) => state);
|
|
275
243
|
return /* @__PURE__ */ React3.createElement("li", { className: cnMerge("inline-flex", classNames?.base) }, /* @__PURE__ */ React3.createElement(
|
|
276
244
|
"button",
|
|
277
245
|
{
|
|
@@ -286,15 +254,21 @@ function CarouselIndicator(props) {
|
|
|
286
254
|
}
|
|
287
255
|
));
|
|
288
256
|
}
|
|
289
|
-
var Content = CarouselContent;
|
|
290
|
-
var Controls = CarouselControls;
|
|
291
|
-
var Button = CarouselButton;
|
|
292
|
-
var Item = CarouselItem;
|
|
293
|
-
var ItemWrapper = CarouselItemWrapper;
|
|
294
|
-
var Caption = CarouselCaption;
|
|
295
|
-
var Indicator = CarouselIndicator;
|
|
296
|
-
var IndicatorWrapper = CarouselIndicatorWrapper;
|
|
297
257
|
|
|
298
|
-
|
|
258
|
+
// src/components/ui/carousel/carousel-parts.ts
|
|
259
|
+
var carousel_parts_exports = {};
|
|
260
|
+
__export(carousel_parts_exports, {
|
|
261
|
+
Button: () => CarouselButton,
|
|
262
|
+
Caption: () => CarouselCaption,
|
|
263
|
+
Content: () => CarouselContent,
|
|
264
|
+
Controls: () => CarouselControls,
|
|
265
|
+
Indicator: () => CarouselIndicator,
|
|
266
|
+
IndicatorWrapper: () => CarouselIndicatorWrapper,
|
|
267
|
+
Item: () => CarouselItem,
|
|
268
|
+
ItemWrapper: () => CarouselItemWrapper,
|
|
269
|
+
Root: () => CarouselContextProvider
|
|
270
|
+
});
|
|
271
|
+
|
|
272
|
+
export { carousel_parts_exports as Carousel, CarouselButton, CarouselCaption, CarouselContent, CarouselControls, CarouselIndicator, CarouselIndicatorWrapper, CarouselItem, CarouselItemWrapper };
|
|
299
273
|
//# sourceMappingURL=index.js.map
|
|
300
274
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/common/for/for.tsx","../../../../src/components/common/for/getElementList.ts","../../../../src/components/icons/ChevronLeftIcon.tsx","../../../../src/lib/utils/cn.ts","../../../../src/components/ui/carousel/carouselStoreContext.tsx","../../../../src/components/ui/carousel/useCarouselOptions.ts","../../../../src/components/ui/carousel/carousel.tsx"],"names":["React2"],"mappings":"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","file":"index.js","sourcesContent":["import * as React from \"react\";\n\nimport type { DiscriminatedRenderProps, PolymorphicProps } from \"@zayne-labs/toolkit-react/utils\";\nimport { isArray } from \"@zayne-labs/toolkit-type-helpers\";\n\n// prettier-ignore\ntype RenderPropFn<TArrayItem> = (\n\titem: TArrayItem,\n\tindex: number,\n\tarray: TArrayItem[]\n) => React.ReactNode;\n\nexport type EachProp<TArrayItem> = { each: TArrayItem[] };\n\nexport type ForRenderProps<TArrayItem> = DiscriminatedRenderProps<RenderPropFn<TArrayItem>>;\n\ntype ForProps<TArrayItem> = EachProp<TArrayItem> & ForRenderProps<TArrayItem>;\n\nexport function ForBase<TArrayItem>(props: ForProps<TArrayItem>) {\n\tconst { children, each, render } = props;\n\n\tif (!isArray(each)) {\n\t\treturn each;\n\t}\n\n\tconst JSXElementList = each.map((...params: Parameters<RenderPropFn<TArrayItem>>) => {\n\t\tif (typeof children === \"function\") {\n\t\t\treturn children(...params);\n\t\t}\n\n\t\treturn render(...params);\n\t});\n\n\treturn JSXElementList;\n}\n\nexport function ForList<TArrayItem, TElement extends React.ElementType = \"ul\">(\n\tprops: PolymorphicProps<TElement, ForProps<TArrayItem> & { className?: string }>\n) {\n\tconst { as: ListContainer = \"ul\", children, className, each, ref, render, ...restOfListProps } = props;\n\n\treturn (\n\t\t<ListContainer ref={ref} className={className} {...restOfListProps}>\n\t\t\t<ForBase {...({ children, each, render } as ForProps<TArrayItem>)} />\n\t\t</ListContainer>\n\t);\n}\n\nexport const Base = ForBase;\n\nexport const List = ForList;\n","import * as For from \"./for\";\n\ntype GetElementListResult<TVariant extends \"base\" | \"withWrapper\"> = TVariant extends \"base\"\n\t? [typeof For.Base]\n\t: [typeof For.List];\n\nconst getElementList = <TVariant extends \"base\" | \"withWrapper\" = \"withWrapper\">(\n\tvariant?: TVariant\n): GetElementListResult<TVariant> => {\n\tswitch (variant) {\n\t\tcase \"base\": {\n\t\t\treturn [For.Base] as never;\n\t\t}\n\t\tcase \"withWrapper\": {\n\t\t\treturn [For.List] as never;\n\t\t}\n\t\tdefault: {\n\t\t\treturn [For.List] as never;\n\t\t}\n\t}\n};\n\nexport { getElementList };\n","const ChevronLeftIcon = (props: React.SVGProps<SVGSVGElement>) => (\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n\t\t<g fill=\"none\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\">\n\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\" />\n\t\t\t<path d=\"m14 16l-4-4l4-4\" />\n\t\t</g>\n\t</svg>\n);\n\nexport { ChevronLeftIcon };\n","import { type ClassNameValue, twMerge } from \"tailwind-merge\";\n\nexport const cnMerge = (...classNames: ClassNameValue[]) => twMerge(classNames);\n","import { useConstant } from \"@zayne-labs/toolkit-react\";\nimport { createZustandContext } from \"@zayne-labs/toolkit-react/zustand\";\nimport type { PrettyOmit } from \"@zayne-labs/toolkit-type-helpers\";\nimport { useEffect } from \"react\";\nimport { create } from \"zustand\";\nimport type { CarouselProviderProps, CarouselStore, ImagesType } from \"./types\";\n\nconst [Provider, useCarouselStore] = createZustandContext<CarouselStore>({\n\thookName: \"useCarouselStore\",\n\tname: \"CarouselStoreContext\",\n\tproviderName: \"CarouselContextProvider\",\n});\n\n// CarouselStore Creation\nconst createCarouselStore = <TImages extends ImagesType>(\n\tstoreValues: PrettyOmit<CarouselProviderProps<TImages>, \"children\">\n) => {\n\tconst { images, onSlideBtnClick } = storeValues;\n\n\tconst useInitCarouselStore = create<CarouselStore<TImages>>()((set, get) => ({\n\t\tcurrentSlide: 0,\n\t\timages,\n\t\tmaxSlide: images.length - 1,\n\n\t\t/* eslint-disable perfectionist/sort-objects -- actions should be last */\n\t\tactions: {\n\t\t\t/* eslint-enable perfectionist/sort-objects -- actions should be last */\n\n\t\t\tgoToNextSlide: () => {\n\t\t\t\tconst { currentSlide, maxSlide } = get();\n\t\t\t\tconst { goToSlide } = get().actions;\n\n\t\t\t\tif (currentSlide === maxSlide) {\n\t\t\t\t\tgoToSlide(0);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tgoToSlide(currentSlide + 1);\n\t\t\t},\n\n\t\t\tgoToPreviousSlide: () => {\n\t\t\t\tconst { currentSlide, maxSlide } = get();\n\t\t\t\tconst { goToSlide } = get().actions;\n\n\t\t\t\tif (currentSlide === 0) {\n\t\t\t\t\tgoToSlide(maxSlide);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tgoToSlide(currentSlide - 1);\n\t\t\t},\n\n\t\t\tgoToSlide: (newValue) => {\n\t\t\t\tonSlideBtnClick?.();\n\n\t\t\t\tset({ currentSlide: newValue });\n\t\t\t},\n\t\t},\n\t}));\n\n\treturn useInitCarouselStore;\n};\n\n// == Provider Component\nfunction CarouselContextProvider<TImages extends ImagesType>(props: CarouselProviderProps<TImages>) {\n\tconst { children, images, onSlideBtnClick } = props;\n\n\tconst useInitCarouselStore = useConstant(() => createCarouselStore({ images, onSlideBtnClick }));\n\n\t// == To set images again when a page is mounted, preventing stale images from previous page\n\tuseEffect(() => {\n\t\tuseInitCarouselStore.setState({ images });\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps -- useInitCarouselStore is stable\n\t}, [images]);\n\n\treturn <Provider value={useInitCarouselStore}>{children}</Provider>;\n}\n\n// eslint-disable-next-line react-refresh/only-export-components -- It's fine\nexport { useCarouselStore, CarouselContextProvider };\n","import { useAnimationInterval, useCallbackRef } from \"@zayne-labs/toolkit-react\";\nimport { useState } from \"react\";\nimport { useCarouselStore } from \"./carouselStoreContext\";\n\ntype CarouselOptions = {\n\tautoSlideInterval?: number;\n\thasAutoSlide?: boolean;\n\tshouldPauseOnHover?: boolean;\n};\n\nconst useCarouselOptions = (options: CarouselOptions = {}) => {\n\tconst { autoSlideInterval = 5000, hasAutoSlide = false, shouldPauseOnHover = false } = options;\n\n\tconst { goToNextSlide } = useCarouselStore((state) => state.actions);\n\n\tconst [isPaused, setIsPaused] = useState(false);\n\n\tconst shouldAutoSlide = hasAutoSlide && !isPaused;\n\n\tuseAnimationInterval({\n\t\tintervalDuration: shouldAutoSlide ? autoSlideInterval : null,\n\t\tonAnimation: goToNextSlide,\n\t});\n\n\tconst pauseAutoSlide = useCallbackRef(() => shouldPauseOnHover && setIsPaused(true));\n\n\tconst resumeAutoSlide = useCallbackRef(() => shouldPauseOnHover && setIsPaused(false));\n\n\treturn { pauseAutoSlide, resumeAutoSlide };\n};\n\nexport { useCarouselOptions };\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { getElementList } from \"@/components/common/for\";\nimport { ChevronLeftIcon } from \"@/components/icons\";\nimport { cnMerge } from \"@/lib/utils/cn\";\nimport type { MyCustomCss, PolymorphicProps } from \"@zayne-labs/toolkit-react/utils\";\nimport { useCarouselStore } from \"./carouselStoreContext\";\nimport type {\n\tCarouselButtonsProps,\n\tCarouselContentProps,\n\tCarouselControlProps,\n\tCarouselIndicatorProps,\n\tCarouselWrapperProps,\n\tOtherCarouselProps,\n} from \"./types\";\nimport { useCarouselOptions } from \"./useCarouselOptions\";\n\n// TODO - Add dragging and swiping support\nexport function CarouselContent<TElement extends React.ElementType = \"article\">(\n\tprops: PolymorphicProps<TElement, CarouselContentProps>\n) {\n\tconst {\n\t\tas: HtmlElement = \"article\",\n\t\tautoSlideInterval,\n\t\tchildren,\n\t\tclassNames,\n\t\thasAutoSlide,\n\t\tshouldPauseOnHover,\n\t} = props;\n\n\tconst { pauseAutoSlide, resumeAutoSlide } = useCarouselOptions({\n\t\tautoSlideInterval,\n\t\thasAutoSlide,\n\t\tshouldPauseOnHover,\n\t});\n\n\t// FIXME - Prevent touch swipe on mobile using a cover element or allow swipe but it must update the state appriopriately\n\treturn (\n\t\t<HtmlElement\n\t\t\tdata-id=\"Carousel\"\n\t\t\tclassName={cnMerge(\"relative select-none\", classNames?.base)}\n\t\t\tonMouseEnter={pauseAutoSlide}\n\t\t\tonMouseLeave={resumeAutoSlide}\n\t\t>\n\t\t\t<div\n\t\t\t\tdata-id=\"Scroll Container\"\n\t\t\t\tclassName={cnMerge(\n\t\t\t\t\t\"flex size-full overflow-x-scroll [scrollbar-width:none] [&::-webkit-scrollbar]:hidden\",\n\t\t\t\t\tclassNames?.scrollContainer\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</HtmlElement>\n\t);\n}\n\nexport function CarouselButton(props: CarouselButtonsProps) {\n\tconst { classNames, icon, variant } = props;\n\n\tconst { goToNextSlide, goToPreviousSlide } = useCarouselStore((state) => state.actions);\n\n\treturn (\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\tclassName={cnMerge(\n\t\t\t\t\"z-30 flex h-full w-[15%] items-center\",\n\t\t\t\tvariant === \"prev\" ? \"justify-start\" : \"justify-end\",\n\t\t\t\tclassNames?.base\n\t\t\t)}\n\t\t\tonClick={variant === \"prev\" ? goToPreviousSlide : goToNextSlide}\n\t\t>\n\t\t\t<span className={cnMerge(\"transition-transform active:scale-[1.06]\", classNames?.iconContainer)}>\n\t\t\t\t{icon ?? (\n\t\t\t\t\t<ChevronLeftIcon\n\t\t\t\t\t\tclassName={cnMerge(variant === \"next\" && \"rotate-180\", classNames?.defaultIcon)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</span>\n\t\t</button>\n\t);\n}\n\nexport function CarouselControls(props: CarouselControlProps) {\n\tconst { classNames, icon } = props;\n\n\treturn (\n\t\t<div className={cnMerge(\"absolute inset-0 flex justify-between\", classNames?.base)}>\n\t\t\t{icon?.iconType ? (\n\t\t\t\t<>\n\t\t\t\t\t<CarouselButton\n\t\t\t\t\t\tvariant=\"prev\"\n\t\t\t\t\t\tclassNames={{\n\t\t\t\t\t\t\tdefaultIcon: classNames?.defaultIcon,\n\t\t\t\t\t\t\ticonContainer: cnMerge(\n\t\t\t\t\t\t\t\ticon.iconType === \"nextIcon\" && \"rotate-180\",\n\t\t\t\t\t\t\t\tclassNames?.iconContainer\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ticon={icon.icon}\n\t\t\t\t\t/>\n\t\t\t\t\t<CarouselButton\n\t\t\t\t\t\tvariant=\"next\"\n\t\t\t\t\t\tclassNames={{\n\t\t\t\t\t\t\tdefaultIcon: classNames?.defaultIcon,\n\t\t\t\t\t\t\ticonContainer: cnMerge(\n\t\t\t\t\t\t\t\ticon.iconType === \"prevIcon\" && \"rotate-180\",\n\t\t\t\t\t\t\t\tclassNames?.iconContainer\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ticon={icon.icon}\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t<CarouselButton\n\t\t\t\t\t\tvariant=\"prev\"\n\t\t\t\t\t\tclassNames={{\n\t\t\t\t\t\t\tdefaultIcon: classNames?.defaultIcon,\n\t\t\t\t\t\t\ticonContainer: classNames?.iconContainer,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ticon={icon?.prev}\n\t\t\t\t\t/>\n\t\t\t\t\t<CarouselButton\n\t\t\t\t\t\tvariant=\"next\"\n\t\t\t\t\t\tclassNames={{\n\t\t\t\t\t\t\tdefaultIcon: classNames?.defaultIcon,\n\t\t\t\t\t\t\ticonContainer: classNames?.iconContainer,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ticon={icon?.next}\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nexport function CarouselItemWrapper<TArrayItem>(props: CarouselWrapperProps<TArrayItem>) {\n\tconst { children, className, each, render } = props;\n\n\tconst [ItemList] = getElementList(\"base\");\n\tconst currentSlide = useCarouselStore((state) => state.currentSlide);\n\tconst images = useCarouselStore((state) => each ?? (state.images as TArrayItem[]));\n\n\treturn (\n\t\t<ul\n\t\t\tdata-id=\"Carousel Image Wrapper\"\n\t\t\tclassName={cnMerge(\n\t\t\t\t`flex w-full shrink-0 snap-center [transform:translate3d(var(--translate-distance),0,0)]\n\t\t\t\t[transition:transform_800ms_ease]`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tstyle={\n\t\t\t\t{\n\t\t\t\t\t\"--translate-distance\": `-${currentSlide * 100}%`,\n\t\t\t\t} satisfies MyCustomCss as MyCustomCss\n\t\t\t}\n\t\t>\n\t\t\t{typeof render === \"function\" ? (\n\t\t\t\t<ItemList each={images} render={render} />\n\t\t\t) : (\n\t\t\t\t<ItemList each={images}>{children}</ItemList>\n\t\t\t)}\n\t\t</ul>\n\t);\n}\n\nexport function CarouselItem({ children, className, ...restOfProps }: OtherCarouselProps) {\n\treturn (\n\t\t<li\n\t\t\tclassName={cnMerge(\"flex w-full shrink-0 snap-center justify-center\", className)}\n\t\t\t{...restOfProps}\n\t\t>\n\t\t\t{children}\n\t\t</li>\n\t);\n}\n\nexport function CarouselCaption<TElement extends React.ElementType = \"div\">(\n\tprops: PolymorphicProps<TElement, OtherCarouselProps>\n) {\n\tconst { as: HtmlElement = \"div\", children, className } = props;\n\n\treturn (\n\t\t<HtmlElement data-id=\"Carousel Caption\" className={cnMerge(\"absolute z-10\", className)}>\n\t\t\t{children}\n\t\t</HtmlElement>\n\t);\n}\n\nexport function CarouselIndicatorWrapper<TArrayItem>(props: CarouselWrapperProps<TArrayItem>) {\n\tconst { children, className, each, render } = props;\n\n\tconst images = useCarouselStore((state) => each ?? (state.images as TArrayItem[]));\n\tconst [IndicatorList] = getElementList(\"base\");\n\n\treturn (\n\t\t<ul\n\t\t\tdata-id=\"Carousel Indicators\"\n\t\t\tclassName={cnMerge(\n\t\t\t\t\"absolute bottom-10 z-[2] flex w-full items-center justify-center gap-6\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t>\n\t\t\t{typeof render === \"function\" ? (\n\t\t\t\t<IndicatorList each={images} render={render} />\n\t\t\t) : (\n\t\t\t\t<IndicatorList each={images}>{children}</IndicatorList>\n\t\t\t)}\n\t\t</ul>\n\t);\n}\n\nexport function CarouselIndicator(props: CarouselIndicatorProps) {\n\tconst { classNames, currentIndex } = props;\n\n\tconst {\n\t\tactions: { goToSlide },\n\t\tcurrentSlide,\n\t} = useCarouselStore((state) => state);\n\n\treturn (\n\t\t<li className={cnMerge(\"inline-flex\", classNames?.base)}>\n\t\t\t<button\n\t\t\t\tdata-active={currentIndex === currentSlide}\n\t\t\t\ttype=\"button\"\n\t\t\t\tonClick={() => goToSlide(currentIndex)}\n\t\t\t\tclassName={cnMerge(\n\t\t\t\t\t\"size-[6px] rounded-[50%]\",\n\t\t\t\t\tclassNames?.button,\n\t\t\t\t\tcurrentIndex === currentSlide && [\"w-14 rounded-lg\", classNames?.activeBtn]\n\t\t\t\t)}\n\t\t\t/>\n\t\t</li>\n\t);\n}\n\nexport { CarouselContextProvider as Root } from \"./carouselStoreContext\";\n\nexport const Content = CarouselContent;\n\nexport const Controls = CarouselControls;\n\nexport const Button = CarouselButton;\n\nexport const Item = CarouselItem;\n\nexport const ItemWrapper = CarouselItemWrapper;\n\nexport const Caption = CarouselCaption;\n\nexport const Indicator = CarouselIndicator;\n\nexport const IndicatorWrapper = CarouselIndicatorWrapper;\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/icons/ChevronLeftIcon.tsx","../../../../src/components/ui/carousel/carousel-store-context.tsx","../../../../src/components/ui/carousel/useCarouselOptions.ts","../../../../src/components/ui/carousel/carousel.tsx","../../../../src/components/ui/carousel/carousel-parts.ts"],"names":["React2"],"mappings":"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","file":"index.js","sourcesContent":["import * as React from \"react\";\n\nconst ChevronLeftIcon = (props: React.SVGProps<SVGSVGElement>) => (\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n\t\t<g fill=\"none\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\">\n\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\" />\n\t\t\t<path d=\"m14 16l-4-4l4-4\" />\n\t\t</g>\n\t</svg>\n);\n\nexport { ChevronLeftIcon };\n","import { useConstant } from \"@zayne-labs/toolkit-react\";\nimport { createZustandContext } from \"@zayne-labs/toolkit-react/zustand\";\nimport type { PrettyOmit } from \"@zayne-labs/toolkit-type-helpers\";\nimport { useEffect } from \"react\";\nimport { create } from \"zustand\";\nimport type { CarouselProviderProps, CarouselStore, ImagesType } from \"./types\";\n\nconst [Provider, useCarouselStoreContext] = createZustandContext<CarouselStore>({\n\thookName: \"useCarouselStore\",\n\tname: \"CarouselStoreContext\",\n\tproviderName: \"CarouselContextProvider\",\n});\n\n// CarouselStore Creation\nconst createCarouselStore = <TImages extends ImagesType>(\n\tstoreValues: PrettyOmit<CarouselProviderProps<TImages>, \"children\">\n) => {\n\tconst { images, onSlideBtnClick } = storeValues;\n\n\tconst useInitCarouselStore = create<CarouselStore<TImages>>()((set, get) => ({\n\t\tcurrentSlide: 0,\n\t\timages,\n\t\tmaxSlide: images.length - 1,\n\n\t\t/* eslint-disable perfectionist/sort-objects -- actions should be last */\n\t\tactions: {\n\t\t\t/* eslint-enable perfectionist/sort-objects -- actions should be last */\n\n\t\t\tgoToNextSlide: () => {\n\t\t\t\tconst { currentSlide, maxSlide } = get();\n\t\t\t\tconst { goToSlide } = get().actions;\n\n\t\t\t\tif (currentSlide === maxSlide) {\n\t\t\t\t\tgoToSlide(0);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tgoToSlide(currentSlide + 1);\n\t\t\t},\n\n\t\t\tgoToPreviousSlide: () => {\n\t\t\t\tconst { currentSlide, maxSlide } = get();\n\t\t\t\tconst { goToSlide } = get().actions;\n\n\t\t\t\tif (currentSlide === 0) {\n\t\t\t\t\tgoToSlide(maxSlide);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tgoToSlide(currentSlide - 1);\n\t\t\t},\n\n\t\t\tgoToSlide: (newValue) => {\n\t\t\t\tonSlideBtnClick?.();\n\n\t\t\t\tset({ currentSlide: newValue });\n\t\t\t},\n\t\t},\n\t}));\n\n\treturn useInitCarouselStore;\n};\n\nconst useCarousel = <TImages extends ImagesType>(\n\tprops: Omit<CarouselProviderProps<TImages>, \"children\">\n) => {\n\tconst { images, onSlideBtnClick } = props;\n\n\tconst useInitCarouselStore = useConstant(() => createCarouselStore({ images, onSlideBtnClick }));\n\n\t// == To set images again when a page is mounted, preventing stale images from previous page\n\tuseEffect(() => {\n\t\tuseInitCarouselStore.setState({ images });\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps -- useInitCarouselStore is stable\n\t}, [images]);\n\n\treturn useInitCarouselStore;\n};\n\n// == Provider Component\nfunction CarouselContextProvider<TImages extends ImagesType>(props: CarouselProviderProps<TImages>) {\n\tconst { children, images, onSlideBtnClick } = props;\n\n\tconst useInitCarouselStore = useCarousel({ images, onSlideBtnClick });\n\n\treturn <Provider value={useInitCarouselStore}>{children}</Provider>;\n}\n\n// eslint-disable-next-line react-refresh/only-export-components -- It's fine\nexport { useCarouselStoreContext, CarouselContextProvider };\n","import { useAnimationInterval, useCallbackRef } from \"@zayne-labs/toolkit-react\";\nimport { useState } from \"react\";\nimport { useCarouselStoreContext } from \"./carousel-store-context\";\n\ntype CarouselOptions = {\n\tautoSlideInterval?: number;\n\thasAutoSlide?: boolean;\n\tshouldPauseOnHover?: boolean;\n};\n\nconst useCarouselOptions = (options: CarouselOptions = {}) => {\n\tconst { autoSlideInterval = 5000, hasAutoSlide = false, shouldPauseOnHover = false } = options;\n\n\tconst { goToNextSlide } = useCarouselStoreContext((state) => state.actions);\n\n\tconst [isPaused, setIsPaused] = useState(false);\n\n\tconst shouldAutoSlide = hasAutoSlide && !isPaused;\n\n\tuseAnimationInterval({\n\t\tintervalDuration: shouldAutoSlide ? autoSlideInterval : null,\n\t\tonAnimation: goToNextSlide,\n\t});\n\n\tconst pauseAutoSlide = useCallbackRef(() => shouldPauseOnHover && setIsPaused(true));\n\n\tconst resumeAutoSlide = useCallbackRef(() => shouldPauseOnHover && setIsPaused(false));\n\n\treturn { pauseAutoSlide, resumeAutoSlide };\n};\n\nexport { useCarouselOptions };\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { getElementList } from \"@/components/common/for\";\nimport { ChevronLeftIcon } from \"@/components/icons\";\nimport { cnMerge } from \"@/lib/utils/cn\";\nimport type { MyCustomCss, PolymorphicProps } from \"@zayne-labs/toolkit-react/utils\";\nimport { useCarouselStoreContext } from \"./carousel-store-context\";\nimport type {\n\tCarouselButtonsProps,\n\tCarouselContentProps,\n\tCarouselControlProps,\n\tCarouselIndicatorProps,\n\tCarouselWrapperProps,\n\tOtherCarouselProps,\n} from \"./types\";\nimport { useCarouselOptions } from \"./useCarouselOptions\";\n\n// TODO - Add dragging and swiping support\nexport function CarouselContent<TElement extends React.ElementType = \"article\">(\n\tprops: PolymorphicProps<TElement, CarouselContentProps>\n) {\n\tconst {\n\t\tas: HtmlElement = \"article\",\n\t\tautoSlideInterval,\n\t\tchildren,\n\t\tclassNames,\n\t\thasAutoSlide,\n\t\tshouldPauseOnHover,\n\t} = props;\n\n\tconst { pauseAutoSlide, resumeAutoSlide } = useCarouselOptions({\n\t\tautoSlideInterval,\n\t\thasAutoSlide,\n\t\tshouldPauseOnHover,\n\t});\n\n\t// FIXME - Prevent touch swipe on mobile using a cover element or allow swipe but it must update the state appriopriately\n\treturn (\n\t\t<HtmlElement\n\t\t\tdata-id=\"Carousel\"\n\t\t\tclassName={cnMerge(\"relative select-none\", classNames?.base)}\n\t\t\tonMouseEnter={pauseAutoSlide}\n\t\t\tonMouseLeave={resumeAutoSlide}\n\t\t>\n\t\t\t<div\n\t\t\t\tdata-id=\"Scroll Container\"\n\t\t\t\tclassName={cnMerge(\n\t\t\t\t\t\"flex size-full overflow-x-scroll [scrollbar-width:none] [&::-webkit-scrollbar]:hidden\",\n\t\t\t\t\tclassNames?.scrollContainer\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</HtmlElement>\n\t);\n}\n\nexport function CarouselButton(props: CarouselButtonsProps) {\n\tconst { classNames, icon, variant } = props;\n\n\tconst { goToNextSlide, goToPreviousSlide } = useCarouselStoreContext((state) => state.actions);\n\n\treturn (\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\tclassName={cnMerge(\n\t\t\t\t\"z-30 flex h-full w-[15%] items-center\",\n\t\t\t\tvariant === \"prev\" ? \"justify-start\" : \"justify-end\",\n\t\t\t\tclassNames?.base\n\t\t\t)}\n\t\t\tonClick={variant === \"prev\" ? goToPreviousSlide : goToNextSlide}\n\t\t>\n\t\t\t<span className={cnMerge(\"transition-transform active:scale-[1.06]\", classNames?.iconContainer)}>\n\t\t\t\t{icon ?? (\n\t\t\t\t\t<ChevronLeftIcon\n\t\t\t\t\t\tclassName={cnMerge(variant === \"next\" && \"rotate-180\", classNames?.defaultIcon)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</span>\n\t\t</button>\n\t);\n}\n\nexport function CarouselControls(props: CarouselControlProps) {\n\tconst { classNames, icon } = props;\n\n\treturn (\n\t\t<div className={cnMerge(\"absolute inset-0 flex justify-between\", classNames?.base)}>\n\t\t\t{icon?.iconType ? (\n\t\t\t\t<>\n\t\t\t\t\t<CarouselButton\n\t\t\t\t\t\tvariant=\"prev\"\n\t\t\t\t\t\tclassNames={{\n\t\t\t\t\t\t\tdefaultIcon: classNames?.defaultIcon,\n\t\t\t\t\t\t\ticonContainer: cnMerge(\n\t\t\t\t\t\t\t\ticon.iconType === \"nextIcon\" && \"rotate-180\",\n\t\t\t\t\t\t\t\tclassNames?.iconContainer\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ticon={icon.icon}\n\t\t\t\t\t/>\n\t\t\t\t\t<CarouselButton\n\t\t\t\t\t\tvariant=\"next\"\n\t\t\t\t\t\tclassNames={{\n\t\t\t\t\t\t\tdefaultIcon: classNames?.defaultIcon,\n\t\t\t\t\t\t\ticonContainer: cnMerge(\n\t\t\t\t\t\t\t\ticon.iconType === \"prevIcon\" && \"rotate-180\",\n\t\t\t\t\t\t\t\tclassNames?.iconContainer\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ticon={icon.icon}\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t<CarouselButton\n\t\t\t\t\t\tvariant=\"prev\"\n\t\t\t\t\t\tclassNames={{\n\t\t\t\t\t\t\tdefaultIcon: classNames?.defaultIcon,\n\t\t\t\t\t\t\ticonContainer: classNames?.iconContainer,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ticon={icon?.prev}\n\t\t\t\t\t/>\n\t\t\t\t\t<CarouselButton\n\t\t\t\t\t\tvariant=\"next\"\n\t\t\t\t\t\tclassNames={{\n\t\t\t\t\t\t\tdefaultIcon: classNames?.defaultIcon,\n\t\t\t\t\t\t\ticonContainer: classNames?.iconContainer,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ticon={icon?.next}\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nexport function CarouselItemWrapper<TArrayItem>(props: CarouselWrapperProps<TArrayItem>) {\n\tconst { children, className, each, render } = props;\n\n\tconst [ItemList] = getElementList(\"base\");\n\tconst currentSlide = useCarouselStoreContext((state) => state.currentSlide);\n\tconst images = useCarouselStoreContext((state) => each ?? (state.images as TArrayItem[]));\n\n\treturn (\n\t\t<ul\n\t\t\tdata-id=\"Carousel Image Wrapper\"\n\t\t\tclassName={cnMerge(\n\t\t\t\t`flex w-full shrink-0 snap-center [transform:translate3d(var(--translate-distance),0,0)]\n\t\t\t\t[transition:transform_800ms_ease]`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tstyle={\n\t\t\t\t{\n\t\t\t\t\t\"--translate-distance\": `-${currentSlide * 100}%`,\n\t\t\t\t} satisfies MyCustomCss as MyCustomCss\n\t\t\t}\n\t\t>\n\t\t\t{typeof render === \"function\" ? (\n\t\t\t\t<ItemList each={images} render={render} />\n\t\t\t) : (\n\t\t\t\t<ItemList each={images}>{children}</ItemList>\n\t\t\t)}\n\t\t</ul>\n\t);\n}\n\nexport function CarouselItem({ children, className, ...restOfProps }: OtherCarouselProps) {\n\treturn (\n\t\t<li\n\t\t\tclassName={cnMerge(\"flex w-full shrink-0 snap-center justify-center\", className)}\n\t\t\t{...restOfProps}\n\t\t>\n\t\t\t{children}\n\t\t</li>\n\t);\n}\n\nexport function CarouselCaption<TElement extends React.ElementType = \"div\">(\n\tprops: PolymorphicProps<TElement, OtherCarouselProps>\n) {\n\tconst { as: HtmlElement = \"div\", children, className } = props;\n\n\treturn (\n\t\t<HtmlElement data-id=\"Carousel Caption\" className={cnMerge(\"absolute z-10\", className)}>\n\t\t\t{children}\n\t\t</HtmlElement>\n\t);\n}\n\nexport function CarouselIndicatorWrapper<TArrayItem>(props: CarouselWrapperProps<TArrayItem>) {\n\tconst { children, className, each, render } = props;\n\n\tconst images = useCarouselStoreContext((state) => each ?? (state.images as TArrayItem[]));\n\tconst [IndicatorList] = getElementList(\"base\");\n\n\treturn (\n\t\t<ul\n\t\t\tdata-id=\"Carousel Indicators\"\n\t\t\tclassName={cnMerge(\n\t\t\t\t\"absolute bottom-10 z-[2] flex w-full items-center justify-center gap-6\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t>\n\t\t\t{typeof render === \"function\" ? (\n\t\t\t\t<IndicatorList each={images} render={render} />\n\t\t\t) : (\n\t\t\t\t<IndicatorList each={images}>{children}</IndicatorList>\n\t\t\t)}\n\t\t</ul>\n\t);\n}\n\nexport function CarouselIndicator(props: CarouselIndicatorProps) {\n\tconst { classNames, currentIndex } = props;\n\n\tconst {\n\t\tactions: { goToSlide },\n\t\tcurrentSlide,\n\t} = useCarouselStoreContext((state) => state);\n\n\treturn (\n\t\t<li className={cnMerge(\"inline-flex\", classNames?.base)}>\n\t\t\t<button\n\t\t\t\tdata-active={currentIndex === currentSlide}\n\t\t\t\ttype=\"button\"\n\t\t\t\tonClick={() => goToSlide(currentIndex)}\n\t\t\t\tclassName={cnMerge(\n\t\t\t\t\t\"size-[6px] rounded-[50%]\",\n\t\t\t\t\tclassNames?.button,\n\t\t\t\t\tcurrentIndex === currentSlide && [\"w-14 rounded-lg\", classNames?.activeBtn]\n\t\t\t\t)}\n\t\t\t/>\n\t\t</li>\n\t);\n}\n","export { CarouselContextProvider as Root } from \"./carousel-store-context\";\nexport {\n\tCarouselContent as Content,\n\tCarouselControls as Controls,\n\tCarouselButton as Button,\n\tCarouselItem as Item,\n\tCarouselItemWrapper as ItemWrapper,\n\tCarouselCaption as Caption,\n\tCarouselIndicator as Indicator,\n\tCarouselIndicatorWrapper as IndicatorWrapper,\n} from \"./carousel\";\n"]}
|
|
@@ -1,20 +1,301 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
1
2
|
import { RefCallback } from 'react';
|
|
3
|
+
import { InferProps } from '@zayne-labs/toolkit-react/utils';
|
|
2
4
|
|
|
3
|
-
type DragScrollProps = {
|
|
5
|
+
type DragScrollProps<TElement extends HTMLElement> = {
|
|
4
6
|
classNames?: {
|
|
5
7
|
base?: string;
|
|
6
8
|
item?: string;
|
|
7
9
|
};
|
|
10
|
+
extraItemProps?: InferProps<HTMLElement>;
|
|
11
|
+
extraRootProps?: InferProps<TElement>;
|
|
8
12
|
orientation?: "both" | "horizontal" | "vertical";
|
|
9
13
|
usage?: "allScreens" | "desktopOnly" | "mobileAndTabletOnly";
|
|
10
14
|
};
|
|
11
|
-
declare const useDragScroll: <TElement extends HTMLElement>(props?: DragScrollProps) => {
|
|
12
|
-
getItemProps: () => {
|
|
15
|
+
declare const useDragScroll: <TElement extends HTMLElement>(props?: DragScrollProps<TElement>) => {
|
|
16
|
+
getItemProps: (itemProps?: DragScrollProps<TElement>["extraItemProps"]) => {
|
|
13
17
|
className: string;
|
|
14
18
|
"data-part": string;
|
|
15
19
|
"data-scope": string;
|
|
20
|
+
defaultChecked?: boolean | undefined;
|
|
21
|
+
defaultValue?: string | number | readonly string[] | undefined;
|
|
22
|
+
suppressContentEditableWarning?: boolean | undefined;
|
|
23
|
+
suppressHydrationWarning?: boolean | undefined;
|
|
24
|
+
accessKey?: string | undefined;
|
|
25
|
+
autoCapitalize?: "off" | "none" | "on" | "sentences" | "words" | "characters" | undefined | (string & {});
|
|
26
|
+
autoFocus?: boolean | undefined;
|
|
27
|
+
contentEditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
|
|
28
|
+
contextMenu?: string | undefined;
|
|
29
|
+
dir?: string | undefined;
|
|
30
|
+
draggable?: (boolean | "true" | "false") | undefined;
|
|
31
|
+
enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined;
|
|
32
|
+
hidden?: boolean | undefined;
|
|
33
|
+
id?: string | undefined;
|
|
34
|
+
lang?: string | undefined;
|
|
35
|
+
nonce?: string | undefined;
|
|
36
|
+
slot?: string | undefined;
|
|
37
|
+
spellCheck?: (boolean | "true" | "false") | undefined;
|
|
38
|
+
style?: react.CSSProperties | undefined;
|
|
39
|
+
tabIndex?: number | undefined;
|
|
40
|
+
title?: string | undefined;
|
|
41
|
+
translate?: "yes" | "no" | undefined;
|
|
42
|
+
radioGroup?: string | undefined;
|
|
43
|
+
role?: react.AriaRole | undefined;
|
|
44
|
+
about?: string | undefined;
|
|
45
|
+
content?: string | undefined;
|
|
46
|
+
datatype?: string | undefined;
|
|
47
|
+
inlist?: any;
|
|
48
|
+
prefix?: string | undefined;
|
|
49
|
+
property?: string | undefined;
|
|
50
|
+
rel?: string | undefined;
|
|
51
|
+
resource?: string | undefined;
|
|
52
|
+
rev?: string | undefined;
|
|
53
|
+
typeof?: string | undefined;
|
|
54
|
+
vocab?: string | undefined;
|
|
55
|
+
autoCorrect?: string | undefined;
|
|
56
|
+
autoSave?: string | undefined;
|
|
57
|
+
color?: string | undefined;
|
|
58
|
+
itemProp?: string | undefined;
|
|
59
|
+
itemScope?: boolean | undefined;
|
|
60
|
+
itemType?: string | undefined;
|
|
61
|
+
itemID?: string | undefined;
|
|
62
|
+
itemRef?: string | undefined;
|
|
63
|
+
results?: number | undefined;
|
|
64
|
+
security?: string | undefined;
|
|
65
|
+
unselectable?: "on" | "off" | undefined;
|
|
66
|
+
popover?: "" | "auto" | "manual" | undefined;
|
|
67
|
+
popoverTargetAction?: "toggle" | "show" | "hide" | undefined;
|
|
68
|
+
popoverTarget?: string | undefined;
|
|
69
|
+
inert?: boolean | undefined;
|
|
70
|
+
inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined;
|
|
71
|
+
is?: string | undefined;
|
|
72
|
+
"aria-activedescendant"?: string | undefined;
|
|
73
|
+
"aria-atomic"?: (boolean | "true" | "false") | undefined;
|
|
74
|
+
"aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined;
|
|
75
|
+
"aria-braillelabel"?: string | undefined;
|
|
76
|
+
"aria-brailleroledescription"?: string | undefined;
|
|
77
|
+
"aria-busy"?: (boolean | "true" | "false") | undefined;
|
|
78
|
+
"aria-checked"?: boolean | "false" | "mixed" | "true" | undefined;
|
|
79
|
+
"aria-colcount"?: number | undefined;
|
|
80
|
+
"aria-colindex"?: number | undefined;
|
|
81
|
+
"aria-colindextext"?: string | undefined;
|
|
82
|
+
"aria-colspan"?: number | undefined;
|
|
83
|
+
"aria-controls"?: string | undefined;
|
|
84
|
+
"aria-current"?: boolean | "false" | "true" | "page" | "step" | "location" | "date" | "time" | undefined;
|
|
85
|
+
"aria-describedby"?: string | undefined;
|
|
86
|
+
"aria-description"?: string | undefined;
|
|
87
|
+
"aria-details"?: string | undefined;
|
|
88
|
+
"aria-disabled"?: (boolean | "true" | "false") | undefined;
|
|
89
|
+
"aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined;
|
|
90
|
+
"aria-errormessage"?: string | undefined;
|
|
91
|
+
"aria-expanded"?: (boolean | "true" | "false") | undefined;
|
|
92
|
+
"aria-flowto"?: string | undefined;
|
|
93
|
+
"aria-grabbed"?: (boolean | "true" | "false") | undefined;
|
|
94
|
+
"aria-haspopup"?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined;
|
|
95
|
+
"aria-hidden"?: (boolean | "true" | "false") | undefined;
|
|
96
|
+
"aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling" | undefined;
|
|
97
|
+
"aria-keyshortcuts"?: string | undefined;
|
|
98
|
+
"aria-label"?: string | undefined;
|
|
99
|
+
"aria-labelledby"?: string | undefined;
|
|
100
|
+
"aria-level"?: number | undefined;
|
|
101
|
+
"aria-live"?: "off" | "assertive" | "polite" | undefined;
|
|
102
|
+
"aria-modal"?: (boolean | "true" | "false") | undefined;
|
|
103
|
+
"aria-multiline"?: (boolean | "true" | "false") | undefined;
|
|
104
|
+
"aria-multiselectable"?: (boolean | "true" | "false") | undefined;
|
|
105
|
+
"aria-orientation"?: "horizontal" | "vertical" | undefined;
|
|
106
|
+
"aria-owns"?: string | undefined;
|
|
107
|
+
"aria-placeholder"?: string | undefined;
|
|
108
|
+
"aria-posinset"?: number | undefined;
|
|
109
|
+
"aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined;
|
|
110
|
+
"aria-readonly"?: (boolean | "true" | "false") | undefined;
|
|
111
|
+
"aria-relevant"?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined;
|
|
112
|
+
"aria-required"?: (boolean | "true" | "false") | undefined;
|
|
113
|
+
"aria-roledescription"?: string | undefined;
|
|
114
|
+
"aria-rowcount"?: number | undefined;
|
|
115
|
+
"aria-rowindex"?: number | undefined;
|
|
116
|
+
"aria-rowindextext"?: string | undefined;
|
|
117
|
+
"aria-rowspan"?: number | undefined;
|
|
118
|
+
"aria-selected"?: (boolean | "true" | "false") | undefined;
|
|
119
|
+
"aria-setsize"?: number | undefined;
|
|
120
|
+
"aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined;
|
|
121
|
+
"aria-valuemax"?: number | undefined;
|
|
122
|
+
"aria-valuemin"?: number | undefined;
|
|
123
|
+
"aria-valuenow"?: number | undefined;
|
|
124
|
+
"aria-valuetext"?: string | undefined;
|
|
125
|
+
children?: react.ReactNode | undefined;
|
|
126
|
+
dangerouslySetInnerHTML?: {
|
|
127
|
+
__html: string | TrustedHTML;
|
|
128
|
+
} | undefined;
|
|
129
|
+
onCopy?: react.ClipboardEventHandler<HTMLElement> | undefined;
|
|
130
|
+
onCopyCapture?: react.ClipboardEventHandler<HTMLElement> | undefined;
|
|
131
|
+
onCut?: react.ClipboardEventHandler<HTMLElement> | undefined;
|
|
132
|
+
onCutCapture?: react.ClipboardEventHandler<HTMLElement> | undefined;
|
|
133
|
+
onPaste?: react.ClipboardEventHandler<HTMLElement> | undefined;
|
|
134
|
+
onPasteCapture?: react.ClipboardEventHandler<HTMLElement> | undefined;
|
|
135
|
+
onCompositionEnd?: react.CompositionEventHandler<HTMLElement> | undefined;
|
|
136
|
+
onCompositionEndCapture?: react.CompositionEventHandler<HTMLElement> | undefined;
|
|
137
|
+
onCompositionStart?: react.CompositionEventHandler<HTMLElement> | undefined;
|
|
138
|
+
onCompositionStartCapture?: react.CompositionEventHandler<HTMLElement> | undefined;
|
|
139
|
+
onCompositionUpdate?: react.CompositionEventHandler<HTMLElement> | undefined;
|
|
140
|
+
onCompositionUpdateCapture?: react.CompositionEventHandler<HTMLElement> | undefined;
|
|
141
|
+
onFocus?: react.FocusEventHandler<HTMLElement> | undefined;
|
|
142
|
+
onFocusCapture?: react.FocusEventHandler<HTMLElement> | undefined;
|
|
143
|
+
onBlur?: react.FocusEventHandler<HTMLElement> | undefined;
|
|
144
|
+
onBlurCapture?: react.FocusEventHandler<HTMLElement> | undefined;
|
|
145
|
+
onChange?: react.FormEventHandler<HTMLElement> | undefined;
|
|
146
|
+
onChangeCapture?: react.FormEventHandler<HTMLElement> | undefined;
|
|
147
|
+
onBeforeInput?: react.FormEventHandler<HTMLElement> | undefined;
|
|
148
|
+
onBeforeInputCapture?: react.FormEventHandler<HTMLElement> | undefined;
|
|
149
|
+
onInput?: react.FormEventHandler<HTMLElement> | undefined;
|
|
150
|
+
onInputCapture?: react.FormEventHandler<HTMLElement> | undefined;
|
|
151
|
+
onReset?: react.FormEventHandler<HTMLElement> | undefined;
|
|
152
|
+
onResetCapture?: react.FormEventHandler<HTMLElement> | undefined;
|
|
153
|
+
onSubmit?: react.FormEventHandler<HTMLElement> | undefined;
|
|
154
|
+
onSubmitCapture?: react.FormEventHandler<HTMLElement> | undefined;
|
|
155
|
+
onInvalid?: react.FormEventHandler<HTMLElement> | undefined;
|
|
156
|
+
onInvalidCapture?: react.FormEventHandler<HTMLElement> | undefined;
|
|
157
|
+
onLoad?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
158
|
+
onLoadCapture?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
159
|
+
onError?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
160
|
+
onErrorCapture?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
161
|
+
onKeyDown?: react.KeyboardEventHandler<HTMLElement> | undefined;
|
|
162
|
+
onKeyDownCapture?: react.KeyboardEventHandler<HTMLElement> | undefined;
|
|
163
|
+
onKeyPress?: react.KeyboardEventHandler<HTMLElement> | undefined;
|
|
164
|
+
onKeyPressCapture?: react.KeyboardEventHandler<HTMLElement> | undefined;
|
|
165
|
+
onKeyUp?: react.KeyboardEventHandler<HTMLElement> | undefined;
|
|
166
|
+
onKeyUpCapture?: react.KeyboardEventHandler<HTMLElement> | undefined;
|
|
167
|
+
onAbort?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
168
|
+
onAbortCapture?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
169
|
+
onCanPlay?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
170
|
+
onCanPlayCapture?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
171
|
+
onCanPlayThrough?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
172
|
+
onCanPlayThroughCapture?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
173
|
+
onDurationChange?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
174
|
+
onDurationChangeCapture?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
175
|
+
onEmptied?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
176
|
+
onEmptiedCapture?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
177
|
+
onEncrypted?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
178
|
+
onEncryptedCapture?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
179
|
+
onEnded?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
180
|
+
onEndedCapture?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
181
|
+
onLoadedData?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
182
|
+
onLoadedDataCapture?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
183
|
+
onLoadedMetadata?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
184
|
+
onLoadedMetadataCapture?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
185
|
+
onLoadStart?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
186
|
+
onLoadStartCapture?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
187
|
+
onPause?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
188
|
+
onPauseCapture?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
189
|
+
onPlay?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
190
|
+
onPlayCapture?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
191
|
+
onPlaying?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
192
|
+
onPlayingCapture?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
193
|
+
onProgress?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
194
|
+
onProgressCapture?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
195
|
+
onRateChange?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
196
|
+
onRateChangeCapture?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
197
|
+
onResize?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
198
|
+
onResizeCapture?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
199
|
+
onSeeked?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
200
|
+
onSeekedCapture?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
201
|
+
onSeeking?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
202
|
+
onSeekingCapture?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
203
|
+
onStalled?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
204
|
+
onStalledCapture?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
205
|
+
onSuspend?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
206
|
+
onSuspendCapture?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
207
|
+
onTimeUpdate?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
208
|
+
onTimeUpdateCapture?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
209
|
+
onVolumeChange?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
210
|
+
onVolumeChangeCapture?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
211
|
+
onWaiting?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
212
|
+
onWaitingCapture?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
213
|
+
onAuxClick?: react.MouseEventHandler<HTMLElement> | undefined;
|
|
214
|
+
onAuxClickCapture?: react.MouseEventHandler<HTMLElement> | undefined;
|
|
215
|
+
onClick?: react.MouseEventHandler<HTMLElement> | undefined;
|
|
216
|
+
onClickCapture?: react.MouseEventHandler<HTMLElement> | undefined;
|
|
217
|
+
onContextMenu?: react.MouseEventHandler<HTMLElement> | undefined;
|
|
218
|
+
onContextMenuCapture?: react.MouseEventHandler<HTMLElement> | undefined;
|
|
219
|
+
onDoubleClick?: react.MouseEventHandler<HTMLElement> | undefined;
|
|
220
|
+
onDoubleClickCapture?: react.MouseEventHandler<HTMLElement> | undefined;
|
|
221
|
+
onDrag?: react.DragEventHandler<HTMLElement> | undefined;
|
|
222
|
+
onDragCapture?: react.DragEventHandler<HTMLElement> | undefined;
|
|
223
|
+
onDragEnd?: react.DragEventHandler<HTMLElement> | undefined;
|
|
224
|
+
onDragEndCapture?: react.DragEventHandler<HTMLElement> | undefined;
|
|
225
|
+
onDragEnter?: react.DragEventHandler<HTMLElement> | undefined;
|
|
226
|
+
onDragEnterCapture?: react.DragEventHandler<HTMLElement> | undefined;
|
|
227
|
+
onDragExit?: react.DragEventHandler<HTMLElement> | undefined;
|
|
228
|
+
onDragExitCapture?: react.DragEventHandler<HTMLElement> | undefined;
|
|
229
|
+
onDragLeave?: react.DragEventHandler<HTMLElement> | undefined;
|
|
230
|
+
onDragLeaveCapture?: react.DragEventHandler<HTMLElement> | undefined;
|
|
231
|
+
onDragOver?: react.DragEventHandler<HTMLElement> | undefined;
|
|
232
|
+
onDragOverCapture?: react.DragEventHandler<HTMLElement> | undefined;
|
|
233
|
+
onDragStart?: react.DragEventHandler<HTMLElement> | undefined;
|
|
234
|
+
onDragStartCapture?: react.DragEventHandler<HTMLElement> | undefined;
|
|
235
|
+
onDrop?: react.DragEventHandler<HTMLElement> | undefined;
|
|
236
|
+
onDropCapture?: react.DragEventHandler<HTMLElement> | undefined;
|
|
237
|
+
onMouseDown?: react.MouseEventHandler<HTMLElement> | undefined;
|
|
238
|
+
onMouseDownCapture?: react.MouseEventHandler<HTMLElement> | undefined;
|
|
239
|
+
onMouseEnter?: react.MouseEventHandler<HTMLElement> | undefined;
|
|
240
|
+
onMouseLeave?: react.MouseEventHandler<HTMLElement> | undefined;
|
|
241
|
+
onMouseMove?: react.MouseEventHandler<HTMLElement> | undefined;
|
|
242
|
+
onMouseMoveCapture?: react.MouseEventHandler<HTMLElement> | undefined;
|
|
243
|
+
onMouseOut?: react.MouseEventHandler<HTMLElement> | undefined;
|
|
244
|
+
onMouseOutCapture?: react.MouseEventHandler<HTMLElement> | undefined;
|
|
245
|
+
onMouseOver?: react.MouseEventHandler<HTMLElement> | undefined;
|
|
246
|
+
onMouseOverCapture?: react.MouseEventHandler<HTMLElement> | undefined;
|
|
247
|
+
onMouseUp?: react.MouseEventHandler<HTMLElement> | undefined;
|
|
248
|
+
onMouseUpCapture?: react.MouseEventHandler<HTMLElement> | undefined;
|
|
249
|
+
onSelect?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
250
|
+
onSelectCapture?: react.ReactEventHandler<HTMLElement> | undefined;
|
|
251
|
+
onTouchCancel?: react.TouchEventHandler<HTMLElement> | undefined;
|
|
252
|
+
onTouchCancelCapture?: react.TouchEventHandler<HTMLElement> | undefined;
|
|
253
|
+
onTouchEnd?: react.TouchEventHandler<HTMLElement> | undefined;
|
|
254
|
+
onTouchEndCapture?: react.TouchEventHandler<HTMLElement> | undefined;
|
|
255
|
+
onTouchMove?: react.TouchEventHandler<HTMLElement> | undefined;
|
|
256
|
+
onTouchMoveCapture?: react.TouchEventHandler<HTMLElement> | undefined;
|
|
257
|
+
onTouchStart?: react.TouchEventHandler<HTMLElement> | undefined;
|
|
258
|
+
onTouchStartCapture?: react.TouchEventHandler<HTMLElement> | undefined;
|
|
259
|
+
onPointerDown?: react.PointerEventHandler<HTMLElement> | undefined;
|
|
260
|
+
onPointerDownCapture?: react.PointerEventHandler<HTMLElement> | undefined;
|
|
261
|
+
onPointerMove?: react.PointerEventHandler<HTMLElement> | undefined;
|
|
262
|
+
onPointerMoveCapture?: react.PointerEventHandler<HTMLElement> | undefined;
|
|
263
|
+
onPointerUp?: react.PointerEventHandler<HTMLElement> | undefined;
|
|
264
|
+
onPointerUpCapture?: react.PointerEventHandler<HTMLElement> | undefined;
|
|
265
|
+
onPointerCancel?: react.PointerEventHandler<HTMLElement> | undefined;
|
|
266
|
+
onPointerCancelCapture?: react.PointerEventHandler<HTMLElement> | undefined;
|
|
267
|
+
onPointerEnter?: react.PointerEventHandler<HTMLElement> | undefined;
|
|
268
|
+
onPointerLeave?: react.PointerEventHandler<HTMLElement> | undefined;
|
|
269
|
+
onPointerOver?: react.PointerEventHandler<HTMLElement> | undefined;
|
|
270
|
+
onPointerOverCapture?: react.PointerEventHandler<HTMLElement> | undefined;
|
|
271
|
+
onPointerOut?: react.PointerEventHandler<HTMLElement> | undefined;
|
|
272
|
+
onPointerOutCapture?: react.PointerEventHandler<HTMLElement> | undefined;
|
|
273
|
+
onGotPointerCapture?: react.PointerEventHandler<HTMLElement> | undefined;
|
|
274
|
+
onGotPointerCaptureCapture?: react.PointerEventHandler<HTMLElement> | undefined;
|
|
275
|
+
onLostPointerCapture?: react.PointerEventHandler<HTMLElement> | undefined;
|
|
276
|
+
onLostPointerCaptureCapture?: react.PointerEventHandler<HTMLElement> | undefined;
|
|
277
|
+
onScroll?: react.UIEventHandler<HTMLElement> | undefined;
|
|
278
|
+
onScrollCapture?: react.UIEventHandler<HTMLElement> | undefined;
|
|
279
|
+
onWheel?: react.WheelEventHandler<HTMLElement> | undefined;
|
|
280
|
+
onWheelCapture?: react.WheelEventHandler<HTMLElement> | undefined;
|
|
281
|
+
onAnimationStart?: react.AnimationEventHandler<HTMLElement> | undefined;
|
|
282
|
+
onAnimationStartCapture?: react.AnimationEventHandler<HTMLElement> | undefined;
|
|
283
|
+
onAnimationEnd?: react.AnimationEventHandler<HTMLElement> | undefined;
|
|
284
|
+
onAnimationEndCapture?: react.AnimationEventHandler<HTMLElement> | undefined;
|
|
285
|
+
onAnimationIteration?: react.AnimationEventHandler<HTMLElement> | undefined;
|
|
286
|
+
onAnimationIterationCapture?: react.AnimationEventHandler<HTMLElement> | undefined;
|
|
287
|
+
onToggle?: react.ToggleEventHandler<HTMLElement> | undefined;
|
|
288
|
+
onBeforeToggle?: react.ToggleEventHandler<HTMLElement> | undefined;
|
|
289
|
+
onTransitionCancel?: react.TransitionEventHandler<HTMLElement> | undefined;
|
|
290
|
+
onTransitionCancelCapture?: react.TransitionEventHandler<HTMLElement> | undefined;
|
|
291
|
+
onTransitionEnd?: react.TransitionEventHandler<HTMLElement> | undefined;
|
|
292
|
+
onTransitionEndCapture?: react.TransitionEventHandler<HTMLElement> | undefined;
|
|
293
|
+
onTransitionRun?: react.TransitionEventHandler<HTMLElement> | undefined;
|
|
294
|
+
onTransitionRunCapture?: react.TransitionEventHandler<HTMLElement> | undefined;
|
|
295
|
+
onTransitionStart?: react.TransitionEventHandler<HTMLElement> | undefined;
|
|
296
|
+
onTransitionStartCapture?: react.TransitionEventHandler<HTMLElement> | undefined;
|
|
16
297
|
};
|
|
17
|
-
getRootProps: () => {
|
|
298
|
+
getRootProps: (rootProps?: DragScrollProps<TElement>["extraRootProps"]) => InferProps<TElement> & {
|
|
18
299
|
className: string;
|
|
19
300
|
"data-part": string;
|
|
20
301
|
"data-scope": string;
|