@draftbit/core 48.1.1-4f642e.2 → 48.1.1-547afd.2

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 (111) hide show
  1. package/lib/src/components/AudioPlayer/AudioPlayerCommon.d.ts +39 -0
  2. package/lib/src/components/AudioPlayer/AudioPlayerCommon.js.map +1 -0
  3. package/lib/src/components/AudioPlayer/AudioPlayerWithInterface.d.ts +6 -0
  4. package/lib/src/components/{MediaPlayer/AudioPlayer → AudioPlayer}/AudioPlayerWithInterface.js +2 -2
  5. package/lib/src/components/AudioPlayer/AudioPlayerWithInterface.js.map +1 -0
  6. package/lib/src/components/{MediaPlayer/AudioPlayer → AudioPlayer}/HeadlessAudioPlayer.d.ts +2 -3
  7. package/{src/components/MediaPlayer → lib/src/components}/AudioPlayer/HeadlessAudioPlayer.js +48 -9
  8. package/lib/src/components/AudioPlayer/HeadlessAudioPlayer.js.map +1 -0
  9. package/lib/src/components/{MediaPlayer/AudioPlayer → AudioPlayer}/index.d.ts +4 -5
  10. package/lib/src/components/{MediaPlayer/AudioPlayer → AudioPlayer}/index.js +1 -1
  11. package/lib/src/components/AudioPlayer/index.js.map +1 -0
  12. package/lib/src/components/Progress/CircularProgress/CircularProgress.d.ts +6 -0
  13. package/lib/src/components/Progress/CircularProgress/CircularProgress.js +101 -0
  14. package/lib/src/components/Progress/CircularProgress/CircularProgress.js.map +1 -0
  15. package/lib/src/components/Progress/CircularProgress/index.d.ts +6 -0
  16. package/lib/src/components/Progress/CircularProgress/index.js +14 -0
  17. package/lib/src/components/Progress/CircularProgress/index.js.map +1 -0
  18. package/lib/src/components/Progress/IndeterminateProgress.d.ts +7 -0
  19. package/lib/src/components/Progress/IndeterminateProgress.js +39 -0
  20. package/lib/src/components/Progress/IndeterminateProgress.js.map +1 -0
  21. package/lib/src/components/Progress/LinearProgress/LinearProgress.d.ts +6 -0
  22. package/lib/src/components/Progress/LinearProgress/LinearProgress.js +54 -0
  23. package/lib/src/components/Progress/LinearProgress/LinearProgress.js.map +1 -0
  24. package/lib/src/components/Progress/LinearProgress/index.d.ts +6 -0
  25. package/lib/src/components/Progress/LinearProgress/index.js +14 -0
  26. package/lib/src/components/Progress/LinearProgress/index.js.map +1 -0
  27. package/lib/src/components/Progress/ProgressCommon.d.ts +40 -0
  28. package/lib/src/components/Progress/ProgressCommon.js +2 -0
  29. package/lib/src/components/Progress/ProgressCommon.js.map +1 -0
  30. package/lib/src/components/SwipeableItem/SwipeableItem.js +9 -2
  31. package/lib/src/components/SwipeableItem/SwipeableItem.js.map +1 -1
  32. package/lib/src/components/SwipeableItem/SwipeableItemCommon.d.ts +3 -2
  33. package/lib/src/components/SwipeableItem/SwipeableItemCommon.js.map +1 -1
  34. package/lib/src/index.d.ts +3 -2
  35. package/lib/src/index.js +3 -2
  36. package/lib/src/index.js.map +1 -1
  37. package/lib/tsconfig.tsbuildinfo +1 -1
  38. package/package.json +13 -10
  39. package/src/components/AudioPlayer/AudioPlayerCommon.ts +44 -0
  40. package/src/components/{MediaPlayer/AudioPlayer → AudioPlayer}/AudioPlayerWithInterface.js +2 -2
  41. package/src/components/AudioPlayer/AudioPlayerWithInterface.js.map +1 -0
  42. package/src/components/{MediaPlayer/AudioPlayer → AudioPlayer}/AudioPlayerWithInterface.tsx +9 -7
  43. package/{lib/src/components/MediaPlayer → src/components}/AudioPlayer/HeadlessAudioPlayer.js +48 -9
  44. package/src/components/AudioPlayer/HeadlessAudioPlayer.js.map +1 -0
  45. package/src/components/{MediaPlayer/AudioPlayer → AudioPlayer}/HeadlessAudioPlayer.tsx +64 -19
  46. package/src/components/{MediaPlayer/AudioPlayer → AudioPlayer}/index.js +1 -1
  47. package/src/components/AudioPlayer/index.js.map +1 -0
  48. package/src/components/{MediaPlayer/AudioPlayer → AudioPlayer}/index.tsx +4 -4
  49. package/src/components/Progress/CircularProgress/CircularProgress.js +101 -0
  50. package/src/components/Progress/CircularProgress/CircularProgress.js.map +1 -0
  51. package/src/components/Progress/CircularProgress/CircularProgress.tsx +200 -0
  52. package/src/components/Progress/CircularProgress/index.js +14 -0
  53. package/src/components/Progress/CircularProgress/index.js.map +1 -0
  54. package/src/components/Progress/CircularProgress/index.tsx +28 -0
  55. package/src/components/Progress/IndeterminateProgress.js +39 -0
  56. package/src/components/Progress/IndeterminateProgress.js.map +1 -0
  57. package/src/components/Progress/IndeterminateProgress.tsx +74 -0
  58. package/src/components/Progress/LinearProgress/LinearProgress.js +54 -0
  59. package/src/components/Progress/LinearProgress/LinearProgress.js.map +1 -0
  60. package/src/components/Progress/LinearProgress/LinearProgress.tsx +132 -0
  61. package/src/components/Progress/LinearProgress/index.js +14 -0
  62. package/src/components/Progress/LinearProgress/index.js.map +1 -0
  63. package/src/components/Progress/LinearProgress/index.tsx +25 -0
  64. package/src/components/Progress/ProgressCommon.js +2 -0
  65. package/src/components/Progress/ProgressCommon.js.map +1 -0
  66. package/src/components/Progress/ProgressCommon.ts +44 -0
  67. package/src/components/SwipeableItem/SwipeableItem.js +9 -2
  68. package/src/components/SwipeableItem/SwipeableItem.js.map +1 -1
  69. package/src/components/SwipeableItem/SwipeableItem.tsx +9 -1
  70. package/src/components/SwipeableItem/SwipeableItemCommon.js.map +1 -1
  71. package/src/components/SwipeableItem/SwipeableItemCommon.ts +3 -2
  72. package/src/index.js +3 -2
  73. package/src/index.js.map +1 -1
  74. package/src/index.tsx +3 -5
  75. package/lib/src/components/MediaPlayer/AudioPlayer/AudioPlayerCommon.d.ts +0 -22
  76. package/lib/src/components/MediaPlayer/AudioPlayer/AudioPlayerCommon.js.map +0 -1
  77. package/lib/src/components/MediaPlayer/AudioPlayer/AudioPlayerWithInterface.d.ts +0 -7
  78. package/lib/src/components/MediaPlayer/AudioPlayer/AudioPlayerWithInterface.js.map +0 -1
  79. package/lib/src/components/MediaPlayer/AudioPlayer/HeadlessAudioPlayer.js.map +0 -1
  80. package/lib/src/components/MediaPlayer/AudioPlayer/index.js.map +0 -1
  81. package/lib/src/components/MediaPlayer/MediaPlaybackWrapper.d.ts +0 -15
  82. package/lib/src/components/MediaPlayer/MediaPlaybackWrapper.js +0 -32
  83. package/lib/src/components/MediaPlayer/MediaPlaybackWrapper.js.map +0 -1
  84. package/lib/src/components/MediaPlayer/MediaPlayerCommon.d.ts +0 -21
  85. package/lib/src/components/MediaPlayer/MediaPlayerCommon.js +0 -24
  86. package/lib/src/components/MediaPlayer/MediaPlayerCommon.js.map +0 -1
  87. package/lib/src/components/MediaPlayer/VideoPlayer/VideoPlayer.d.ts +0 -15
  88. package/lib/src/components/MediaPlayer/VideoPlayer/VideoPlayer.js +0 -69
  89. package/lib/src/components/MediaPlayer/VideoPlayer/VideoPlayer.js.map +0 -1
  90. package/lib/src/components/MediaPlayer/VideoPlayer/index.d.ts +0 -2
  91. package/lib/src/components/MediaPlayer/VideoPlayer/index.js +0 -2
  92. package/lib/src/components/MediaPlayer/VideoPlayer/index.js.map +0 -1
  93. package/src/components/MediaPlayer/AudioPlayer/AudioPlayerCommon.ts +0 -25
  94. package/src/components/MediaPlayer/AudioPlayer/AudioPlayerWithInterface.js.map +0 -1
  95. package/src/components/MediaPlayer/AudioPlayer/HeadlessAudioPlayer.js.map +0 -1
  96. package/src/components/MediaPlayer/AudioPlayer/index.js.map +0 -1
  97. package/src/components/MediaPlayer/MediaPlaybackWrapper.js +0 -32
  98. package/src/components/MediaPlayer/MediaPlaybackWrapper.js.map +0 -1
  99. package/src/components/MediaPlayer/MediaPlaybackWrapper.tsx +0 -56
  100. package/src/components/MediaPlayer/MediaPlayerCommon.js +0 -24
  101. package/src/components/MediaPlayer/MediaPlayerCommon.js.map +0 -1
  102. package/src/components/MediaPlayer/MediaPlayerCommon.ts +0 -50
  103. package/src/components/MediaPlayer/VideoPlayer/VideoPlayer.js +0 -69
  104. package/src/components/MediaPlayer/VideoPlayer/VideoPlayer.js.map +0 -1
  105. package/src/components/MediaPlayer/VideoPlayer/VideoPlayer.tsx +0 -135
  106. package/src/components/MediaPlayer/VideoPlayer/index.js +0 -2
  107. package/src/components/MediaPlayer/VideoPlayer/index.js.map +0 -1
  108. package/src/components/MediaPlayer/VideoPlayer/index.ts +0 -2
  109. /package/lib/src/components/{MediaPlayer/AudioPlayer → AudioPlayer}/AudioPlayerCommon.js +0 -0
  110. /package/src/components/{MediaPlayer/AudioPlayer → AudioPlayer}/AudioPlayerCommon.js +0 -0
  111. /package/src/components/{MediaPlayer/AudioPlayer → AudioPlayer}/AudioPlayerCommon.js.map +0 -0
@@ -0,0 +1,200 @@
1
+ import React from "react";
2
+ import Svg, { Path, PathProps } from "react-native-svg";
3
+ import Animated, {
4
+ useAnimatedProps,
5
+ useSharedValue,
6
+ withTiming,
7
+ } from "react-native-reanimated";
8
+ import {
9
+ DEFAULT_ANIMATION_DURATION,
10
+ ValueProgressProps,
11
+ CircularProgressProps,
12
+ } from "../ProgressCommon";
13
+
14
+ export const AnimatedPath = Animated.createAnimatedComponent(Path);
15
+
16
+ export const CircularProgress: React.FC<
17
+ ValueProgressProps & CircularProgressProps
18
+ > = ({
19
+ theme,
20
+ minimumValue = 0,
21
+ maximumValue = 100,
22
+ value = minimumValue,
23
+ thickness = 10,
24
+ trackThickness = thickness,
25
+ color = theme.colors.primary,
26
+ trackColor = theme.colors.divider,
27
+ trackOpacity = 1,
28
+ showTrack = true,
29
+ animationDuration = DEFAULT_ANIMATION_DURATION,
30
+ isAnimated = true,
31
+ lineCap = "round",
32
+ trackLineCap = lineCap,
33
+ dashWidth,
34
+ trackDashWidth,
35
+ dashGap,
36
+ trackDashGap,
37
+ dashOffset,
38
+ trackDashOffset,
39
+ customDashArray,
40
+ trackCustomDashArray,
41
+ onFullPathWidth,
42
+ startPosition = "top",
43
+ style,
44
+ testID,
45
+ }) => {
46
+ const [svgContainerWidth, setSvgContainerWidth] = React.useState(0);
47
+ const [circumfrence, setCircumefrence] = React.useState(0);
48
+
49
+ const dashArray =
50
+ dashWidth !== undefined
51
+ ? `${dashWidth} ${dashGap || dashWidth}`
52
+ : undefined;
53
+ const trackDashArray =
54
+ trackDashWidth !== undefined
55
+ ? `${trackDashWidth} ${trackDashGap || trackDashWidth}`
56
+ : undefined;
57
+
58
+ const maxThickness = Math.max(thickness, trackThickness);
59
+ const thicknessOffset = maxThickness / 2; // This offset guarantees nothing is cut off by view bounds
60
+
61
+ const radius = svgContainerWidth / 2;
62
+
63
+ const c = 2 * Math.PI * radius;
64
+ if (c !== circumfrence) {
65
+ setCircumefrence(c);
66
+ }
67
+
68
+ const startAngle = React.useMemo(() => {
69
+ switch (startPosition) {
70
+ case "top":
71
+ return 0;
72
+ case "right":
73
+ return 90;
74
+ case "bottom":
75
+ return 180;
76
+ case "left":
77
+ return 270;
78
+ }
79
+ }, [startPosition]);
80
+
81
+ const currentFillPercentage = value / (maximumValue + minimumValue);
82
+ const currentAngle = useSharedValue(startAngle + currentFillPercentage * 360);
83
+
84
+ const progressPathAnimatedProps = useAnimatedProps<PathProps>(() => {
85
+ const isBelowMinAngle = currentAngle.value <= startAngle;
86
+ return {
87
+ d: circlePath(
88
+ radius,
89
+ radius,
90
+ radius - thicknessOffset,
91
+ startAngle,
92
+ Math.min(currentAngle.value, startAngle + 360) //Prevents going beyond the max angle
93
+ ),
94
+ strokeOpacity: isBelowMinAngle ? 0.0 : 1.0,
95
+ };
96
+ });
97
+
98
+ React.useEffect(() => {
99
+ currentAngle.value = withTiming(startAngle + currentFillPercentage * 360, {
100
+ duration: isAnimated ? animationDuration : 0,
101
+ });
102
+ }, [
103
+ value,
104
+ currentFillPercentage,
105
+ animationDuration,
106
+ currentAngle,
107
+ maximumValue,
108
+ minimumValue,
109
+ isAnimated,
110
+ startAngle,
111
+ ]);
112
+
113
+ React.useEffect(() => {
114
+ onFullPathWidth?.(circumfrence);
115
+ }, [circumfrence, onFullPathWidth]);
116
+
117
+ return (
118
+ <Svg
119
+ testID={testID ?? "circular-progress-component"}
120
+ onLayout={(event) => {
121
+ const width = event.nativeEvent.layout.width;
122
+ setSvgContainerWidth(width);
123
+ }}
124
+ style={[
125
+ {
126
+ height: svgContainerWidth,
127
+ },
128
+ style,
129
+ ]}
130
+ >
131
+ {showTrack && (
132
+ <Path
133
+ d={circlePath(
134
+ radius,
135
+ radius,
136
+ radius - thicknessOffset,
137
+ startAngle,
138
+ startAngle + 360
139
+ )}
140
+ stroke={trackColor}
141
+ strokeWidth={trackThickness}
142
+ strokeOpacity={trackOpacity}
143
+ strokeLinecap={trackLineCap}
144
+ strokeDasharray={trackCustomDashArray || trackDashArray}
145
+ strokeDashoffset={trackDashOffset}
146
+ />
147
+ )}
148
+ <AnimatedPath
149
+ animatedProps={progressPathAnimatedProps}
150
+ stroke={color}
151
+ strokeWidth={thickness}
152
+ strokeLinecap={lineCap}
153
+ strokeDasharray={customDashArray || dashArray}
154
+ strokeDashoffset={dashOffset}
155
+ />
156
+ </Svg>
157
+ );
158
+ };
159
+
160
+ // From: https://github.com/bartgryszko/react-native-circular-progress/blob/a93b501aea40306126c8ede72089741eead52308/src/CircularProgress.js#L15
161
+ function circlePath(
162
+ x: number,
163
+ y: number,
164
+ radius: number,
165
+ startAngle: number,
166
+ endAngle: number
167
+ ) {
168
+ "worklet"; // Reanimated worklet to be runnable on the UI thread
169
+
170
+ function polarToCartesian(
171
+ centerX: number,
172
+ centerY: number,
173
+ radius: number,
174
+ angleInDegrees: number
175
+ ) {
176
+ var angleInRadians = ((angleInDegrees - 90) * Math.PI) / 180.0;
177
+ return {
178
+ x: centerX + radius * Math.cos(angleInRadians),
179
+ y: centerY + radius * Math.sin(angleInRadians),
180
+ };
181
+ }
182
+
183
+ var start = polarToCartesian(x, y, radius, endAngle * 0.9999);
184
+ var end = polarToCartesian(x, y, radius, startAngle);
185
+ var largeArcFlag = endAngle - startAngle <= 180 ? "0" : "1";
186
+ var d = [
187
+ "M",
188
+ start.x,
189
+ start.y,
190
+ "A",
191
+ radius,
192
+ radius,
193
+ 0,
194
+ largeArcFlag,
195
+ 0,
196
+ end.x,
197
+ end.y,
198
+ ];
199
+ return d.join(" ");
200
+ }
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ import IndeterminateProgress from "../IndeterminateProgress";
3
+ import { CircularProgress as CircularProgressComponent } from "./CircularProgress";
4
+ import { withTheme } from "../../../theming";
5
+ const CircularProgress = (props) => {
6
+ if (props.indeterminate) {
7
+ return (React.createElement(IndeterminateProgress, { ProgressComponent: CircularProgressComponent, ...props }));
8
+ }
9
+ else {
10
+ return React.createElement(CircularProgressComponent, { ...props });
11
+ }
12
+ };
13
+ export default withTheme(CircularProgress);
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,qBAAqB,MAAM,0BAA0B,CAAC;AAM7D,OAAO,EAAE,gBAAgB,IAAI,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,gBAAgB,GAElB,CAAC,KAAK,EAAE,EAAE;IACZ,IAAI,KAAK,CAAC,aAAa,EAAE;QACvB,OAAO,CACL,oBAAC,qBAAqB,IACpB,iBAAiB,EACf,yBAAwE,KAEtE,KAAK,GACT,CACH,CAAC;KACH;SAAM;QACL,OAAO,oBAAC,yBAAyB,OAAK,KAAK,GAAI,CAAC;KACjD;AACH,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,28 @@
1
+ import React from "react";
2
+ import IndeterminateProgress from "../IndeterminateProgress";
3
+ import {
4
+ CircularProgressProps,
5
+ IndeterminateProgressProps,
6
+ ValueProgressProps,
7
+ } from "../ProgressCommon";
8
+ import { CircularProgress as CircularProgressComponent } from "./CircularProgress";
9
+ import { withTheme } from "../../../theming";
10
+
11
+ const CircularProgress: React.FC<
12
+ ValueProgressProps & IndeterminateProgressProps & CircularProgressProps
13
+ > = (props) => {
14
+ if (props.indeterminate) {
15
+ return (
16
+ <IndeterminateProgress
17
+ ProgressComponent={
18
+ CircularProgressComponent as React.FunctionComponent<ValueProgressProps>
19
+ }
20
+ {...props}
21
+ />
22
+ );
23
+ } else {
24
+ return <CircularProgressComponent {...props} />;
25
+ }
26
+ };
27
+
28
+ export default withTheme(CircularProgress);
@@ -0,0 +1,39 @@
1
+ import React from "react";
2
+ import { runOnJS, useAnimatedReaction, useSharedValue, withTiming, } from "react-native-reanimated";
3
+ import { DEFAULT_ANIMATION_DURATION, } from "./ProgressCommon";
4
+ const IndeterminateProgress = ({ ProgressComponent, ...rest }) => {
5
+ const [pathWidth, setPathWidth] = React.useState(0);
6
+ const [value, setValue] = React.useState(0);
7
+ const [dashOffset, setDashOffset] = React.useState(0);
8
+ const animationDuration = rest.animationDuration || DEFAULT_ANIMATION_DURATION;
9
+ const currentOffset = useSharedValue(0);
10
+ // dashOffset animation done through state due to it not being a 'native' prop that reanimated can animate on the native thread
11
+ useAnimatedReaction(() => currentOffset.value, (result) => runOnJS(setDashOffset)(result));
12
+ const repeatIndeterminateAnimation = React.useCallback(() => {
13
+ if (value === 0) {
14
+ setValue(100);
15
+ currentOffset.value = withTiming(pathWidth, {
16
+ duration: animationDuration,
17
+ });
18
+ }
19
+ else {
20
+ setValue(0);
21
+ currentOffset.value = withTiming(0, {
22
+ duration: animationDuration,
23
+ });
24
+ }
25
+ }, [currentOffset, value, animationDuration, pathWidth]);
26
+ React.useEffect(() => {
27
+ const timeout = setTimeout(() => {
28
+ repeatIndeterminateAnimation();
29
+ }, animationDuration);
30
+ return () => clearTimeout(timeout);
31
+ }, [animationDuration, repeatIndeterminateAnimation]);
32
+ return (React.createElement(ProgressComponent, { ...rest, testID: rest.testID || "indeterminate-progress", onFullPathWidth: (width) => {
33
+ var _a;
34
+ setPathWidth(width);
35
+ (_a = rest.onFullPathWidth) === null || _a === void 0 ? void 0 : _a.call(rest, width);
36
+ }, dashOffset: dashOffset, dashGap: pathWidth / 2, dashWidth: pathWidth / 2, animationDuration: animationDuration, value: 100 }));
37
+ };
38
+ export default IndeterminateProgress;
39
+ //# sourceMappingURL=IndeterminateProgress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndeterminateProgress.js","sourceRoot":"","sources":["IndeterminateProgress.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,OAAO,EACP,mBAAmB,EACnB,cAAc,EACd,UAAU,GACX,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,0BAA0B,GAE3B,MAAM,kBAAkB,CAAC;AAM1B,MAAM,qBAAqB,GAAyC,CAAC,EACnE,iBAAiB,EACjB,GAAG,IAAI,EACR,EAAE,EAAE;IACH,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,iBAAiB,GACrB,IAAI,CAAC,iBAAiB,IAAI,0BAA0B,CAAC;IAEvD,MAAM,aAAa,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IAExC,+HAA+H;IAC/H,mBAAmB,CACjB,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,EACzB,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAC3C,CAAC;IAEF,MAAM,4BAA4B,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAC1D,IAAI,KAAK,KAAK,CAAC,EAAE;YACf,QAAQ,CAAC,GAAG,CAAC,CAAC;YACd,aAAa,CAAC,KAAK,GAAG,UAAU,CAAC,SAAS,EAAE;gBAC1C,QAAQ,EAAE,iBAAiB;aAC5B,CAAC,CAAC;SACJ;aAAM;YACL,QAAQ,CAAC,CAAC,CAAC,CAAC;YACZ,aAAa,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,EAAE;gBAClC,QAAQ,EAAE,iBAAiB;aAC5B,CAAC,CAAC;SACJ;IACH,CAAC,EAAE,CAAC,aAAa,EAAE,KAAK,EAAE,iBAAiB,EAAE,SAAS,CAAC,CAAC,CAAC;IAEzD,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,4BAA4B,EAAE,CAAC;QACjC,CAAC,EAAE,iBAAiB,CAAC,CAAC;QACtB,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC,EAAE,CAAC,iBAAiB,EAAE,4BAA4B,CAAC,CAAC,CAAC;IAEtD,OAAO,CACL,oBAAC,iBAAiB,OACZ,IAAI,EACR,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,wBAAwB,EAC/C,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE;;YACzB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAA,IAAI,CAAC,eAAe,qDAAG,KAAK,CAAC,CAAC;QAChC,CAAC,EACD,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,SAAS,GAAG,CAAC,EACtB,SAAS,EAAE,SAAS,GAAG,CAAC,EACxB,iBAAiB,EAAE,iBAAiB,EACpC,KAAK,EAAE,GAAG,GACV,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,74 @@
1
+ import React from "react";
2
+ import {
3
+ runOnJS,
4
+ useAnimatedReaction,
5
+ useSharedValue,
6
+ withTiming,
7
+ } from "react-native-reanimated";
8
+ import {
9
+ BaseProgressProps,
10
+ DEFAULT_ANIMATION_DURATION,
11
+ ValueProgressProps,
12
+ } from "./ProgressCommon";
13
+
14
+ interface IndeterminateProgressProps extends BaseProgressProps {
15
+ ProgressComponent: React.FunctionComponent<ValueProgressProps>;
16
+ }
17
+
18
+ const IndeterminateProgress: React.FC<IndeterminateProgressProps> = ({
19
+ ProgressComponent,
20
+ ...rest
21
+ }) => {
22
+ const [pathWidth, setPathWidth] = React.useState(0);
23
+ const [value, setValue] = React.useState(0);
24
+ const [dashOffset, setDashOffset] = React.useState(0);
25
+ const animationDuration =
26
+ rest.animationDuration || DEFAULT_ANIMATION_DURATION;
27
+
28
+ const currentOffset = useSharedValue(0);
29
+
30
+ // dashOffset animation done through state due to it not being a 'native' prop that reanimated can animate on the native thread
31
+ useAnimatedReaction(
32
+ () => currentOffset.value,
33
+ (result) => runOnJS(setDashOffset)(result)
34
+ );
35
+
36
+ const repeatIndeterminateAnimation = React.useCallback(() => {
37
+ if (value === 0) {
38
+ setValue(100);
39
+ currentOffset.value = withTiming(pathWidth, {
40
+ duration: animationDuration,
41
+ });
42
+ } else {
43
+ setValue(0);
44
+ currentOffset.value = withTiming(0, {
45
+ duration: animationDuration,
46
+ });
47
+ }
48
+ }, [currentOffset, value, animationDuration, pathWidth]);
49
+
50
+ React.useEffect(() => {
51
+ const timeout = setTimeout(() => {
52
+ repeatIndeterminateAnimation();
53
+ }, animationDuration);
54
+ return () => clearTimeout(timeout);
55
+ }, [animationDuration, repeatIndeterminateAnimation]);
56
+
57
+ return (
58
+ <ProgressComponent
59
+ {...rest}
60
+ testID={rest.testID || "indeterminate-progress"}
61
+ onFullPathWidth={(width) => {
62
+ setPathWidth(width);
63
+ rest.onFullPathWidth?.(width);
64
+ }}
65
+ dashOffset={dashOffset}
66
+ dashGap={pathWidth / 2}
67
+ dashWidth={pathWidth / 2}
68
+ animationDuration={animationDuration}
69
+ value={100}
70
+ />
71
+ );
72
+ };
73
+
74
+ export default IndeterminateProgress;
@@ -0,0 +1,54 @@
1
+ import React from "react";
2
+ import Svg, { Line } from "react-native-svg";
3
+ import Animated, { useAnimatedProps, useSharedValue, withTiming, } from "react-native-reanimated";
4
+ import { DEFAULT_ANIMATION_DURATION, } from "../ProgressCommon";
5
+ export const AnimatedLine = Animated.createAnimatedComponent(Line);
6
+ export const LinearProgress = ({ theme, minimumValue = 0, maximumValue = 100, value = minimumValue, thickness = 10, trackThickness = thickness, color = theme.colors.primary, trackColor = theme.colors.divider, trackOpacity = 1, showTrack = true, animationDuration = DEFAULT_ANIMATION_DURATION, isAnimated = true, lineCap = "round", trackLineCap = lineCap, dashWidth, trackDashWidth, dashGap, trackDashGap, dashOffset, trackDashOffset, customDashArray, trackCustomDashArray, onFullPathWidth, style, testID, }) => {
7
+ const [svgContainerWidth, setSvgContainerWidth] = React.useState(0);
8
+ const dashArray = dashWidth !== undefined
9
+ ? `${dashWidth} ${dashGap || dashWidth}`
10
+ : undefined;
11
+ const trackDashArray = trackDashWidth !== undefined
12
+ ? `${trackDashWidth} ${trackDashGap || trackDashWidth}`
13
+ : undefined;
14
+ const maxThickness = Math.max(thickness, trackThickness);
15
+ const thicknessOffset = maxThickness / 2; // This offset guarantees nothing is cut off by view bounds
16
+ const progressLineWidth = svgContainerWidth - thicknessOffset;
17
+ const trackProgressLineWidth = svgContainerWidth - thicknessOffset;
18
+ const currentFillPercentage = value / (maximumValue + minimumValue);
19
+ const currentProgressLineWidth = useSharedValue(currentFillPercentage * progressLineWidth);
20
+ const progressLineAnimatedProps = useAnimatedProps(() => {
21
+ const isBelowMinWidth = currentProgressLineWidth.value <= thicknessOffset;
22
+ return {
23
+ x2: Math.min(progressLineWidth, currentProgressLineWidth.value),
24
+ strokeOpacity: isBelowMinWidth ? 0.0 : 1.0,
25
+ };
26
+ });
27
+ React.useEffect(() => {
28
+ currentProgressLineWidth.value = withTiming(progressLineWidth * currentFillPercentage, {
29
+ duration: isAnimated ? animationDuration : 0,
30
+ });
31
+ }, [
32
+ value,
33
+ progressLineWidth,
34
+ currentFillPercentage,
35
+ animationDuration,
36
+ currentProgressLineWidth,
37
+ maximumValue,
38
+ minimumValue,
39
+ isAnimated,
40
+ ]);
41
+ return (React.createElement(Svg, { testID: testID !== null && testID !== void 0 ? testID : "linear-progress-component", onLayout: (event) => {
42
+ const width = event.nativeEvent.layout.width;
43
+ setSvgContainerWidth(width);
44
+ onFullPathWidth === null || onFullPathWidth === void 0 ? void 0 : onFullPathWidth(width);
45
+ }, style: [
46
+ {
47
+ height: maxThickness,
48
+ },
49
+ style,
50
+ ] },
51
+ showTrack && (React.createElement(Line, { x1: thicknessOffset, y1: thicknessOffset, x2: trackProgressLineWidth, y2: thicknessOffset, stroke: trackColor, strokeWidth: trackThickness, strokeOpacity: trackOpacity, strokeLinecap: trackLineCap, strokeDasharray: trackCustomDashArray || trackDashArray, strokeDashoffset: trackDashOffset })),
52
+ React.createElement(AnimatedLine, { animatedProps: progressLineAnimatedProps, x1: thicknessOffset, y1: thicknessOffset, y2: thicknessOffset, stroke: color, strokeWidth: thickness, strokeLinecap: lineCap, strokeDasharray: customDashArray || dashArray, strokeDashoffset: dashOffset })));
53
+ };
54
+ //# sourceMappingURL=LinearProgress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LinearProgress.js","sourceRoot":"","sources":["LinearProgress.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,EAAE,EAAE,IAAI,EAAa,MAAM,kBAAkB,CAAC;AACxD,OAAO,QAAQ,EAAE,EACf,gBAAgB,EAChB,cAAc,EACd,UAAU,GACX,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,0BAA0B,GAE3B,MAAM,mBAAmB,CAAC;AAE3B,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;AAEnE,MAAM,CAAC,MAAM,cAAc,GAAiC,CAAC,EAC3D,KAAK,EACL,YAAY,GAAG,CAAC,EAChB,YAAY,GAAG,GAAG,EAClB,KAAK,GAAG,YAAY,EACpB,SAAS,GAAG,EAAE,EACd,cAAc,GAAG,SAAS,EAC1B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,EAC5B,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,EACjC,YAAY,GAAG,CAAC,EAChB,SAAS,GAAG,IAAI,EAChB,iBAAiB,GAAG,0BAA0B,EAC9C,UAAU,GAAG,IAAI,EACjB,OAAO,GAAG,OAAO,EACjB,YAAY,GAAG,OAAO,EACtB,SAAS,EACT,cAAc,EACd,OAAO,EACP,YAAY,EACZ,UAAU,EACV,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,KAAK,EACL,MAAM,GACP,EAAE,EAAE;IACH,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEpE,MAAM,SAAS,GACb,SAAS,KAAK,SAAS;QACrB,CAAC,CAAC,GAAG,SAAS,IAAI,OAAO,IAAI,SAAS,EAAE;QACxC,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,cAAc,GAClB,cAAc,KAAK,SAAS;QAC1B,CAAC,CAAC,GAAG,cAAc,IAAI,YAAY,IAAI,cAAc,EAAE;QACvD,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IACzD,MAAM,eAAe,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,2DAA2D;IAErG,MAAM,iBAAiB,GAAG,iBAAiB,GAAG,eAAe,CAAC;IAC9D,MAAM,sBAAsB,GAAG,iBAAiB,GAAG,eAAe,CAAC;IAEnE,MAAM,qBAAqB,GAAG,KAAK,GAAG,CAAC,YAAY,GAAG,YAAY,CAAC,CAAC;IACpE,MAAM,wBAAwB,GAAG,cAAc,CAC7C,qBAAqB,GAAG,iBAAiB,CAC1C,CAAC;IAEF,MAAM,yBAAyB,GAAG,gBAAgB,CAAY,GAAG,EAAE;QACjE,MAAM,eAAe,GAAG,wBAAwB,CAAC,KAAK,IAAI,eAAe,CAAC;QAC1E,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,KAAK,CAAC;YAC/D,aAAa,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;SAC3C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,wBAAwB,CAAC,KAAK,GAAG,UAAU,CACzC,iBAAiB,GAAG,qBAAqB,EACzC;YACE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;SAC7C,CACF,CAAC;IACJ,CAAC,EAAE;QACD,KAAK;QACL,iBAAiB;QACjB,qBAAqB;QACrB,iBAAiB;QACjB,wBAAwB;QACxB,YAAY;QACZ,YAAY;QACZ,UAAU;KACX,CAAC,CAAC;IAEH,OAAO,CACL,oBAAC,GAAG,IACF,MAAM,EAAE,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,2BAA2B,EAC7C,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;YAClB,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC;YAC7C,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAC5B,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAG,KAAK,CAAC,CAAC;QAC3B,CAAC,EACD,KAAK,EAAE;YACL;gBACE,MAAM,EAAE,YAAY;aACrB;YACD,KAAK;SACN;QAEA,SAAS,IAAI,CACZ,oBAAC,IAAI,IACH,EAAE,EAAE,eAAe,EACnB,EAAE,EAAE,eAAe,EACnB,EAAE,EAAE,sBAAsB,EAC1B,EAAE,EAAE,eAAe,EACnB,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,cAAc,EAC3B,aAAa,EAAE,YAAY,EAC3B,aAAa,EAAE,YAAY,EAC3B,eAAe,EAAE,oBAAoB,IAAI,cAAc,EACvD,gBAAgB,EAAE,eAAe,GACjC,CACH;QACD,oBAAC,YAAY,IACX,aAAa,EAAE,yBAAyB,EACxC,EAAE,EAAE,eAAe,EACnB,EAAE,EAAE,eAAe,EACnB,EAAE,EAAE,eAAe,EACnB,MAAM,EAAE,KAAK,EACb,WAAW,EAAE,SAAS,EACtB,aAAa,EAAE,OAAO,EACtB,eAAe,EAAE,eAAe,IAAI,SAAS,EAC7C,gBAAgB,EAAE,UAAU,GAC5B,CACE,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,132 @@
1
+ import React from "react";
2
+ import Svg, { Line, LineProps } from "react-native-svg";
3
+ import Animated, {
4
+ useAnimatedProps,
5
+ useSharedValue,
6
+ withTiming,
7
+ } from "react-native-reanimated";
8
+ import {
9
+ DEFAULT_ANIMATION_DURATION,
10
+ ValueProgressProps,
11
+ } from "../ProgressCommon";
12
+
13
+ export const AnimatedLine = Animated.createAnimatedComponent(Line);
14
+
15
+ export const LinearProgress: React.FC<ValueProgressProps> = ({
16
+ theme,
17
+ minimumValue = 0,
18
+ maximumValue = 100,
19
+ value = minimumValue,
20
+ thickness = 10,
21
+ trackThickness = thickness,
22
+ color = theme.colors.primary,
23
+ trackColor = theme.colors.divider,
24
+ trackOpacity = 1,
25
+ showTrack = true,
26
+ animationDuration = DEFAULT_ANIMATION_DURATION,
27
+ isAnimated = true,
28
+ lineCap = "round",
29
+ trackLineCap = lineCap,
30
+ dashWidth,
31
+ trackDashWidth,
32
+ dashGap,
33
+ trackDashGap,
34
+ dashOffset,
35
+ trackDashOffset,
36
+ customDashArray,
37
+ trackCustomDashArray,
38
+ onFullPathWidth,
39
+ style,
40
+ testID,
41
+ }) => {
42
+ const [svgContainerWidth, setSvgContainerWidth] = React.useState(0);
43
+
44
+ const dashArray =
45
+ dashWidth !== undefined
46
+ ? `${dashWidth} ${dashGap || dashWidth}`
47
+ : undefined;
48
+ const trackDashArray =
49
+ trackDashWidth !== undefined
50
+ ? `${trackDashWidth} ${trackDashGap || trackDashWidth}`
51
+ : undefined;
52
+
53
+ const maxThickness = Math.max(thickness, trackThickness);
54
+ const thicknessOffset = maxThickness / 2; // This offset guarantees nothing is cut off by view bounds
55
+
56
+ const progressLineWidth = svgContainerWidth - thicknessOffset;
57
+ const trackProgressLineWidth = svgContainerWidth - thicknessOffset;
58
+
59
+ const currentFillPercentage = value / (maximumValue + minimumValue);
60
+ const currentProgressLineWidth = useSharedValue(
61
+ currentFillPercentage * progressLineWidth
62
+ );
63
+
64
+ const progressLineAnimatedProps = useAnimatedProps<LineProps>(() => {
65
+ const isBelowMinWidth = currentProgressLineWidth.value <= thicknessOffset;
66
+ return {
67
+ x2: Math.min(progressLineWidth, currentProgressLineWidth.value), //Prevents going beyond the max width
68
+ strokeOpacity: isBelowMinWidth ? 0.0 : 1.0,
69
+ };
70
+ });
71
+
72
+ React.useEffect(() => {
73
+ currentProgressLineWidth.value = withTiming(
74
+ progressLineWidth * currentFillPercentage,
75
+ {
76
+ duration: isAnimated ? animationDuration : 0,
77
+ }
78
+ );
79
+ }, [
80
+ value,
81
+ progressLineWidth,
82
+ currentFillPercentage,
83
+ animationDuration,
84
+ currentProgressLineWidth,
85
+ maximumValue,
86
+ minimumValue,
87
+ isAnimated,
88
+ ]);
89
+
90
+ return (
91
+ <Svg
92
+ testID={testID ?? "linear-progress-component"}
93
+ onLayout={(event) => {
94
+ const width = event.nativeEvent.layout.width;
95
+ setSvgContainerWidth(width);
96
+ onFullPathWidth?.(width);
97
+ }}
98
+ style={[
99
+ {
100
+ height: maxThickness,
101
+ },
102
+ style,
103
+ ]}
104
+ >
105
+ {showTrack && (
106
+ <Line
107
+ x1={thicknessOffset}
108
+ y1={thicknessOffset}
109
+ x2={trackProgressLineWidth}
110
+ y2={thicknessOffset}
111
+ stroke={trackColor}
112
+ strokeWidth={trackThickness}
113
+ strokeOpacity={trackOpacity}
114
+ strokeLinecap={trackLineCap}
115
+ strokeDasharray={trackCustomDashArray || trackDashArray}
116
+ strokeDashoffset={trackDashOffset}
117
+ />
118
+ )}
119
+ <AnimatedLine
120
+ animatedProps={progressLineAnimatedProps}
121
+ x1={thicknessOffset}
122
+ y1={thicknessOffset}
123
+ y2={thicknessOffset}
124
+ stroke={color}
125
+ strokeWidth={thickness}
126
+ strokeLinecap={lineCap}
127
+ strokeDasharray={customDashArray || dashArray}
128
+ strokeDashoffset={dashOffset}
129
+ />
130
+ </Svg>
131
+ );
132
+ };
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ import IndeterminateProgress from "../IndeterminateProgress";
3
+ import { LinearProgress as LinearProgressComponent } from "./LinearProgress";
4
+ import { withTheme } from "../../../theming";
5
+ const LinearProgress = (props) => {
6
+ if (props.indeterminate) {
7
+ return (React.createElement(IndeterminateProgress, { ProgressComponent: LinearProgressComponent, ...props }));
8
+ }
9
+ else {
10
+ return React.createElement(LinearProgressComponent, { ...props });
11
+ }
12
+ };
13
+ export default withTheme(LinearProgress);
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,qBAAqB,MAAM,0BAA0B,CAAC;AAK7D,OAAO,EAAE,cAAc,IAAI,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,cAAc,GAEhB,CAAC,KAAK,EAAE,EAAE;IACZ,IAAI,KAAK,CAAC,aAAa,EAAE;QACvB,OAAO,CACL,oBAAC,qBAAqB,IACpB,iBAAiB,EAAE,uBAAuB,KACtC,KAAK,GACT,CACH,CAAC;KACH;SAAM;QACL,OAAO,oBAAC,uBAAuB,OAAK,KAAK,GAAI,CAAC;KAC/C;AACH,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC,cAAc,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ import React from "react";
2
+ import IndeterminateProgress from "../IndeterminateProgress";
3
+ import {
4
+ IndeterminateProgressProps,
5
+ ValueProgressProps,
6
+ } from "../ProgressCommon";
7
+ import { LinearProgress as LinearProgressComponent } from "./LinearProgress";
8
+ import { withTheme } from "../../../theming";
9
+
10
+ const LinearProgress: React.FC<
11
+ ValueProgressProps & IndeterminateProgressProps
12
+ > = (props) => {
13
+ if (props.indeterminate) {
14
+ return (
15
+ <IndeterminateProgress
16
+ ProgressComponent={LinearProgressComponent}
17
+ {...props}
18
+ />
19
+ );
20
+ } else {
21
+ return <LinearProgressComponent {...props} />;
22
+ }
23
+ };
24
+
25
+ export default withTheme(LinearProgress);
@@ -0,0 +1,2 @@
1
+ export const DEFAULT_ANIMATION_DURATION = 500;
2
+ //# sourceMappingURL=ProgressCommon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgressCommon.js","sourceRoot":"","sources":["ProgressCommon.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { StyleProp, ViewStyle } from "react-native";
2
+ import { Theme } from "../../styles/DefaultTheme";
3
+
4
+ type LineCap = "round" | "square";
5
+
6
+ export const DEFAULT_ANIMATION_DURATION = 500;
7
+
8
+ export interface BaseProgressProps {
9
+ thickness?: number;
10
+ trackThickness?: number;
11
+ color?: string;
12
+ trackColor?: string;
13
+ trackOpacity?: number;
14
+ showTrack?: boolean;
15
+ animationDuration?: number;
16
+ isAnimated?: boolean;
17
+ lineCap?: LineCap;
18
+ trackLineCap?: LineCap;
19
+ dashWidth?: string | number;
20
+ trackDashWidth?: string | number;
21
+ dashGap?: string | number;
22
+ trackDashGap?: string | number;
23
+ dashOffset?: string | number;
24
+ trackDashOffset?: string | number;
25
+ customDashArray?: string;
26
+ trackCustomDashArray?: string;
27
+ onFullPathWidth?: (width: number) => void;
28
+ style?: StyleProp<ViewStyle>;
29
+ theme: Theme;
30
+ testID?: string;
31
+ }
32
+ export interface ValueProgressProps extends BaseProgressProps {
33
+ value?: number;
34
+ minimumValue?: number;
35
+ maximumValue?: number;
36
+ }
37
+
38
+ export interface IndeterminateProgressProps extends BaseProgressProps {
39
+ indeterminate?: boolean;
40
+ }
41
+
42
+ export interface CircularProgressProps {
43
+ startPosition?: "left" | "top" | "right" | "bottom";
44
+ }