@onekeyfe/react-native-image 6.7.0-alpha.415 → 6.7.0-alpha.421
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 +12 -0
- package/android/build.gradle +3 -1
- package/android/src/main/java/com/margelo/nitro/onekeyimage/OneKeyIcon.kt +93 -0
- package/android/src/main/java/com/margelo/nitro/onekeyimage/OneKeyImageGlideRegistry.kt +1 -1
- package/android/src/main/java/com/margelo/nitro/onekeyimage/OneKeyImagePackage.kt +2 -1
- package/android/src/main/java/com/margelo/nitro/onekeyimage/OneKeyNamedSVG.kt +217 -0
- package/android/src/main/java/com/margelo/nitro/onekeyimage/OneKeySVG.kt +31 -0
- package/ios/OneKeyIcon.swift +90 -0
- package/ios/OneKeyImageCoderBridge.h +4 -0
- package/ios/OneKeyImageCoderBridge.m +9 -0
- package/ios/OneKeyNamedSVG.swift +282 -0
- package/ios/tests/OneKeyIconTests.swift +484 -0
- package/lib/module/OneKeyIcon.nitro.js +4 -0
- package/lib/module/icon/assetUrls.js +13 -0
- package/lib/module/icon/dom.js +21 -0
- package/lib/module/icon/index.js +29 -0
- package/lib/module/icon/index.web.js +32 -0
- package/lib/module/icon/props.js +22 -0
- package/lib/module/package.json +6 -1
- package/lib/nitrogen/generated/android/c++/JHybridOneKeyIconSpec.cpp +67 -0
- package/lib/nitrogen/generated/android/c++/JHybridOneKeyIconSpec.hpp +66 -0
- package/lib/nitrogen/generated/android/c++/views/JHybridOneKeyIconStateUpdater.cpp +79 -0
- package/lib/nitrogen/generated/android/c++/views/JHybridOneKeyIconStateUpdater.hpp +54 -0
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/HybridOneKeyIconSpec.kt +65 -0
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/views/HybridOneKeyIconManager.kt +96 -0
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/views/HybridOneKeyIconStateUpdater.kt +23 -0
- package/lib/nitrogen/generated/android/onekeyimage+autolinking.cmake +4 -0
- package/lib/nitrogen/generated/android/onekeyimageOnLoad.cpp +18 -0
- package/lib/nitrogen/generated/ios/OneKeyImage-Swift-Cxx-Bridge.cpp +17 -0
- package/lib/nitrogen/generated/ios/OneKeyImage-Swift-Cxx-Bridge.hpp +32 -15
- package/lib/nitrogen/generated/ios/OneKeyImage-Swift-Cxx-Umbrella.hpp +5 -0
- package/lib/nitrogen/generated/ios/OneKeyImageAutolinking.mm +8 -0
- package/lib/nitrogen/generated/ios/OneKeyImageAutolinking.swift +12 -0
- package/lib/nitrogen/generated/ios/c++/HybridOneKeyIconSpecSwift.cpp +11 -0
- package/lib/nitrogen/generated/ios/c++/HybridOneKeyIconSpecSwift.hpp +89 -0
- package/lib/nitrogen/generated/ios/c++/views/HybridOneKeyIconComponent.mm +150 -0
- package/lib/nitrogen/generated/ios/swift/HybridOneKeyIconSpec.swift +56 -0
- package/lib/nitrogen/generated/ios/swift/HybridOneKeyIconSpec_cxx.swift +193 -0
- package/lib/nitrogen/generated/shared/c++/HybridOneKeyIconSpec.cpp +24 -0
- package/lib/nitrogen/generated/shared/c++/HybridOneKeyIconSpec.hpp +66 -0
- package/lib/nitrogen/generated/shared/c++/views/HybridOneKeyIconComponent.cpp +36 -0
- package/lib/nitrogen/generated/shared/c++/views/HybridOneKeyIconComponent.hpp +88 -0
- package/lib/nitrogen/generated/shared/json/OneKeyIconConfig.json +11 -0
- package/lib/typescript/src/OneKeyIcon.nitro.d.ts +7 -0
- package/lib/typescript/src/icon/assetUrls.d.ts +2 -0
- package/lib/typescript/src/icon/dom.d.ts +3 -0
- package/lib/typescript/src/icon/index.d.ts +140 -0
- package/lib/typescript/src/icon/index.web.d.ts +134 -0
- package/lib/typescript/src/icon/props.d.ts +8 -0
- package/nitro.json +10 -0
- package/nitrogen/generated/android/c++/JHybridOneKeyIconSpec.cpp +67 -0
- package/nitrogen/generated/android/c++/JHybridOneKeyIconSpec.hpp +66 -0
- package/nitrogen/generated/android/c++/views/JHybridOneKeyIconStateUpdater.cpp +79 -0
- package/nitrogen/generated/android/c++/views/JHybridOneKeyIconStateUpdater.hpp +54 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/HybridOneKeyIconSpec.kt +65 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/views/HybridOneKeyIconManager.kt +96 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/views/HybridOneKeyIconStateUpdater.kt +23 -0
- package/nitrogen/generated/android/onekeyimage+autolinking.cmake +4 -0
- package/nitrogen/generated/android/onekeyimageOnLoad.cpp +18 -0
- package/nitrogen/generated/ios/OneKeyImage-Swift-Cxx-Bridge.cpp +17 -0
- package/nitrogen/generated/ios/OneKeyImage-Swift-Cxx-Bridge.hpp +32 -15
- package/nitrogen/generated/ios/OneKeyImage-Swift-Cxx-Umbrella.hpp +5 -0
- package/nitrogen/generated/ios/OneKeyImageAutolinking.mm +8 -0
- package/nitrogen/generated/ios/OneKeyImageAutolinking.swift +12 -0
- package/nitrogen/generated/ios/c++/HybridOneKeyIconSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridOneKeyIconSpecSwift.hpp +89 -0
- package/nitrogen/generated/ios/c++/views/HybridOneKeyIconComponent.mm +150 -0
- package/nitrogen/generated/ios/swift/HybridOneKeyIconSpec.swift +56 -0
- package/nitrogen/generated/ios/swift/HybridOneKeyIconSpec_cxx.swift +193 -0
- package/nitrogen/generated/shared/c++/HybridOneKeyIconSpec.cpp +24 -0
- package/nitrogen/generated/shared/c++/HybridOneKeyIconSpec.hpp +66 -0
- package/nitrogen/generated/shared/c++/views/HybridOneKeyIconComponent.cpp +36 -0
- package/nitrogen/generated/shared/c++/views/HybridOneKeyIconComponent.hpp +88 -0
- package/nitrogen/generated/shared/json/OneKeyIconConfig.json +11 -0
- package/package.json +40 -7
- package/scripts/configure-icon-imports.mjs +7 -0
- package/scripts/icon-fixtures.test.mjs +398 -0
- package/src/OneKeyIcon.nitro.ts +8 -0
- package/src/icon/assetUrls.ts +13 -0
- package/src/icon/dom.ts +21 -0
- package/src/icon/index.tsx +38 -0
- package/src/icon/index.web.tsx +36 -0
- package/src/icon/props.ts +38 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { createElement } from 'react';
|
|
2
|
+
import { View } from 'react-native';
|
|
3
|
+
import { isIconName, type OneKeyIconProps } from './props';
|
|
4
|
+
import type { TextStyle } from 'react-native';
|
|
5
|
+
import { iconResourceHref } from '#onekey-icon-assets';
|
|
6
|
+
|
|
7
|
+
export type { OneKeyIconProps } from './props';
|
|
8
|
+
|
|
9
|
+
export function OneKeyIcon({
|
|
10
|
+
name,
|
|
11
|
+
color,
|
|
12
|
+
style,
|
|
13
|
+
...viewProps
|
|
14
|
+
}: OneKeyIconProps) {
|
|
15
|
+
const defaultStyle: TextStyle = {
|
|
16
|
+
width: 24,
|
|
17
|
+
height: 24,
|
|
18
|
+
color: color ?? '#000000',
|
|
19
|
+
};
|
|
20
|
+
const href = isIconName(name) ? iconResourceHref(name) : undefined;
|
|
21
|
+
return createElement(
|
|
22
|
+
View,
|
|
23
|
+
{ ...viewProps, style: [defaultStyle, style] },
|
|
24
|
+
href
|
|
25
|
+
? createElement('svg', {
|
|
26
|
+
'width': '100%',
|
|
27
|
+
'height': '100%',
|
|
28
|
+
'aria-hidden': true,
|
|
29
|
+
'focusable': false,
|
|
30
|
+
'children': createElement('use', {
|
|
31
|
+
href,
|
|
32
|
+
}),
|
|
33
|
+
})
|
|
34
|
+
: null
|
|
35
|
+
);
|
|
36
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ViewProps } from 'react-native';
|
|
2
|
+
|
|
3
|
+
export interface OneKeyIconProps extends Omit<ViewProps, 'children'> {
|
|
4
|
+
name: string;
|
|
5
|
+
color?: string;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export function normalizeIconColor(input = '#000000'): string | undefined {
|
|
9
|
+
const hex = /^#([\da-f]{3}|[\da-f]{4}|[\da-f]{6}|[\da-f]{8})$/i.exec(input);
|
|
10
|
+
if (hex) {
|
|
11
|
+
let value = hex[1]!;
|
|
12
|
+
if (value.length < 5)
|
|
13
|
+
value = [...value].map((part) => part + part).join('');
|
|
14
|
+
const channels = [0, 2, 4].map((start) =>
|
|
15
|
+
parseInt(value.slice(start, start + 2), 16)
|
|
16
|
+
);
|
|
17
|
+
const alpha = value.length === 8 ? parseInt(value.slice(6), 16) / 255 : 1;
|
|
18
|
+
return `rgba(${channels.join(',')},${alpha})`;
|
|
19
|
+
}
|
|
20
|
+
const rgb =
|
|
21
|
+
/^(rgb|rgba)\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*((?:\d+(?:\.\d*)?|\.\d+))\s*)?\)$/.exec(
|
|
22
|
+
input
|
|
23
|
+
);
|
|
24
|
+
if (!rgb || (rgb[1] === 'rgba') !== (rgb[5] !== undefined)) return undefined;
|
|
25
|
+
const channels = rgb.slice(2, 5).map(Number);
|
|
26
|
+
const alpha = Number(rgb[5] ?? 1);
|
|
27
|
+
if (
|
|
28
|
+
channels.some((value) => value > 255) ||
|
|
29
|
+
!Number.isFinite(alpha) ||
|
|
30
|
+
alpha > 1
|
|
31
|
+
)
|
|
32
|
+
return undefined;
|
|
33
|
+
return `rgba(${channels.join(',')},${Math.round(alpha * 255) / 255})`;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export function isIconName(name: string): boolean {
|
|
37
|
+
return /^[A-Z][A-Za-z0-9]*$/.test(name);
|
|
38
|
+
}
|