@hxa-rn/react-native-splash-view 0.0.21-beta.1
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/LICENSE +21 -0
- package/README.md +237 -0
- package/dist/commonjs/index.js +16 -0
- package/dist/commonjs/index.js.map +1 -0
- package/dist/commonjs/specs/v1/NativeSplashView.js +9 -0
- package/dist/commonjs/specs/v1/NativeSplashView.js.map +1 -0
- package/dist/module/index.js +8 -0
- package/dist/module/index.js.map +1 -0
- package/dist/module/specs/v1/NativeSplashView.js +3 -0
- package/dist/module/specs/v1/NativeSplashView.js.map +1 -0
- package/dist/typescript/index.d.ts +2 -0
- package/dist/typescript/specs/v1/NativeSplashView.d.ts +7 -0
- package/harmony/splash_view/LICENSE +21 -0
- package/harmony/splash_view/NOTICE +33 -0
- package/harmony/splash_view/OAT.xml +38 -0
- package/harmony/splash_view/build-profile.json5 +16 -0
- package/harmony/splash_view/hvigorfile.ts +2 -0
- package/harmony/splash_view/index.ets +3 -0
- package/harmony/splash_view/oh-package.json5 +14 -0
- package/harmony/splash_view/src/main/cpp/CMakeLists.txt +15 -0
- package/harmony/splash_view/src/main/cpp/SplashViewPackage.h +13 -0
- package/harmony/splash_view/src/main/cpp/generated/RNOH/generated/BaseSplashViewPackage.h +72 -0
- package/harmony/splash_view/src/main/cpp/generated/RNOH/generated/dummy.cpp +2 -0
- package/harmony/splash_view/src/main/cpp/generated/RNOH/generated/turbo_modules/SplashView.cpp +17 -0
- package/harmony/splash_view/src/main/cpp/generated/RNOH/generated/turbo_modules/SplashView.h +16 -0
- package/harmony/splash_view/src/main/cpp/generated/react/renderer/components/splash_view/ComponentDescriptors.h +24 -0
- package/harmony/splash_view/src/main/cpp/generated/react/renderer/components/splash_view/EventEmitters.cpp +16 -0
- package/harmony/splash_view/src/main/cpp/generated/react/renderer/components/splash_view/EventEmitters.h +17 -0
- package/harmony/splash_view/src/main/cpp/generated/react/renderer/components/splash_view/Props.cpp +19 -0
- package/harmony/splash_view/src/main/cpp/generated/react/renderer/components/splash_view/Props.h +18 -0
- package/harmony/splash_view/src/main/cpp/generated/react/renderer/components/splash_view/ShadowNodes.cpp +17 -0
- package/harmony/splash_view/src/main/cpp/generated/react/renderer/components/splash_view/ShadowNodes.h +23 -0
- package/harmony/splash_view/src/main/cpp/generated/react/renderer/components/splash_view/States.cpp +16 -0
- package/harmony/splash_view/src/main/cpp/generated/react/renderer/components/splash_view/States.h +19 -0
- package/harmony/splash_view/src/main/ets/Logger.ts +26 -0
- package/harmony/splash_view/src/main/ets/SplashViewContent.ets +64 -0
- package/harmony/splash_view/src/main/ets/SplashViewTurboModule.ts +156 -0
- package/harmony/splash_view/src/main/ets/SplashViewTurboModulesFactory.ets +18 -0
- package/harmony/splash_view/src/main/ets/generated/index.ets +5 -0
- package/harmony/splash_view/src/main/ets/generated/ts.ts +5 -0
- package/harmony/splash_view/src/main/ets/generated/turboModules/SplashView.ts +16 -0
- package/harmony/splash_view/src/main/ets/generated/turboModules/ts.ts +5 -0
- package/harmony/splash_view/src/main/module.json5 +13 -0
- package/harmony/splash_view/src/main/resources/base/element/string.json +8 -0
- package/harmony/splash_view/src/main/resources/en_US/element/string.json +8 -0
- package/harmony/splash_view/src/main/resources/zh_CN/element/string.json +8 -0
- package/harmony/splash_view.har +0 -0
- package/package.json +72 -0
- package/src/index.tsx +8 -0
- package/src/specs/v1/.gitkeep +1 -0
- package/src/specs/v1/NativeSplashView.ts +9 -0
- package/src/specs/v2/.gitkeep +1 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 hxa-rn
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
# react-native-splash-view
|
|
2
|
+
|
|
3
|
+
本项目基于 [react-native-splash-view](https://github.com/jagnesh/react-native-splash-view) 开发。如果在使用过程中有任何问题,欢迎在 AtomGit 提交 Issue,会及时跟进。
|
|
4
|
+
|
|
5
|
+
## 项目介绍
|
|
6
|
+
|
|
7
|
+
`react-native-splash-view` 为 React Native 应用提供轻量级启动闪屏(Splash Screen)能力。鸿蒙适配包 `@hxa-rn/react-native-splash-view`(当前版本 **0.0.21-beta.1**)基于 TurboModule 实现,包含 JS 封装层与原生 HAR(`harmony/splash_view/`)。
|
|
8
|
+
|
|
9
|
+
核心能力:
|
|
10
|
+
|
|
11
|
+
- JS 侧调用 `showSplash()` 展示全屏闪屏;
|
|
12
|
+
- JS 侧调用 `hideSplash()` 以淡出动画关闭闪屏并释放窗口;
|
|
13
|
+
- 宿主工程可在 RN 加载前于原生层预展示闪屏(`EntryAbility.onWindowStageCreate` 集成)。
|
|
14
|
+
|
|
15
|
+
业务代码仍通过原库名导入:`import { showSplash, hideSplash } from 'react-native-splash-view'`。
|
|
16
|
+
|
|
17
|
+
## 集成指南
|
|
18
|
+
|
|
19
|
+
### 安装
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm install @hxa-rn/react-native-splash-view
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### 导入说明
|
|
26
|
+
|
|
27
|
+
`package.json` 中配置了 `harmony.alias: "react-native-splash-view"`,业务侧继续使用:
|
|
28
|
+
|
|
29
|
+
```tsx
|
|
30
|
+
import { showSplash, hideSplash } from 'react-native-splash-view';
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### 依赖要求
|
|
34
|
+
|
|
35
|
+
| 依赖 | 版本要求 |
|
|
36
|
+
|------|----------|
|
|
37
|
+
| react-native | >= 0.72 |
|
|
38
|
+
| react | * |
|
|
39
|
+
| Node.js | >= 18 |
|
|
40
|
+
|
|
41
|
+
### Autolink
|
|
42
|
+
|
|
43
|
+
本模块支持 Autolink(`harmony.autolinking` 已配置 `SplashViewPackage` 的 ETS / C++ 注册)。工程已接入 RNOH Autolink 时,通常无需手动注册 Package。
|
|
44
|
+
|
|
45
|
+
若 Autolink 未生效,可按以下步骤手动集成:
|
|
46
|
+
|
|
47
|
+
**1. 引入原生依赖**
|
|
48
|
+
|
|
49
|
+
在 `entry/oh-package.json5` 添加:
|
|
50
|
+
|
|
51
|
+
```json
|
|
52
|
+
"dependencies": {
|
|
53
|
+
"@hxa-rn/react-native-splash-view": "file:../../node_modules/@hxa-rn/react-native-splash-view/harmony/splash_view.har"
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
执行 `ohpm install`。
|
|
58
|
+
|
|
59
|
+
**2. 配置 CMakeLists**
|
|
60
|
+
|
|
61
|
+
在 `entry/src/main/cpp/CMakeLists.txt` 添加:
|
|
62
|
+
|
|
63
|
+
```cmake
|
|
64
|
+
set(OH_MODULES "${CMAKE_CURRENT_SOURCE_DIR}/../../../oh_modules")
|
|
65
|
+
|
|
66
|
+
add_subdirectory("${OH_MODULES}/@hxa-rn/react-native-splash-view/src/main/cpp" ./splash_view)
|
|
67
|
+
|
|
68
|
+
target_link_libraries(rnoh_app PUBLIC splash_view)
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**3. 注册 Package**
|
|
72
|
+
|
|
73
|
+
ETS 侧 `SplashViewPackage` 为包默认导出。在 `RNPackagesFactory.ets`:
|
|
74
|
+
|
|
75
|
+
```ets
|
|
76
|
+
import SplashViewPackage from '@hxa-rn/react-native-splash-view';
|
|
77
|
+
|
|
78
|
+
new SplashViewPackage(ctx)
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
C++ 侧在 `PackageProvider.cpp`:
|
|
82
|
+
|
|
83
|
+
```text
|
|
84
|
+
#include "SplashViewPackage.h"
|
|
85
|
+
|
|
86
|
+
std::make_shared<SplashViewPackage>(ctx)
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**4. 宿主闪屏页集成(必需)**
|
|
90
|
+
|
|
91
|
+
在 `EntryAbility.onWindowStageCreate` 中、`super.onWindowStageCreate` 之前调用(`windowStage` 为该回调参数):
|
|
92
|
+
|
|
93
|
+
```ets
|
|
94
|
+
import { SplashViewTurboModule } from '@hxa-rn/react-native-splash-view';
|
|
95
|
+
|
|
96
|
+
SplashViewTurboModule.showSplashView(windowStage, 'pages/SplashViewPage');
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
并创建嵌入 `SplashViewContent` 的启动页(参考本仓库 `example/harmony/entry/src/main/ets/pages/SplashViewPage.ets`)。该步骤用于存储 `windowStage`,JS 侧 `showSplash()` 方可创建全屏子窗口;冷启动时也可在此预展示闪屏。
|
|
100
|
+
|
|
101
|
+
## 使用说明
|
|
102
|
+
|
|
103
|
+
### 展示与关闭闪屏
|
|
104
|
+
|
|
105
|
+
```tsx
|
|
106
|
+
import { showSplash, hideSplash } from 'react-native-splash-view';
|
|
107
|
+
|
|
108
|
+
// 展示全屏闪屏(覆盖整个应用界面,置顶显示)
|
|
109
|
+
showSplash();
|
|
110
|
+
|
|
111
|
+
// 业务就绪后再关闭。子窗口创建是异步的,不要在同一同步调用栈里立刻 hideSplash(),
|
|
112
|
+
// 否则窗口尚未建立,hide 会空操作。
|
|
113
|
+
setTimeout(() => {
|
|
114
|
+
hideSplash();
|
|
115
|
+
}, 2000);
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### 典型场景
|
|
119
|
+
|
|
120
|
+
**冷启动预展示 + RN 首帧后关闭**
|
|
121
|
+
|
|
122
|
+
宿主在 `EntryAbility.onWindowStageCreate` 预展示闪屏;RN 首帧就绪后在 JS 中调用 `hideSplash()`:
|
|
123
|
+
|
|
124
|
+
```tsx
|
|
125
|
+
import { useEffect } from 'react';
|
|
126
|
+
import { hideSplash } from 'react-native-splash-view';
|
|
127
|
+
|
|
128
|
+
useEffect(() => {
|
|
129
|
+
hideSplash();
|
|
130
|
+
}, []);
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
**仅 JS 侧按需展示**
|
|
134
|
+
|
|
135
|
+
确认宿主已集成 `showSplashView` 后,在业务逻辑中调用 `showSplash()` / `hideSplash()` 即可。
|
|
136
|
+
|
|
137
|
+
### 行为说明
|
|
138
|
+
|
|
139
|
+
- `showSplash()`:复用宿主存储的 `windowStage` 异步创建全屏子窗口;闪屏已在展示时(含原生预展示)安全忽略。
|
|
140
|
+
- `hideSplash()`:在启动页 UIContext 上执行约 0.1s 延时 + 0.3s 淡出动画,完成后销毁子窗口;闪屏未展示或已关闭时为空操作。
|
|
141
|
+
- 若宿主未集成 `showSplashView`,`showSplash()` 会安全返回并打印告警,不会崩溃。
|
|
142
|
+
- `showSplash()` 与 `hideSplash()` 不要在同一同步调用栈中连调:创建子窗口未完成时,`hideSplash()` 会因窗口尚未建立而空操作。
|
|
143
|
+
|
|
144
|
+
## 接口文档
|
|
145
|
+
|
|
146
|
+
模块对外暴露 TurboModule `SplashView`,JS 侧通过 `showSplash` / `hideSplash` 两个函数调用。无常量、无事件。
|
|
147
|
+
|
|
148
|
+
| API | 签名 | 说明 | 参数 | 返回值 |
|
|
149
|
+
|-----|------|------|------|--------|
|
|
150
|
+
| `showSplash` | `showSplash(): void` | 展示全屏闪屏;已在展示时安全忽略 | 无 | `void` |
|
|
151
|
+
| `hideSplash` | `hideSplash(): void` | 隐藏闪屏(淡出动画后释放窗口);未展示时安全空操作 | 无 | `void` |
|
|
152
|
+
|
|
153
|
+
### 平台差异
|
|
154
|
+
|
|
155
|
+
- 鸿蒙采用「全屏子窗口 + ArkUI 启动页」展示闪屏,与 Android Dialog / iOS 独立 UIWindow 机制不同,但 JS 调用语义一致。
|
|
156
|
+
- 闪屏 UI 内容由宿主启动页(如 `SplashViewPage`)决定,需自行嵌入 `SplashViewContent` 或自定义布局。
|
|
157
|
+
- 原生预展示入口为 `SplashViewTurboModule.showSplashView(windowStage, pageUrl)`,不属于 JS 公开契约,但推荐在 `EntryAbility` 中集成。
|
|
158
|
+
|
|
159
|
+
## 快速验证(运行 Example)
|
|
160
|
+
|
|
161
|
+
### 前置条件
|
|
162
|
+
|
|
163
|
+
| 依赖 | 版本要求 |
|
|
164
|
+
|------|----------|
|
|
165
|
+
| Node.js | >= 18(运行 Example 建议 >= 20,见 `example/package.json`) |
|
|
166
|
+
| DevEco Studio | 5.0+ / 6.0+ |
|
|
167
|
+
| HarmonyOS SDK | API 13+(`example/harmony` 的 `compatibleSdkVersion` 为 `5.0.1(13)`) |
|
|
168
|
+
|
|
169
|
+
### 运行步骤
|
|
170
|
+
|
|
171
|
+
**1. 克隆仓库**
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
git clone https://gitcode.com/hxa-rn/react-native-splash-view.git
|
|
175
|
+
cd react-native-splash-view
|
|
176
|
+
git checkout br_rnoh0.72
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
**2. 进入 example 目录,安装依赖**
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
cd example
|
|
183
|
+
npm install --legacy-peer-deps
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Example 已改为从 npm 公仓安装 `@hxa-rn/react-native-splash-view@0.0.21-beta.1`,不再使用本地 `file:../xxx.tgz`,运行 Example 不必再执行 `npm pack`。
|
|
187
|
+
|
|
188
|
+
**3. 生成 JS Bundle**
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
npm run dev
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
产物:`harmony/entry/src/main/resources/rawfile/bundle.harmony.js`
|
|
195
|
+
|
|
196
|
+
**4. 安装鸿蒙依赖**
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
cd harmony
|
|
200
|
+
ohpm install
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
**5. 用 DevEco Studio 打开鸿蒙工程**
|
|
204
|
+
|
|
205
|
+
- 打开 DevEco Studio
|
|
206
|
+
- 选择 `example/harmony` 目录
|
|
207
|
+
- 首次构建请在 **File → Project Structure → Signing Configs** 勾选 **Automatically generate signature**,Apply 后 Sync
|
|
208
|
+
- 等待 Sync 完成
|
|
209
|
+
|
|
210
|
+
**6. 编译并运行 HAP**
|
|
211
|
+
|
|
212
|
+
在 DevEco Studio 中点击运行按钮,将 HAP 安装到设备/模拟器。
|
|
213
|
+
|
|
214
|
+
> **注意**:Example 已预置 Autolinking Package 注册、Metro alias 与 HAR 依赖,无需手动 Link。编 HAP 前必须先执行 `npm run dev`。
|
|
215
|
+
|
|
216
|
+
## 约束与限制
|
|
217
|
+
|
|
218
|
+
| 项目 | 说明 |
|
|
219
|
+
| ---- | ---- |
|
|
220
|
+
| React Native / RNOH | 对等依赖 `react-native >= 0.72`。Example 使用 `react-native@0.72.5` 与 `@react-native-oh/react-native-harmony@0.72.139`(TurboModule 新架构) |
|
|
221
|
+
| HarmonyOS SDK | `example/harmony` 的 `compatibleSdkVersion` 为 `5.0.1(13)` |
|
|
222
|
+
| Node.js | 根目录 `engines.node` 为 `>=18` |
|
|
223
|
+
| 权限 | 库 HAR `requestPermissions` 为空,无额外系统权限 |
|
|
224
|
+
| 架构 | 仅支持 TurboModule 新架构,不支持旧架构 Interop Layer |
|
|
225
|
+
| 宿主预展示 | `showSplash()` 依赖宿主先调用 `SplashViewTurboModule.showSplashView` 存储 `windowStage`,否则无法创建闪屏窗口 |
|
|
226
|
+
| 重复调用 | 重复调用 `showSplash()` / `hideSplash()` 均为安全操作,不会产生异常 |
|
|
227
|
+
|
|
228
|
+
## 开源license
|
|
229
|
+
|
|
230
|
+
本项目基于 MIT 协议,详见 [LICENSE](LICENSE) 文件。
|
|
231
|
+
|
|
232
|
+
## 问题反馈渠道
|
|
233
|
+
|
|
234
|
+
如在集成或使用过程中遇到问题,可通过以下渠道反馈:
|
|
235
|
+
|
|
236
|
+
- AtomGit / GitCode Issue:https://gitcode.com/hxa-rn/react-native-splash-view/issues
|
|
237
|
+
- 仓库地址:https://gitcode.com/hxa-rn/react-native-splash-view
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.hideSplash = hideSplash;
|
|
7
|
+
exports.showSplash = showSplash;
|
|
8
|
+
var _NativeSplashView = _interopRequireDefault(require("./specs/v1/NativeSplashView"));
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
function showSplash() {
|
|
11
|
+
return _NativeSplashView.default.showSplash();
|
|
12
|
+
}
|
|
13
|
+
function hideSplash() {
|
|
14
|
+
return _NativeSplashView.default.hideSplash();
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_NativeSplashView","_interopRequireDefault","require","e","__esModule","default","showSplash","SplashView","hideSplash"],"sources":["index.tsx"],"sourcesContent":["import SplashView from './specs/v1/NativeSplashView';\r\n\r\nexport function showSplash(): void {\r\n return SplashView.showSplash();\r\n}\r\nexport function hideSplash(): void {\r\n return SplashView.hideSplash();\r\n}\r\n"],"mappings":";;;;;;;AAAA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAqD,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE9C,SAASG,UAAUA,CAAA,EAAS;EACjC,OAAOC,yBAAU,CAACD,UAAU,CAAC,CAAC;AAChC;AACO,SAASE,UAAUA,CAAA,EAAS;EACjC,OAAOD,yBAAU,CAACC,UAAU,CAAC,CAAC;AAChC","ignoreList":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
var _default = exports.default = _reactNative.TurboModuleRegistry.getEnforcing('SplashView');
|
|
9
|
+
//# sourceMappingURL=NativeSplashView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sources":["NativeSplashView.ts"],"sourcesContent":["import type { TurboModule } from 'react-native';\r\nimport { TurboModuleRegistry } from 'react-native';\r\n\r\nexport interface Spec extends TurboModule {\r\n showSplash(): void;\r\n hideSplash(): void;\r\n}\r\n\r\nexport default TurboModuleRegistry.getEnforcing<Spec>('SplashView');\r\n"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAOpCC,gCAAmB,CAACC,YAAY,CAAO,YAAY,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["SplashView","showSplash","hideSplash"],"sources":["index.tsx"],"sourcesContent":["import SplashView from './specs/v1/NativeSplashView';\r\n\r\nexport function showSplash(): void {\r\n return SplashView.showSplash();\r\n}\r\nexport function hideSplash(): void {\r\n return SplashView.hideSplash();\r\n}\r\n"],"mappings":"AAAA,OAAOA,UAAU,MAAM,6BAA6B;AAEpD,OAAO,SAASC,UAAUA,CAAA,EAAS;EACjC,OAAOD,UAAU,CAACC,UAAU,CAAC,CAAC;AAChC;AACA,OAAO,SAASC,UAAUA,CAAA,EAAS;EACjC,OAAOF,UAAU,CAACE,UAAU,CAAC,CAAC;AAChC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sources":["NativeSplashView.ts"],"sourcesContent":["import type { TurboModule } from 'react-native';\r\nimport { TurboModuleRegistry } from 'react-native';\r\n\r\nexport interface Spec extends TurboModule {\r\n showSplash(): void;\r\n hideSplash(): void;\r\n}\r\n\r\nexport default TurboModuleRegistry.getEnforcing<Spec>('SplashView');\r\n"],"mappings":"AACA,SAASA,mBAAmB,QAAQ,cAAc;AAOlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,YAAY,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2015-present, Facebook, Inc.
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
OPEN SOURCE SOFTWARE NOTICE
|
|
2
|
+
|
|
3
|
+
Please note we provide an open source software notice for the third party open source software along with this software and/or this software component (in the following just “this SOFTWARE”). The open source software licenses are granted by the respective right holders.
|
|
4
|
+
|
|
5
|
+
Warranty Disclaimer
|
|
6
|
+
THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS.
|
|
7
|
+
|
|
8
|
+
Copyright Notice and License Texts
|
|
9
|
+
|
|
10
|
+
----------------------------------------------------------------------
|
|
11
|
+
Software: react-native-netinfo V11.1.0
|
|
12
|
+
|
|
13
|
+
MIT License
|
|
14
|
+
|
|
15
|
+
Copyright (c) 2015-present, Facebook, Inc.
|
|
16
|
+
|
|
17
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
18
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
19
|
+
in the Software without restriction, including without limitation the rights
|
|
20
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
21
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
22
|
+
furnished to do so, subject to the following conditions:
|
|
23
|
+
|
|
24
|
+
The above copyright notice and this permission notice shall be included in all
|
|
25
|
+
copies or substantial portions of the Software.
|
|
26
|
+
|
|
27
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
28
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
29
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
30
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
31
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
32
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
33
|
+
SOFTWARE.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<configuration>
|
|
3
|
+
<oatconfig>
|
|
4
|
+
<licensefile>LICENSE</licensefile>
|
|
5
|
+
<filefilterlist>
|
|
6
|
+
<filefilter name="copyrightPolicyFilter" desc="Filters for compatibility,license header policies">
|
|
7
|
+
<filteritem type="filename" name="hvigorfile.ts" desc="hvigor构建脚本,DevEco Studio自动生成,不需要添加版权头"/>
|
|
8
|
+
<filteritem type="filename" name="*.json5" desc="hvigor工程配置文件,DevEco Studio自动生成,不需要添加版权头"/>
|
|
9
|
+
<filteritem type="filename" name="*.proto" desc="资源文件,不需要添加版权头"/>
|
|
10
|
+
<filteritem type="filename" name="*.json" desc="资源文件,不需要添加版权头"/>
|
|
11
|
+
<filteritem type="filepath" name="hvigorw" desc="工程模板,不修改版权头,以防有修改版权风险"/>
|
|
12
|
+
<filteritem type="filepath" name="hvigorw.bat" desc="工程模板,不修改版权头,以防有修改版权风险"/>
|
|
13
|
+
<filteritem type="filepath" name="hvigor/hvigor-wrapper.js" desc="工程模板,不修改版权头,以防有修改版权风险"/>
|
|
14
|
+
<filteritem type="filename" name="LICENSE" desc="工程文件,不修改版权头"/>
|
|
15
|
+
</filefilter>
|
|
16
|
+
<filefilter name="defaultPolicyFilter" desc="Filters for compatibility,license header policies">
|
|
17
|
+
<filteritem type="filename" name="hvigorfile.ts" desc="hvigor构建脚本,DevEco Studio自动生成,不需要添加许可证头"/>
|
|
18
|
+
<filteritem type="filename" name="*.json5" desc="hvigor工程配置文件,DevEco Studio自动生成,不需要添加许可证头"/>
|
|
19
|
+
<filteritem type="filename" name="LICENSE" desc="原三方库证书文件无需更改,因此添加过滤"/>
|
|
20
|
+
<filteritem type="filename" name="*.proto" desc="资源文件,不需要添加许可证头"/>
|
|
21
|
+
<filteritem type="filename" name="*.json" desc="资源文件,不需要添加许可证头"/>
|
|
22
|
+
<filteritem type="filepath" name="hvigorw" desc="工程模板,不修改版权头,以防有修改版权风险"/>
|
|
23
|
+
<filteritem type="filepath" name="hvigorw.bat" desc="工程模板,不修改版权头,以防有修改版权风险"/>
|
|
24
|
+
<filteritem type="filepath" name="hvigor/hvigor-wrapper.js" desc="工程模板,不修改版权头,以防有修改版权风险"/>
|
|
25
|
+
</filefilter>
|
|
26
|
+
<filefilter name="binaryFileTypePolicyFilter" desc="Filters for resources files policies">
|
|
27
|
+
<filteritem type="filename" name="icon.png" desc="应用图标"/>
|
|
28
|
+
<filteritem type="filename" name="app_icon.png" desc="应用图标"/>
|
|
29
|
+
<filteritem type="filename" name="warn.png" desc="页面展示图标"/>
|
|
30
|
+
</filefilter>
|
|
31
|
+
</filefilterlist>
|
|
32
|
+
<policylist>
|
|
33
|
+
<policy name="projectPolicy" desc="">
|
|
34
|
+
<policyitem type="license" name="MIT" path="*.*" desc="license under the MIT"/>
|
|
35
|
+
</policy>
|
|
36
|
+
</policylist>
|
|
37
|
+
</oatconfig>
|
|
38
|
+
</configuration>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"apiType": "stageMode",
|
|
3
|
+
// "buildOption": {
|
|
4
|
+
// "externalNativeOptions": {
|
|
5
|
+
// "path": "./src/main/cpp/CMakeLists.txt",
|
|
6
|
+
// "arguments": "",
|
|
7
|
+
// "cppFlags": ""
|
|
8
|
+
// },
|
|
9
|
+
// },
|
|
10
|
+
"targets": [
|
|
11
|
+
{
|
|
12
|
+
"name": "default",
|
|
13
|
+
"runtimeOS": "HarmonyOS"
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"license": "Apache-2.0",
|
|
3
|
+
"devDependencies": {
|
|
4
|
+
|
|
5
|
+
},
|
|
6
|
+
"author": "",
|
|
7
|
+
"name": "@hxa-rn/react-native-splash-view",
|
|
8
|
+
"description": "Please describe the basic information.",
|
|
9
|
+
"main": "index.ets",
|
|
10
|
+
"version": "1.0.0",
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"@rnoh/react-native-openharmony": "file:../react_native_openharmony_release.har"
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# the minimum version of CMake.
|
|
2
|
+
cmake_minimum_required(VERSION 3.13)
|
|
3
|
+
set(CMAKE_VERBOSE_MAKEFILE on)
|
|
4
|
+
|
|
5
|
+
# react-native codegen-harmony 将 C++ 产物放在 generated/;#include 以 src/main/cpp 为根(如 generated/Foo.h),
|
|
6
|
+
# 同时 generated 下的 .cpp 常使用 #include "Foo.h",故需同时加入 cpp 与 cpp/generated。
|
|
7
|
+
set(library_generated_dir "${CMAKE_CURRENT_SOURCE_DIR}/generated")
|
|
8
|
+
# 不用 **/*.cpp:OHOS 自带 CMake 在 Windows 上常匹配不到,会得到空列表 → add_library 报 No SOURCES。
|
|
9
|
+
file(GLOB_RECURSE library_generated_SRC CONFIGURE_DEPENDS "${library_generated_dir}/*.cpp")
|
|
10
|
+
file(GLOB library_SRC CONFIGURE_DEPENDS *.cpp)
|
|
11
|
+
add_library(splash_view SHARED ${library_SRC} ${library_generated_SRC})
|
|
12
|
+
target_include_directories(splash_view PUBLIC
|
|
13
|
+
${CMAKE_CURRENT_SOURCE_DIR}
|
|
14
|
+
${library_generated_dir})
|
|
15
|
+
target_link_libraries(splash_view PUBLIC rnoh)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#ifndef SPLASHVIEWPACKAGE_H
|
|
2
|
+
#define SPLASHVIEWPACKAGE_H
|
|
3
|
+
|
|
4
|
+
#include "generated/RNOH/generated/BaseSplashViewPackage.h"
|
|
5
|
+
#pragma once
|
|
6
|
+
|
|
7
|
+
namespace rnoh {
|
|
8
|
+
class SplashViewPackage : public BaseSplashViewPackage {
|
|
9
|
+
using Super = BaseSplashViewPackage;
|
|
10
|
+
using Super::Super;
|
|
11
|
+
};
|
|
12
|
+
} // namespace rnoh
|
|
13
|
+
#endif //SPLASHVIEWPACKAGE_H
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by "react-native codegen-lib-harmony"
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
#pragma once
|
|
6
|
+
|
|
7
|
+
#include "RNOH/Package.h"
|
|
8
|
+
#include "RNOH/ArkTSTurboModule.h"
|
|
9
|
+
#include "RNOH/generated/turbo_modules/SplashView.h"
|
|
10
|
+
|
|
11
|
+
namespace rnoh {
|
|
12
|
+
|
|
13
|
+
class BaseSplashViewPackageTurboModuleFactoryDelegate : public TurboModuleFactoryDelegate {
|
|
14
|
+
public:
|
|
15
|
+
SharedTurboModule createTurboModule(Context ctx, const std::string &name) const override {
|
|
16
|
+
if (name == "SplashView") {
|
|
17
|
+
return std::make_shared<SplashView>(ctx, name);
|
|
18
|
+
}
|
|
19
|
+
return nullptr;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
class BaseSplashViewPackageEventEmitRequestHandler : public EventEmitRequestHandler {
|
|
24
|
+
public:
|
|
25
|
+
void handleEvent(Context const &ctx) override {
|
|
26
|
+
auto eventEmitter = ctx.shadowViewRegistry->getEventEmitter<facebook::react::EventEmitter>(ctx.tag);
|
|
27
|
+
auto componentName = ctx.shadowViewRegistry->getComponentName(ctx.tag);
|
|
28
|
+
|
|
29
|
+
if (eventEmitter == nullptr) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
std::vector<std::string> supportedComponentNames = {
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
std::vector<std::string> supportedEventNames = {
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
if (std::find(supportedComponentNames.begin(), supportedComponentNames.end(), componentName) != supportedComponentNames.end() &&
|
|
40
|
+
std::find(supportedEventNames.begin(), supportedEventNames.end(), ctx.eventName) != supportedEventNames.end()) {
|
|
41
|
+
eventEmitter->dispatchEvent(ctx.eventName, ArkJS(ctx.env).getDynamic(ctx.payload));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class BaseSplashViewPackage : public Package {
|
|
48
|
+
public:
|
|
49
|
+
BaseSplashViewPackage(Package::Context ctx) : Package(ctx){};
|
|
50
|
+
|
|
51
|
+
std::unique_ptr<TurboModuleFactoryDelegate> createTurboModuleFactoryDelegate() override {
|
|
52
|
+
return std::make_unique<BaseSplashViewPackageTurboModuleFactoryDelegate>();
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
std::vector<facebook::react::ComponentDescriptorProvider> createComponentDescriptorProviders() override {
|
|
56
|
+
return {
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
ComponentJSIBinderByString createComponentJSIBinderByName() override {
|
|
61
|
+
return {
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
EventEmitRequestHandlers createEventEmitRequestHandlers() override {
|
|
66
|
+
return {
|
|
67
|
+
std::make_shared<BaseSplashViewPackageEventEmitRequestHandler>(),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
} // namespace rnoh
|
package/harmony/splash_view/src/main/cpp/generated/RNOH/generated/turbo_modules/SplashView.cpp
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by "react-native codegen-lib-harmony"
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
#include "SplashView.h"
|
|
6
|
+
|
|
7
|
+
namespace rnoh {
|
|
8
|
+
using namespace facebook;
|
|
9
|
+
|
|
10
|
+
SplashView::SplashView(const ArkTSTurboModule::Context ctx, const std::string name) : ArkTSTurboModule(ctx, name) {
|
|
11
|
+
methodMap_ = {
|
|
12
|
+
ARK_METHOD_METADATA(showSplash, 0),
|
|
13
|
+
ARK_METHOD_METADATA(hideSplash, 0),
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
} // namespace rnoh
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by "react-native codegen-lib-harmony"
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
#pragma once
|
|
6
|
+
|
|
7
|
+
#include "RNOH/ArkTSTurboModule.h"
|
|
8
|
+
|
|
9
|
+
namespace rnoh {
|
|
10
|
+
|
|
11
|
+
class JSI_EXPORT SplashView : public ArkTSTurboModule {
|
|
12
|
+
public:
|
|
13
|
+
SplashView(const ArkTSTurboModule::Context ctx, const std::string name);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
} // namespace rnoh
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateComponentDescriptorH.js
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#pragma once
|
|
12
|
+
|
|
13
|
+
#include "ShadowNodes.h"
|
|
14
|
+
#include <react/renderer/core/ConcreteComponentDescriptor.h>
|
|
15
|
+
#include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h>
|
|
16
|
+
|
|
17
|
+
namespace facebook::react {
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
void splash_view_registerComponentDescriptorsFromCodegen(
|
|
22
|
+
std::shared_ptr<const ComponentDescriptorProviderRegistry> registry);
|
|
23
|
+
|
|
24
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateEventEmitterCpp.js
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#include "EventEmitters.h"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
namespace facebook::react {
|
|
15
|
+
|
|
16
|
+
} // namespace facebook::react
|