rn-marquee-text 2.0.8 → 2.1.0-beta.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.
@@ -1,5 +1,5 @@
1
- import * as React from 'react';
2
- import { ViewStyle, TextStyle } from 'react-native';
1
+ import * as React from "react";
2
+ import { ViewStyle, TextStyle } from "react-native";
3
3
  /**
4
4
  * Animation modes for the marquee text
5
5
  */
@@ -10,7 +10,7 @@ declare enum AnimationMode {
10
10
  /**
11
11
  * Direction of the marquee animation
12
12
  */
13
- type MarqueeDirection = 'horizontal' | 'vertical';
13
+ type MarqueeDirection = "horizontal" | "vertical";
14
14
  /**
15
15
  * Props for the MarqueeText component
16
16
  */
@@ -1,7 +1,7 @@
1
- import * as React from 'react';
2
- import { StyleSheet, View, Text } from 'react-native';
3
- import { Gesture, GestureDetector } from 'react-native-gesture-handler';
4
- import Animated, { runOnJS, useAnimatedReaction, useAnimatedStyle, useSharedValue, useFrameCallback, withDecay, } from 'react-native-reanimated';
1
+ import * as React from "react";
2
+ import { StyleSheet, View, Text, } from "react-native";
3
+ import { Gesture, GestureDetector } from "react-native-gesture-handler";
4
+ import Animated, { runOnJS, useAnimatedReaction, useAnimatedStyle, useSharedValue, useFrameCallback, withDecay, } from "react-native-reanimated";
5
5
  /**
6
6
  * Animation modes for the marquee text
7
7
  */
@@ -17,16 +17,18 @@ var AnimatedChild = React.memo(function (_a) {
17
17
  var index = _a.index, children = _a.children, anim = _a.anim, contentMeasurement = _a.contentMeasurement, spacing = _a.spacing, direction = _a.direction;
18
18
  var style = useAnimatedStyle(function () {
19
19
  var _a;
20
- var isVertical = direction === 'vertical';
21
- var dimension = isVertical ? contentMeasurement.value.height : contentMeasurement.value.width;
20
+ var isVertical = direction === "vertical";
21
+ var dimension = isVertical
22
+ ? contentMeasurement.value.height
23
+ : contentMeasurement.value.width;
22
24
  if (dimension <= 0)
23
25
  return {};
24
26
  var position = (index - 1) * (dimension + spacing);
25
27
  var translation = -(anim.value % (dimension + spacing));
26
28
  return _a = {
27
- position: 'absolute'
29
+ position: "absolute"
28
30
  },
29
- _a[isVertical ? 'top' : 'left'] = position,
31
+ _a[isVertical ? "top" : "left"] = position,
30
32
  _a.transform = isVertical
31
33
  ? [{ translateY: translation }]
32
34
  : [{ translateX: translation }],
@@ -42,8 +44,12 @@ var AnimatedChild = React.memo(function (_a) {
42
44
  * modes, and user interaction via gestures.
43
45
  */
44
46
  var MarqueeText = React.forwardRef(function (_a, ref) {
45
- var children = _a.children, _b = _a.mode, mode = _b === void 0 ? AnimationMode.LOOP : _b, _c = _a.speed, speed = _c === void 0 ? 30 : _c, _d = _a.delay, delay = _d === void 0 ? 1500 : _d, _e = _a.endPauseDuration, endPauseDuration = _e === void 0 ? 1000 : _e, style = _a.style, textStyle = _a.textStyle, _f = _a.enabled, enabled = _f === void 0 ? true : _f, _g = _a.direction, direction = _g === void 0 ? 'horizontal' : _g, _h = _a.spacing, spacing = _h === void 0 ? 20 : _h, _j = _a.withGesture, withGesture = _j === void 0 ? true : _j, frameRate = _a.frameRate, _k = _a.reverse, reverse = _k === void 0 ? false : _k, _l = _a.backgroundColor, backgroundColor = _l === void 0 ? 'transparent' : _l, onAnimationStart = _a.onAnimationStart, onAnimationStop = _a.onAnimationStop;
46
- var isVertical = direction === 'vertical';
47
+ var children = _a.children, _b = _a.mode, mode = _b === void 0 ? AnimationMode.LOOP : _b, _c = _a.speed, speed = _c === void 0 ? 30 : _c, _d = _a.delay, delay = _d === void 0 ? 1500 : _d, _e = _a.endPauseDuration, endPauseDuration = _e === void 0 ? 1000 : _e, style = _a.style, textStyle = _a.textStyle, _f = _a.enabled, enabled = _f === void 0 ? true : _f, _g = _a.direction, direction = _g === void 0 ? "horizontal" : _g, _h = _a.spacing, spacing = _h === void 0 ? 20 : _h, _j = _a.withGesture, withGesture = _j === void 0 ? true : _j, frameRate = _a.frameRate, _k = _a.reverse, reverse = _k === void 0 ? false : _k, _l = _a.backgroundColor, backgroundColor = _l === void 0 ? "transparent" : _l, onAnimationStart = _a.onAnimationStart, onAnimationStop = _a.onAnimationStop;
48
+ var _m = React.useState({
49
+ width: 0,
50
+ height: 0,
51
+ }), contentSize = _m[0], setContentSize = _m[1];
52
+ var isVertical = direction === "vertical";
47
53
  var isBounceMode = mode === AnimationMode.BOUNCE;
48
54
  var containerMeasurement = useSharedValue({
49
55
  width: 0,
@@ -57,7 +63,7 @@ var MarqueeText = React.forwardRef(function (_a, ref) {
57
63
  x: 0,
58
64
  y: 0,
59
65
  });
60
- var _m = React.useState(0), cloneTimes = _m[0], setCloneTimes = _m[1];
66
+ var _o = React.useState(0), cloneTimes = _o[0], setCloneTimes = _o[1];
61
67
  var anim = useSharedValue(0);
62
68
  var isMounted = React.useRef(true);
63
69
  var isActive = useSharedValue(false);
@@ -74,8 +80,12 @@ var MarqueeText = React.forwardRef(function (_a, ref) {
74
80
  }, false);
75
81
  // Calculate how many clones we need to fill the screen
76
82
  useAnimatedReaction(function () {
77
- var contentDim = isVertical ? contentMeasurement.value.height : contentMeasurement.value.width;
78
- var containerDim = isVertical ? containerMeasurement.value.height : containerMeasurement.value.width;
83
+ var contentDim = isVertical
84
+ ? contentMeasurement.value.height
85
+ : contentMeasurement.value.width;
86
+ var containerDim = isVertical
87
+ ? containerMeasurement.value.height
88
+ : containerMeasurement.value.width;
79
89
  if (contentDim <= 0 || containerDim <= 0)
80
90
  return 0;
81
91
  // Need enough clones to fill the container plus buffer for continuous scrolling
@@ -102,7 +112,9 @@ var MarqueeText = React.forwardRef(function (_a, ref) {
102
112
  React.useImperativeHandle(ref, function () { return ({
103
113
  start: start,
104
114
  stop: stop,
105
- get isActive() { return isActive.value; }
115
+ get isActive() {
116
+ return isActive.value;
117
+ },
106
118
  }); });
107
119
  // Setup gesture handling
108
120
  var pan = React.useMemo(function () {
@@ -148,7 +160,7 @@ var MarqueeText = React.forwardRef(function (_a, ref) {
148
160
  }, [enabled, start, stop, delay]);
149
161
  // Render the content
150
162
  var renderContent = function () {
151
- if (typeof children === 'string') {
163
+ if (typeof children === "string") {
152
164
  return <Text style={textStyle}>{children}</Text>;
153
165
  }
154
166
  return children;
@@ -156,7 +168,15 @@ var MarqueeText = React.forwardRef(function (_a, ref) {
156
168
  return (<Animated.View style={[
157
169
  styles.container,
158
170
  { backgroundColor: backgroundColor },
159
- style
171
+ style,
172
+ {
173
+ height: isVertical && contentMeasurement.value.height > 0
174
+ ? contentMeasurement.value.height
175
+ : undefined,
176
+ width: !isVertical && contentMeasurement.value.width > 0
177
+ ? contentMeasurement.value.width
178
+ : undefined,
179
+ },
160
180
  ]} onLayout={function (ev) {
161
181
  containerMeasurement.value = ev.nativeEvent.layout;
162
182
  }} pointerEvents="box-none">
@@ -168,7 +188,7 @@ var MarqueeText = React.forwardRef(function (_a, ref) {
168
188
  }}>
169
189
  {renderContent()}
170
190
  </View>
171
-
191
+
172
192
  {/* Visible cloned elements */}
173
193
  {cloneTimes > 0 &&
174
194
  Array.from({ length: cloneTimes }).map(function (_, index) { return (<AnimatedChild key={"clone-".concat(index)} index={index} anim={anim} contentMeasurement={contentMeasurement} spacing={spacing} direction={direction}>
@@ -180,20 +200,20 @@ var MarqueeText = React.forwardRef(function (_a, ref) {
180
200
  });
181
201
  var styles = StyleSheet.create({
182
202
  container: {
183
- overflow: 'hidden',
203
+ overflow: "hidden",
184
204
  },
185
205
  hidden: {
186
206
  opacity: 0,
187
- position: 'absolute',
207
+ position: "absolute",
188
208
  zIndex: -1,
189
209
  },
190
210
  row: {
191
- flexDirection: 'row',
192
- position: 'relative',
211
+ flexDirection: "row",
212
+ position: "relative",
193
213
  },
194
214
  column: {
195
- flexDirection: 'column',
196
- position: 'relative',
215
+ flexDirection: "column",
216
+ position: "relative",
197
217
  },
198
218
  });
199
219
  export { AnimationMode };
package/package.json CHANGED
@@ -1,58 +1,60 @@
1
1
  {
2
- "name": "rn-marquee-text",
3
- "version": "2.0.8",
4
- "description": "A customizable marquee (scrolling) text component for React Native",
5
- "main": "index.js",
6
- "types": "index.d.ts",
7
- "scripts": {
8
- "test": "echo \"Error: no test specified\" && exit 1",
9
- "build": "tsc",
10
- "prepare": "npm run build"
11
- },
12
- "files": [
13
- "dist",
14
- "index.js",
15
- "README.md",
16
- "index.d.ts"
17
- ],
18
- "keywords": [
19
- "react-native",
20
- "marquee",
21
- "scrolling-text",
22
- "text",
23
- "animation",
24
- "react-native-component",
25
- "react",
26
- "native",
27
- "expo"
28
- ],
29
- "author": "Paresh Chavda",
30
- "license": "MIT",
31
- "repository": {
32
- "type": "git",
33
- "url": "git+https://github.com/pareshchavda/rn-marquee-text-public.git"
34
- },
35
- "bugs": {
36
- "url": "https://github.com/pareshchavda/rn-marquee-text-public/issues"
37
- },
38
- "homepage": "https://github.com/pareshchavda/rn-marquee-text-public#readme",
39
- "peerDependencies": {
40
- "prop-types": ">=15.0.0",
41
- "react": "*",
42
- "react-native": "*",
43
- "react-native-reanimated": ">=2.0.0"
44
- },
45
- "devDependencies": {
46
- "@types/react": "^19.1.2",
47
- "prop-types": "^15.8.1",
48
- "react": "^18.2.0",
49
- "react-native": "^0.72.17",
50
- "react-native-reanimated": "^3.17.5",
51
- "typescript": "^5.0.0"
52
- },
53
- "dependencies": {
54
- "@react-navigation/native": "^7.1.9",
55
- "react-native-gesture-handler": "^2.25.0",
56
- "rn-marquee-text": "^1.0.7"
57
- }
2
+ "name": "rn-marquee-text",
3
+ "version": "2.1.0-beta.2",
4
+ "description": "A customizable marquee (scrolling) text component for React Native",
5
+ "main": "index.js",
6
+ "types": "index.d.ts",
7
+ "scripts": {
8
+ "test": "echo \"Error: no test specified\" && exit 1",
9
+ "build": "tsc",
10
+ "prepare": "npm run build"
11
+ },
12
+ "publishConfig": {
13
+ "tag": "beta"
14
+ },
15
+ "files": [
16
+ "dist",
17
+ "index.js",
18
+ "README.md",
19
+ "index.d.ts"
20
+ ],
21
+ "keywords": [
22
+ "react-native",
23
+ "marquee",
24
+ "scrolling-text",
25
+ "text",
26
+ "animation",
27
+ "react-native-component",
28
+ "react",
29
+ "native",
30
+ "expo"
31
+ ],
32
+ "author": "Paresh Chavda",
33
+ "license": "MIT",
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "git+https://github.com/pareshchavda/rn-marquee-text-public.git"
37
+ },
38
+ "bugs": {
39
+ "url": "https://github.com/pareshchavda/rn-marquee-text-public/issues"
40
+ },
41
+ "homepage": "https://github.com/pareshchavda/rn-marquee-text-public#readme",
42
+ "peerDependencies": {
43
+ "prop-types": ">=15.0.0",
44
+ "react": "*",
45
+ "react-native": "*",
46
+ "react-native-reanimated": ">=2.0.0"
47
+ },
48
+ "devDependencies": {
49
+ "@types/react": "^19.1.2",
50
+ "prop-types": "^15.8.1",
51
+ "react": "^18.2.0",
52
+ "react-native": "^0.72.17",
53
+ "react-native-reanimated": "^3.17.5",
54
+ "typescript": "^5.0.0"
55
+ },
56
+ "dependencies": {
57
+ "@react-navigation/native": "^7.1.9",
58
+ "react-native-gesture-handler": "^2.25.0"
59
+ }
58
60
  }