@seakoi/native-ui 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/CHANGELOG.md +559 -265
  2. package/dist/commonjs/components/base/carousel/carousel-item.js +21 -0
  3. package/dist/commonjs/components/base/carousel/carousel.js +489 -0
  4. package/dist/commonjs/components/base/carousel/index.js +36 -0
  5. package/dist/commonjs/components/base/carousel/style/index.js +47 -0
  6. package/dist/commonjs/components/base/carousel/types.js +5 -0
  7. package/dist/commonjs/components/base/carousel/utils.js +27 -0
  8. package/dist/commonjs/components/base/index.js +34 -23
  9. package/dist/module/components/base/carousel/carousel-item.js +16 -0
  10. package/dist/module/components/base/carousel/carousel.js +484 -0
  11. package/dist/module/components/base/carousel/index.js +9 -0
  12. package/dist/module/components/base/carousel/style/index.js +43 -0
  13. package/dist/module/components/base/carousel/types.js +3 -0
  14. package/dist/module/components/base/carousel/utils.js +20 -0
  15. package/dist/module/components/base/index.js +1 -0
  16. package/dist/typescript/commonjs/src/components/base/carousel/carousel-item.d.ts +4 -0
  17. package/dist/typescript/commonjs/src/components/base/carousel/carousel-item.d.ts.map +1 -0
  18. package/dist/typescript/commonjs/src/components/base/carousel/carousel.d.ts +7 -0
  19. package/dist/typescript/commonjs/src/components/base/carousel/carousel.d.ts.map +1 -0
  20. package/dist/typescript/commonjs/src/components/base/carousel/index.d.ts +7 -0
  21. package/dist/typescript/commonjs/src/components/base/carousel/index.d.ts.map +1 -0
  22. package/dist/typescript/commonjs/src/components/base/carousel/style/index.d.ts +41 -0
  23. package/dist/typescript/commonjs/src/components/base/carousel/style/index.d.ts.map +1 -0
  24. package/dist/typescript/commonjs/src/components/base/carousel/types.d.ts +113 -0
  25. package/dist/typescript/commonjs/src/components/base/carousel/types.d.ts.map +1 -0
  26. package/dist/typescript/commonjs/src/components/base/carousel/utils.d.ts +6 -0
  27. package/dist/typescript/commonjs/src/components/base/carousel/utils.d.ts.map +1 -0
  28. package/dist/typescript/commonjs/src/components/base/index.d.ts +1 -0
  29. package/dist/typescript/commonjs/src/components/base/index.d.ts.map +1 -1
  30. package/dist/typescript/module/src/components/base/carousel/carousel-item.d.ts +4 -0
  31. package/dist/typescript/module/src/components/base/carousel/carousel-item.d.ts.map +1 -0
  32. package/dist/typescript/module/src/components/base/carousel/carousel.d.ts +7 -0
  33. package/dist/typescript/module/src/components/base/carousel/carousel.d.ts.map +1 -0
  34. package/dist/typescript/module/src/components/base/carousel/index.d.ts +7 -0
  35. package/dist/typescript/module/src/components/base/carousel/index.d.ts.map +1 -0
  36. package/dist/typescript/module/src/components/base/carousel/style/index.d.ts +41 -0
  37. package/dist/typescript/module/src/components/base/carousel/style/index.d.ts.map +1 -0
  38. package/dist/typescript/module/src/components/base/carousel/types.d.ts +113 -0
  39. package/dist/typescript/module/src/components/base/carousel/types.d.ts.map +1 -0
  40. package/dist/typescript/module/src/components/base/carousel/utils.d.ts +6 -0
  41. package/dist/typescript/module/src/components/base/carousel/utils.d.ts.map +1 -0
  42. package/dist/typescript/module/src/components/base/index.d.ts +1 -0
  43. package/dist/typescript/module/src/components/base/index.d.ts.map +1 -1
  44. package/package.json +3 -2
  45. package/src/components/base/carousel/carousel-item.tsx +11 -0
  46. package/src/components/base/carousel/carousel.tsx +691 -0
  47. package/src/components/base/carousel/index.ts +8 -0
  48. package/src/components/base/carousel/style/index.ts +42 -0
  49. package/src/components/base/carousel/types.ts +134 -0
  50. package/src/components/base/carousel/utils.ts +26 -0
  51. package/src/components/base/index.ts +1 -0
@@ -0,0 +1,113 @@
1
+ import type { ReactElement, ReactNode } from 'react';
2
+ import type { StyleProp, ViewStyle } from 'react-native';
3
+ /** Carousel 组件暴露的实例方法 */
4
+ export interface CarouselRef {
5
+ /** 滚动到指定索引 */
6
+ swipeTo: (index: number) => void;
7
+ /** 滚动到下一页 */
8
+ swipeNext: () => void;
9
+ /** 滚动到上一页 */
10
+ swipePrev: () => void;
11
+ }
12
+ /** Carousel 组件属性 */
13
+ export interface CarouselProps {
14
+ /**
15
+ * 初始展示的索引
16
+ * @default 0
17
+ */
18
+ defaultIndex?: number;
19
+ /**
20
+ * 是否允许手势滑动
21
+ * @default true
22
+ */
23
+ allowTouchMove?: boolean;
24
+ /**
25
+ * 是否自动轮播
26
+ * - `false`: 不自动轮播
27
+ * - `true`: 正向自动轮播
28
+ * - `'reverse'`: 反向自动轮播
29
+ * @default false
30
+ */
31
+ autoplay?: boolean | 'reverse';
32
+ /**
33
+ * 自动轮播间隔,单位:毫秒
34
+ * @default 3000
35
+ */
36
+ autoplayInterval?: number;
37
+ /**
38
+ * 是否开启循环播放
39
+ * @default false
40
+ */
41
+ loop?: boolean;
42
+ /**
43
+ * 滑动方向
44
+ * @default 'horizontal'
45
+ */
46
+ direction?: 'horizontal' | 'vertical';
47
+ /** 索引变化回调 */
48
+ onIndexChange?: (index: number) => void;
49
+ /** 指示器配置 */
50
+ indicatorProps?: {
51
+ /** 指示器激活状态颜色 */
52
+ color?: string;
53
+ /** 指示器容器样式 */
54
+ style?: StyleProp<ViewStyle>;
55
+ };
56
+ /**
57
+ * 自定义指示器
58
+ * - `false`: 不展示指示器
59
+ * - 函数:接收总数与当前索引,返回自定义节点
60
+ */
61
+ indicator?: false | ((total: number, current: number) => ReactNode);
62
+ /**
63
+ * 单个滑块所占轨道宽(高)度百分比
64
+ * 取值范围 0 ~ 100
65
+ * @default 100
66
+ */
67
+ slideSize?: number;
68
+ /**
69
+ * 轨道两侧预留的偏移量百分比
70
+ * 用于在两端留出空白
71
+ * @default 0
72
+ */
73
+ trackOffset?: number;
74
+ /**
75
+ * 是否在边界处卡住
76
+ * 开启后滑动到边缘不会完全滑出可视区域
77
+ * @default true
78
+ */
79
+ stuckAtBoundary?: boolean;
80
+ /**
81
+ * 是否开启橡皮筋效果
82
+ * 关闭后到达边界时不再有超出回弹
83
+ * @default true
84
+ */
85
+ rubberband?: boolean;
86
+ /**
87
+ * 虚拟渲染时前后额外渲染的滑块个数
88
+ * 仅在使用 render prop 且传入 total 时生效
89
+ * @default 2
90
+ */
91
+ virtualOverscan?: number;
92
+ /**
93
+ * 总滑块数量
94
+ * 使用 render prop children 时需要手动传入
95
+ */
96
+ total?: number;
97
+ /**
98
+ * 滑块内容
99
+ * - 直接传入 CarouselItem 列表
100
+ * - 或者传入 render prop,根据索引返回节点
101
+ */
102
+ children?: ReactElement<CarouselItemProps> | ReactElement<CarouselItemProps>[] | ((index: number) => ReactElement<CarouselItemProps>);
103
+ /** 容器样式 */
104
+ style?: StyleProp<ViewStyle>;
105
+ }
106
+ /** CarouselItem 组件属性 */
107
+ export interface CarouselItemProps {
108
+ /** 滑块内容 */
109
+ children?: ReactNode;
110
+ /** 滑块容器样式 */
111
+ style?: StyleProp<ViewStyle>;
112
+ }
113
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/base/carousel/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,yBAAyB;AACzB,MAAM,WAAW,WAAW;IAC1B,cAAc;IACd,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,aAAa;IACb,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,aAAa;IACb,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,oBAAoB;AACpB,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAE/B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;;OAGG;IACH,SAAS,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IAEtC,aAAa;IACb,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC,YAAY;IACZ,cAAc,CAAC,EAAE;QACf,gBAAgB;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,cAAc;QACd,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;KAC9B,CAAC;IAEF;;;;OAIG;IACH,SAAS,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC;IAEpE;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,QAAQ,CAAC,EACL,YAAY,CAAC,iBAAiB,CAAC,GAC/B,YAAY,CAAC,iBAAiB,CAAC,EAAE,GACjC,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAEzD,WAAW;IACX,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED,wBAAwB;AACxB,MAAM,WAAW,iBAAiB;IAChC,WAAW;IACX,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,aAAa;IACb,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B"}
@@ -0,0 +1,6 @@
1
+ import { type ReactElement } from 'react';
2
+ import type { CarouselItemProps, CarouselProps } from '#components/base';
3
+ export declare const isRenderPropChildren: (children: CarouselProps["children"]) => children is (index: number) => ReactElement<CarouselItemProps>;
4
+ export declare const normalizeChildren: (children: CarouselProps["children"], total: number) => ReactElement[];
5
+ export declare const getDefaultTotal: (children: CarouselProps["children"]) => number;
6
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/base/carousel/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAEpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEzE,eAAO,MAAM,oBAAoB,GAC/B,UAAU,aAAa,CAAC,UAAU,CAAC,KAClC,QAAQ,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,YAAY,CAAC,iBAAiB,CAE/D,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,UAAU,aAAa,CAAC,UAAU,CAAC,EACnC,OAAO,MAAM,KACZ,YAAY,EAMd,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,UAAU,aAAa,CAAC,UAAU,CAAC,WAIlE,CAAC"}
@@ -6,6 +6,7 @@ export * from './back-to-top';
6
6
  export * from './badge';
7
7
  export * from './button';
8
8
  export * from './calendar';
9
+ export * from './carousel';
9
10
  export * from './cell';
10
11
  export * from './checkbox';
11
12
  export * from './collapse';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/base/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/base/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { PropsWithChildren } from 'react';
2
+ import type { CarouselItemProps } from './types';
3
+ export declare const CarouselItem: React.FC<PropsWithChildren<CarouselItemProps>>;
4
+ //# sourceMappingURL=carousel-item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"carousel-item.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/base/carousel/carousel-item.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAG/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAKvE,CAAC"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import type { CarouselProps, CarouselRef } from './types';
3
+ /**
4
+ * 轮播图
5
+ */
6
+ export declare const Carousel: React.ForwardRefExoticComponent<CarouselProps & React.RefAttributes<CarouselRef>>;
7
+ //# sourceMappingURL=carousel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"carousel.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/base/carousel/carousel.tsx"],"names":[],"mappings":"AACA,OAAO,KASN,MAAM,OAAO,CAAC;AAqBf,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AA6B1D;;GAEG;AACH,eAAO,MAAM,QAAQ,mFAinBnB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from './carousel';
2
+ export * from './carousel-item';
3
+ export type * from './types';
4
+ export declare const Carousel: import("react").ForwardRefExoticComponent<import("./types").CarouselProps & import("react").RefAttributes<import("./types").CarouselRef>> & {
5
+ Item: import("react").FC<import("react").PropsWithChildren<import("./types").CarouselItemProps>>;
6
+ };
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/base/carousel/index.ts"],"names":[],"mappings":"AAGA,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,mBAAmB,SAAS,CAAC;AAE7B,eAAO,MAAM,QAAQ;;CAAmD,CAAC"}
@@ -0,0 +1,41 @@
1
+ export declare const useCarouselStyles: (options?: import("../../../../shared/utils").AnyObject | undefined) => {
2
+ container: {
3
+ overflow: "hidden";
4
+ height: "100%";
5
+ width: "100%";
6
+ };
7
+ track: {
8
+ flex: number;
9
+ overflow: "hidden";
10
+ };
11
+ trackInner: {
12
+ flexGrow: number;
13
+ flexShrink: number;
14
+ };
15
+ slide: {
16
+ flexGrow: number;
17
+ flexShrink: number;
18
+ overflow: "hidden";
19
+ };
20
+ indicatorContainer: {
21
+ position: "absolute";
22
+ left: number;
23
+ right: number;
24
+ bottom: number;
25
+ flexDirection: "row";
26
+ justifyContent: "center";
27
+ alignItems: "center";
28
+ gap: number;
29
+ };
30
+ indicatorDot: {
31
+ width: number;
32
+ height: number;
33
+ borderRadius: 999;
34
+ backgroundColor: "rgba(0, 0, 0, 0.18)";
35
+ opacity: number;
36
+ };
37
+ indicatorDotActive: {
38
+ opacity: number;
39
+ };
40
+ };
41
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../src/components/base/carousel/style/index.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuC3B,CAAC"}
@@ -0,0 +1,113 @@
1
+ import type { ReactElement, ReactNode } from 'react';
2
+ import type { StyleProp, ViewStyle } from 'react-native';
3
+ /** Carousel 组件暴露的实例方法 */
4
+ export interface CarouselRef {
5
+ /** 滚动到指定索引 */
6
+ swipeTo: (index: number) => void;
7
+ /** 滚动到下一页 */
8
+ swipeNext: () => void;
9
+ /** 滚动到上一页 */
10
+ swipePrev: () => void;
11
+ }
12
+ /** Carousel 组件属性 */
13
+ export interface CarouselProps {
14
+ /**
15
+ * 初始展示的索引
16
+ * @default 0
17
+ */
18
+ defaultIndex?: number;
19
+ /**
20
+ * 是否允许手势滑动
21
+ * @default true
22
+ */
23
+ allowTouchMove?: boolean;
24
+ /**
25
+ * 是否自动轮播
26
+ * - `false`: 不自动轮播
27
+ * - `true`: 正向自动轮播
28
+ * - `'reverse'`: 反向自动轮播
29
+ * @default false
30
+ */
31
+ autoplay?: boolean | 'reverse';
32
+ /**
33
+ * 自动轮播间隔,单位:毫秒
34
+ * @default 3000
35
+ */
36
+ autoplayInterval?: number;
37
+ /**
38
+ * 是否开启循环播放
39
+ * @default false
40
+ */
41
+ loop?: boolean;
42
+ /**
43
+ * 滑动方向
44
+ * @default 'horizontal'
45
+ */
46
+ direction?: 'horizontal' | 'vertical';
47
+ /** 索引变化回调 */
48
+ onIndexChange?: (index: number) => void;
49
+ /** 指示器配置 */
50
+ indicatorProps?: {
51
+ /** 指示器激活状态颜色 */
52
+ color?: string;
53
+ /** 指示器容器样式 */
54
+ style?: StyleProp<ViewStyle>;
55
+ };
56
+ /**
57
+ * 自定义指示器
58
+ * - `false`: 不展示指示器
59
+ * - 函数:接收总数与当前索引,返回自定义节点
60
+ */
61
+ indicator?: false | ((total: number, current: number) => ReactNode);
62
+ /**
63
+ * 单个滑块所占轨道宽(高)度百分比
64
+ * 取值范围 0 ~ 100
65
+ * @default 100
66
+ */
67
+ slideSize?: number;
68
+ /**
69
+ * 轨道两侧预留的偏移量百分比
70
+ * 用于在两端留出空白
71
+ * @default 0
72
+ */
73
+ trackOffset?: number;
74
+ /**
75
+ * 是否在边界处卡住
76
+ * 开启后滑动到边缘不会完全滑出可视区域
77
+ * @default true
78
+ */
79
+ stuckAtBoundary?: boolean;
80
+ /**
81
+ * 是否开启橡皮筋效果
82
+ * 关闭后到达边界时不再有超出回弹
83
+ * @default true
84
+ */
85
+ rubberband?: boolean;
86
+ /**
87
+ * 虚拟渲染时前后额外渲染的滑块个数
88
+ * 仅在使用 render prop 且传入 total 时生效
89
+ * @default 2
90
+ */
91
+ virtualOverscan?: number;
92
+ /**
93
+ * 总滑块数量
94
+ * 使用 render prop children 时需要手动传入
95
+ */
96
+ total?: number;
97
+ /**
98
+ * 滑块内容
99
+ * - 直接传入 CarouselItem 列表
100
+ * - 或者传入 render prop,根据索引返回节点
101
+ */
102
+ children?: ReactElement<CarouselItemProps> | ReactElement<CarouselItemProps>[] | ((index: number) => ReactElement<CarouselItemProps>);
103
+ /** 容器样式 */
104
+ style?: StyleProp<ViewStyle>;
105
+ }
106
+ /** CarouselItem 组件属性 */
107
+ export interface CarouselItemProps {
108
+ /** 滑块内容 */
109
+ children?: ReactNode;
110
+ /** 滑块容器样式 */
111
+ style?: StyleProp<ViewStyle>;
112
+ }
113
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/base/carousel/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,yBAAyB;AACzB,MAAM,WAAW,WAAW;IAC1B,cAAc;IACd,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,aAAa;IACb,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,aAAa;IACb,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,oBAAoB;AACpB,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAE/B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;;OAGG;IACH,SAAS,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IAEtC,aAAa;IACb,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC,YAAY;IACZ,cAAc,CAAC,EAAE;QACf,gBAAgB;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,cAAc;QACd,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;KAC9B,CAAC;IAEF;;;;OAIG;IACH,SAAS,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC;IAEpE;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,QAAQ,CAAC,EACL,YAAY,CAAC,iBAAiB,CAAC,GAC/B,YAAY,CAAC,iBAAiB,CAAC,EAAE,GACjC,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAEzD,WAAW;IACX,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED,wBAAwB;AACxB,MAAM,WAAW,iBAAiB;IAChC,WAAW;IACX,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,aAAa;IACb,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B"}
@@ -0,0 +1,6 @@
1
+ import { type ReactElement } from 'react';
2
+ import type { CarouselItemProps, CarouselProps } from '#components/base';
3
+ export declare const isRenderPropChildren: (children: CarouselProps["children"]) => children is (index: number) => ReactElement<CarouselItemProps>;
4
+ export declare const normalizeChildren: (children: CarouselProps["children"], total: number) => ReactElement[];
5
+ export declare const getDefaultTotal: (children: CarouselProps["children"]) => number;
6
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/base/carousel/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAEpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEzE,eAAO,MAAM,oBAAoB,GAC/B,UAAU,aAAa,CAAC,UAAU,CAAC,KAClC,QAAQ,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,YAAY,CAAC,iBAAiB,CAE/D,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,UAAU,aAAa,CAAC,UAAU,CAAC,EACnC,OAAO,MAAM,KACZ,YAAY,EAMd,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,UAAU,aAAa,CAAC,UAAU,CAAC,WAIlE,CAAC"}
@@ -6,6 +6,7 @@ export * from './back-to-top';
6
6
  export * from './badge';
7
7
  export * from './button';
8
8
  export * from './calendar';
9
+ export * from './carousel';
9
10
  export * from './cell';
10
11
  export * from './checkbox';
11
12
  export * from './collapse';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/base/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/base/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seakoi/native-ui",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "type": "module",
5
5
  "keywords": [
6
6
  "ui-design",
@@ -48,7 +48,8 @@
48
48
  ]
49
49
  },
50
50
  "release": {
51
- "extends": "../../.releaserc.json"
51
+ "extends": "../../.releaserc.json",
52
+ "tagFormat": "@seakoi/native-ui@${version}"
52
53
  },
53
54
  "react-native-builder-bob": {
54
55
  "source": "src",
@@ -0,0 +1,11 @@
1
+ import type { PropsWithChildren } from 'react';
2
+ import { View } from 'react-native';
3
+
4
+ import type { CarouselItemProps } from './types';
5
+
6
+ export const CarouselItem: React.FC<PropsWithChildren<CarouselItemProps>> = ({
7
+ children,
8
+ style,
9
+ }) => {
10
+ return <View style={[{ height: '100%', width: '100%' }, style]}>{children}</View>;
11
+ };