@granite-js/lottie 1.0.17 → 1.0.19

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/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # @granite-js/lottie
2
2
 
3
+ ## 1.0.19
4
+
5
+ ### Patch Changes
6
+
7
+ - 6803c3e: fix: lottie props
8
+
9
+ ## 1.0.18
10
+
3
11
  ## 1.0.17
4
12
 
5
13
  ### Patch Changes
@@ -1,9 +1,35 @@
1
1
  "use strict";
2
2
 
3
- import React, { forwardRef, useImperativeHandle, useRef, useCallback, useMemo } from 'react';
3
+ import React, { forwardRef, useRef, useCallback, useMemo } from 'react';
4
4
  import { Image, Platform } from 'react-native';
5
5
  import NativeGraniteLottieView, { Commands } from './GraniteLottieViewNativeComponent';
6
6
  import { jsx as _jsx } from "react/jsx-runtime";
7
+ function assignRef(ref, value) {
8
+ if (typeof ref === 'function') {
9
+ ref(value);
10
+ return;
11
+ }
12
+ if (ref != null) {
13
+ ref.current = value;
14
+ }
15
+ }
16
+ function attachImperativeMethods(instance) {
17
+ const handle = instance;
18
+ handle.play = (startFrame, endFrame) => {
19
+ Commands.play(instance, startFrame ?? -1, endFrame ?? -1);
20
+ };
21
+ handle.pause = () => {
22
+ Commands.pause(instance);
23
+ };
24
+ handle.resume = () => {
25
+ Commands.resume(instance);
26
+ };
27
+ handle.reset = () => {
28
+ Commands.reset(instance);
29
+ };
30
+ return handle;
31
+ }
32
+
7
33
  // Helper to resolve animation source
8
34
  function resolveSource(source) {
9
35
  if (typeof source === 'number') {
@@ -89,30 +115,14 @@ export const LottieView = /*#__PURE__*/forwardRef((props, ref) => {
89
115
  ...restProps
90
116
  } = props;
91
117
  const nativeRef = useRef(null);
92
-
93
- // Imperative handle
94
- useImperativeHandle(ref, () => ({
95
- play: (startFrame, endFrame) => {
96
- if (nativeRef.current) {
97
- Commands.play(nativeRef.current, startFrame ?? -1, endFrame ?? -1);
98
- }
99
- },
100
- pause: () => {
101
- if (nativeRef.current) {
102
- Commands.pause(nativeRef.current);
103
- }
104
- },
105
- resume: () => {
106
- if (nativeRef.current) {
107
- Commands.resume(nativeRef.current);
108
- }
109
- },
110
- reset: () => {
111
- if (nativeRef.current) {
112
- Commands.reset(nativeRef.current);
113
- }
118
+ const handleRef = useCallback(instance => {
119
+ nativeRef.current = instance;
120
+ if (instance == null) {
121
+ assignRef(ref, null);
122
+ return;
114
123
  }
115
- }));
124
+ assignRef(ref, attachImperativeMethods(instance));
125
+ }, [ref]);
116
126
 
117
127
  // Resolve source
118
128
  const resolvedSource = useMemo(() => resolveSource(source), [source]);
@@ -172,7 +182,7 @@ export const LottieView = /*#__PURE__*/forwardRef((props, ref) => {
172
182
  nativeProps.textFiltersIOS = textFiltersIOS;
173
183
  }
174
184
  return /*#__PURE__*/_jsx(NativeGraniteLottieView, {
175
- ref: nativeRef,
185
+ ref: handleRef,
176
186
  ...nativeProps
177
187
  });
178
188
  });
@@ -1 +1 @@
1
- {"version":3,"names":["React","forwardRef","useImperativeHandle","useRef","useCallback","useMemo","Image","Platform","NativeGraniteLottieView","Commands","jsx","_jsx","resolveSource","source","resolved","resolveAssetSource","uri","endsWith","sourceDotLottieURI","sourceURL","startsWith","sourceName","sourceJson","JSON","stringify","LottieView","props","ref","style","progress","speed","duration","loop","autoPlay","resizeMode","renderMode","colorFilters","textFiltersIOS","textFiltersAndroid","enableMergePathsAndroidForKitKatAndAbove","enableSafeModeAndroid","hardwareAccelerationAndroid","cacheComposition","imageAssetsFolder","onAnimationFinish","onAnimationFailure","onAnimationLoaded","onAnimationLoop","testID","restProps","nativeRef","play","startFrame","endFrame","current","pause","resume","reset","resolvedSource","resolvedSpeed","fr","Math","round","op","handleAnimationFinish","event","nativeEvent","isCancelled","handleAnimationFailure","error","handleAnimationLoaded","handleAnimationLoop","nativeProps","undefined","OS","displayName"],"sourceRoot":"../../src","sources":["GraniteLottieView.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","forwardRef","useRef","useCallback","useMemo","Image","Platform","NativeGraniteLottieView","Commands","jsx","_jsx","assignRef","ref","value","current","attachImperativeMethods","instance","handle","play","startFrame","endFrame","pause","resume","reset","resolveSource","source","resolved","resolveAssetSource","uri","endsWith","sourceDotLottieURI","sourceURL","startsWith","sourceName","sourceJson","JSON","stringify","LottieView","props","style","progress","speed","duration","loop","autoPlay","resizeMode","renderMode","colorFilters","textFiltersIOS","textFiltersAndroid","enableMergePathsAndroidForKitKatAndAbove","enableSafeModeAndroid","hardwareAccelerationAndroid","cacheComposition","imageAssetsFolder","onAnimationFinish","onAnimationFailure","onAnimationLoaded","onAnimationLoop","testID","restProps","nativeRef","handleRef","resolvedSource","resolvedSpeed","fr","Math","round","op","handleAnimationFinish","event","nativeEvent","isCancelled","handleAnimationFailure","error","handleAnimationLoaded","handleAnimationLoop","nativeProps","undefined","OS","displayName"],"sourceRoot":"../../src","sources":["GraniteLottieView.tsx"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@granite-js/lottie",
3
- "version": "1.0.17",
3
+ "version": "1.0.19",
4
4
  "description": "Pluggable Lottie animation component for React Native",
5
5
  "type": "module",
6
6
  "main": "./dist/module/index.js",
@@ -1,4 +1,4 @@
1
- import React, { forwardRef, useImperativeHandle, useRef, useCallback, useMemo } from 'react';
1
+ import React, { forwardRef, useRef, useCallback, useMemo } from 'react';
2
2
  import { Image, type NativeSyntheticEvent, Platform } from 'react-native';
3
3
  import NativeGraniteLottieView, {
4
4
  Commands,
@@ -8,6 +8,39 @@ import NativeGraniteLottieView, {
8
8
  } from './GraniteLottieViewNativeComponent';
9
9
  import type { LottieViewProps, LottieViewRef, AnimationSource, AnimationObject } from './types';
10
10
 
11
+ type NativeLottieViewInstance = React.ElementRef<typeof NativeGraniteLottieView>;
12
+ type NativeLottieViewHandle = NativeLottieViewInstance & LottieViewRef;
13
+
14
+ function assignRef<T>(ref: React.ForwardedRef<T>, value: T | null) {
15
+ if (typeof ref === 'function') {
16
+ ref(value);
17
+ return;
18
+ }
19
+
20
+ if (ref != null) {
21
+ ref.current = value;
22
+ }
23
+ }
24
+
25
+ function attachImperativeMethods(instance: NativeLottieViewInstance): NativeLottieViewHandle {
26
+ const handle = instance as NativeLottieViewHandle;
27
+
28
+ handle.play = (startFrame?: number, endFrame?: number) => {
29
+ Commands.play(instance, startFrame ?? -1, endFrame ?? -1);
30
+ };
31
+ handle.pause = () => {
32
+ Commands.pause(instance);
33
+ };
34
+ handle.resume = () => {
35
+ Commands.resume(instance);
36
+ };
37
+ handle.reset = () => {
38
+ Commands.reset(instance);
39
+ };
40
+
41
+ return handle;
42
+ }
43
+
11
44
  // Helper to resolve animation source
12
45
  function resolveSource(source: AnimationSource): {
13
46
  sourceName?: string;
@@ -85,31 +118,21 @@ export const LottieView = forwardRef<LottieViewRef, LottieViewProps>((props, ref
85
118
  ...restProps
86
119
  } = props;
87
120
 
88
- const nativeRef = useRef<React.ElementRef<typeof NativeGraniteLottieView>>(null);
121
+ const nativeRef = useRef<NativeLottieViewInstance>(null);
89
122
 
90
- // Imperative handle
91
- useImperativeHandle(ref, () => ({
92
- play: (startFrame?: number, endFrame?: number) => {
93
- if (nativeRef.current) {
94
- Commands.play(nativeRef.current, startFrame ?? -1, endFrame ?? -1);
95
- }
96
- },
97
- pause: () => {
98
- if (nativeRef.current) {
99
- Commands.pause(nativeRef.current);
100
- }
101
- },
102
- resume: () => {
103
- if (nativeRef.current) {
104
- Commands.resume(nativeRef.current);
105
- }
106
- },
107
- reset: () => {
108
- if (nativeRef.current) {
109
- Commands.reset(nativeRef.current);
123
+ const handleRef = useCallback(
124
+ (instance: NativeLottieViewInstance | null) => {
125
+ nativeRef.current = instance;
126
+
127
+ if (instance == null) {
128
+ assignRef(ref, null);
129
+ return;
110
130
  }
131
+
132
+ assignRef(ref, attachImperativeMethods(instance));
111
133
  },
112
- }));
134
+ [ref]
135
+ );
113
136
 
114
137
  // Resolve source
115
138
  const resolvedSource = useMemo(() => resolveSource(source), [source]);
@@ -176,8 +199,7 @@ export const LottieView = forwardRef<LottieViewRef, LottieViewProps>((props, ref
176
199
  nativeProps.textFiltersIOS = textFiltersIOS;
177
200
  }
178
201
 
179
- return <NativeGraniteLottieView ref={nativeRef} {...nativeProps} />;
180
-
202
+ return <NativeGraniteLottieView ref={handleRef} {...nativeProps} />;
181
203
  });
182
204
 
183
205
  LottieView.displayName = 'LottieView';