react-native-vector-image 0.5.0 → 0.5.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.
- package/README.md +14 -0
- package/package.json +1 -1
- package/src/cli/getAssets.js +9 -3
- package/src/index.d.ts +5 -1
- package/src/index.js +14 -7
package/README.md
CHANGED
|
@@ -86,6 +86,20 @@ yarn react-native run-ios
|
|
|
86
86
|
yarn react-native run-android
|
|
87
87
|
```
|
|
88
88
|
|
|
89
|
+
### Optional: using source/drawable
|
|
90
|
+
|
|
91
|
+
If you need to use the underlying image source/drawable you can use the `VectorImage.resolveAssetSource` method, for example with Expo's native tabs:
|
|
92
|
+
|
|
93
|
+
```tsx
|
|
94
|
+
const iconSource = VectorImage.resolveAssetSource(require('./icon.svg'));
|
|
95
|
+
|
|
96
|
+
return (
|
|
97
|
+
<NativeTabs.Trigger name="index">
|
|
98
|
+
<Icon src={iconSource} drawable={iconSource.uri} />
|
|
99
|
+
</NativeTabs.Trigger>
|
|
100
|
+
);
|
|
101
|
+
```
|
|
102
|
+
|
|
89
103
|
## Troubleshooting
|
|
90
104
|
|
|
91
105
|
### `generate` command outputs "Error while parsing image.svg"
|
package/package.json
CHANGED
package/src/cli/getAssets.js
CHANGED
|
@@ -1,14 +1,20 @@
|
|
|
1
|
-
const
|
|
1
|
+
const server = require('metro/private/Server');
|
|
2
2
|
const { loadConfig } = require('metro-config');
|
|
3
3
|
const output = require('metro/private/shared/output/bundle');
|
|
4
4
|
|
|
5
|
+
const Server = server.Server || server.default || server;
|
|
5
6
|
const getBabelTransformerPath = () => {
|
|
6
7
|
try {
|
|
7
8
|
// for RN 73+
|
|
8
9
|
return require.resolve('@react-native/metro-babel-transformer');
|
|
9
10
|
} catch (e) {
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
try {
|
|
12
|
+
// for Expo
|
|
13
|
+
return require.resolve('@expo/metro-config/babel-transformer');
|
|
14
|
+
} catch (e) {
|
|
15
|
+
// to ensure backwards compatibility with old RN versions (RN < 73)
|
|
16
|
+
return require.resolve('metro-react-native-babel-transformer');
|
|
17
|
+
}
|
|
12
18
|
}
|
|
13
19
|
};
|
|
14
20
|
|
package/src/index.d.ts
CHANGED
|
@@ -8,6 +8,10 @@ export interface VectorImageProps extends ImageProps {
|
|
|
8
8
|
source: ImageRequireSource;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
export function resolveVectorAssetSource(source: ImageRequireSource): ImageRequireSource | null;
|
|
12
|
+
|
|
13
|
+
declare const VectorImage: React.FunctionComponent<VectorImageProps> & {
|
|
14
|
+
resolveAssetSource: typeof resolveVectorAssetSource;
|
|
15
|
+
};
|
|
12
16
|
|
|
13
17
|
export default VectorImage;
|
package/src/index.js
CHANGED
|
@@ -3,20 +3,27 @@ import { Image } from 'react-native';
|
|
|
3
3
|
import { getAssetByID } from '@react-native/assets-registry/registry';
|
|
4
4
|
import getResourceName from './getResourceName';
|
|
5
5
|
|
|
6
|
-
export
|
|
6
|
+
export function resolveVectorAssetSource(source) {
|
|
7
7
|
const asset = getAssetByID(source);
|
|
8
|
+
if (!asset) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
const resourceName = getResourceName(asset);
|
|
12
|
+
return { uri: resourceName,width: asset.width, height: asset.height }
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export default function VectorImage({ source, ...props }) {
|
|
16
|
+
const asset = resolveVectorAssetSource(source);
|
|
8
17
|
if (!asset) {
|
|
9
18
|
console.warn(
|
|
10
19
|
`No asset registered for source "${source}", you may have to generate assets and recompile`
|
|
11
20
|
);
|
|
12
21
|
return null;
|
|
13
22
|
}
|
|
14
|
-
|
|
23
|
+
|
|
15
24
|
return (
|
|
16
|
-
<Image
|
|
17
|
-
source={{ uri: resourceName }}
|
|
18
|
-
style={[{ width: asset.width, height: asset.height }, style]}
|
|
19
|
-
{...props}
|
|
20
|
-
/>
|
|
25
|
+
<Image source={asset} {...props} />
|
|
21
26
|
);
|
|
22
27
|
}
|
|
28
|
+
|
|
29
|
+
VectorImage.resolveAssetSource = resolveVectorAssetSource;
|