@lynx-js/react 0.105.0

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.
Files changed (337) hide show
  1. package/CHANGELOG.md +250 -0
  2. package/LICENSE +202 -0
  3. package/README.md +20 -0
  4. package/components/lib/Page.d.ts +3 -0
  5. package/components/lib/Page.js +56 -0
  6. package/components/lib/Page.js.map +1 -0
  7. package/components/lib/index.d.ts +1 -0
  8. package/components/lib/index.js +5 -0
  9. package/components/lib/index.js.map +1 -0
  10. package/components/src/Page.ts +75 -0
  11. package/components/src/index.ts +5 -0
  12. package/package.json +162 -0
  13. package/refresh/.gitignore +1 -0
  14. package/refresh/.npmignore +3 -0
  15. package/refresh/.turbo/turbo-build.log +8 -0
  16. package/refresh/dist/index.js +311 -0
  17. package/refresh/package.json +21 -0
  18. package/refresh/src/index.ts +6 -0
  19. package/refresh/src/prefresh.d.ts +11 -0
  20. package/refresh/tsconfig.json +4 -0
  21. package/refresh/turbo.json +15 -0
  22. package/runtime/jsx-dev-runtime/index.d.ts +5 -0
  23. package/runtime/jsx-dev-runtime/index.js +4 -0
  24. package/runtime/jsx-runtime/index.d.ts +4 -0
  25. package/runtime/jsx-runtime/index.js +4 -0
  26. package/runtime/lazy/import.d.ts +1 -0
  27. package/runtime/lazy/import.js +55 -0
  28. package/runtime/lazy/internal.js +39 -0
  29. package/runtime/lazy/jsx-dev-runtime.js +12 -0
  30. package/runtime/lazy/jsx-runtime.js +12 -0
  31. package/runtime/lazy/legacy-react-runtime.js +20 -0
  32. package/runtime/lazy/react-lepus.js +9 -0
  33. package/runtime/lazy/react.js +46 -0
  34. package/runtime/lazy/target.js +11 -0
  35. package/runtime/lepus/index.d.ts +4 -0
  36. package/runtime/lepus/index.js +43 -0
  37. package/runtime/lepus/jsx-dev-runtime/index.js +4 -0
  38. package/runtime/lepus/jsx-runtime/index.js +66 -0
  39. package/runtime/lib/backgroundSnapshot.d.ts +23 -0
  40. package/runtime/lib/backgroundSnapshot.js +348 -0
  41. package/runtime/lib/backgroundSnapshot.js.map +1 -0
  42. package/runtime/lib/compat/componentIs.d.ts +4 -0
  43. package/runtime/lib/compat/componentIs.js +20 -0
  44. package/runtime/lib/compat/componentIs.js.map +1 -0
  45. package/runtime/lib/compat/initData.d.ts +43 -0
  46. package/runtime/lib/compat/initData.js +93 -0
  47. package/runtime/lib/compat/initData.js.map +1 -0
  48. package/runtime/lib/compat/lynxComponent.d.ts +5 -0
  49. package/runtime/lib/compat/lynxComponent.js +71 -0
  50. package/runtime/lib/compat/lynxComponent.js.map +1 -0
  51. package/runtime/lib/debug/debug.d.ts +2 -0
  52. package/runtime/lib/debug/debug.js +9 -0
  53. package/runtime/lib/debug/debug.js.map +1 -0
  54. package/runtime/lib/debug/printSnapshot.d.ts +3 -0
  55. package/runtime/lib/debug/printSnapshot.js +21 -0
  56. package/runtime/lib/debug/printSnapshot.js.map +1 -0
  57. package/runtime/lib/debug/profile.d.ts +1 -0
  58. package/runtime/lib/debug/profile.js +51 -0
  59. package/runtime/lib/debug/profile.js.map +1 -0
  60. package/runtime/lib/document.d.ts +4 -0
  61. package/runtime/lib/document.js +49 -0
  62. package/runtime/lib/document.js.map +1 -0
  63. package/runtime/lib/gesture/processGesture.d.ts +4 -0
  64. package/runtime/lib/gesture/processGesture.js +48 -0
  65. package/runtime/lib/gesture/processGesture.js.map +1 -0
  66. package/runtime/lib/gesture/processGestureBagkround.d.ts +2 -0
  67. package/runtime/lib/gesture/processGestureBagkround.js +16 -0
  68. package/runtime/lib/gesture/processGestureBagkround.js.map +1 -0
  69. package/runtime/lib/gesture/types.d.ts +34 -0
  70. package/runtime/lib/gesture/types.js +13 -0
  71. package/runtime/lib/gesture/types.js.map +1 -0
  72. package/runtime/lib/hooks/react.d.ts +26 -0
  73. package/runtime/lib/hooks/react.js +35 -0
  74. package/runtime/lib/hooks/react.js.map +1 -0
  75. package/runtime/lib/hooks/useLynxGlobalEventListener.d.ts +29 -0
  76. package/runtime/lib/hooks/useLynxGlobalEventListener.js +53 -0
  77. package/runtime/lib/hooks/useLynxGlobalEventListener.js.map +1 -0
  78. package/runtime/lib/hydrate.d.ts +18 -0
  79. package/runtime/lib/hydrate.js +271 -0
  80. package/runtime/lib/hydrate.js.map +1 -0
  81. package/runtime/lib/index.d.ts +9 -0
  82. package/runtime/lib/index.js +46 -0
  83. package/runtime/lib/index.js.map +1 -0
  84. package/runtime/lib/internal.d.ts +26 -0
  85. package/runtime/lib/internal.js +41 -0
  86. package/runtime/lib/internal.js.map +1 -0
  87. package/runtime/lib/legacy-react-runtime/index.d.ts +7 -0
  88. package/runtime/lib/legacy-react-runtime/index.js +34 -0
  89. package/runtime/lib/legacy-react-runtime/index.js.map +1 -0
  90. package/runtime/lib/lifecycle/delayUnmount.d.ts +8 -0
  91. package/runtime/lib/lifecycle/delayUnmount.js +68 -0
  92. package/runtime/lib/lifecycle/delayUnmount.js.map +1 -0
  93. package/runtime/lib/lifecycle/destroy.d.ts +2 -0
  94. package/runtime/lib/lifecycle/destroy.js +21 -0
  95. package/runtime/lib/lifecycle/destroy.js.map +1 -0
  96. package/runtime/lib/lifecycle/pass.d.ts +3 -0
  97. package/runtime/lib/lifecycle/pass.js +12 -0
  98. package/runtime/lib/lifecycle/pass.js.map +1 -0
  99. package/runtime/lib/lifecycle/patchUpdate.d.ts +23 -0
  100. package/runtime/lib/lifecycle/patchUpdate.js +179 -0
  101. package/runtime/lib/lifecycle/patchUpdate.js.map +1 -0
  102. package/runtime/lib/lifecycle/reload.d.ts +3 -0
  103. package/runtime/lib/lifecycle/reload.js +63 -0
  104. package/runtime/lib/lifecycle/reload.js.map +1 -0
  105. package/runtime/lib/lifecycle/render.d.ts +2 -0
  106. package/runtime/lib/lifecycle/render.js +44 -0
  107. package/runtime/lib/lifecycle/render.js.map +1 -0
  108. package/runtime/lib/lifecycleConstant.d.ts +12 -0
  109. package/runtime/lib/lifecycleConstant.js +17 -0
  110. package/runtime/lib/lifecycleConstant.js.map +1 -0
  111. package/runtime/lib/list.d.ts +40 -0
  112. package/runtime/lib/list.js +305 -0
  113. package/runtime/lib/list.js.map +1 -0
  114. package/runtime/lib/lynx/calledByNative.d.ts +2 -0
  115. package/runtime/lib/lynx/calledByNative.js +113 -0
  116. package/runtime/lib/lynx/calledByNative.js.map +1 -0
  117. package/runtime/lib/lynx/component.d.ts +1 -0
  118. package/runtime/lib/lynx/component.js +69 -0
  119. package/runtime/lib/lynx/component.js.map +1 -0
  120. package/runtime/lib/lynx/dynamic-js.d.ts +2 -0
  121. package/runtime/lib/lynx/dynamic-js.js +31 -0
  122. package/runtime/lib/lynx/dynamic-js.js.map +1 -0
  123. package/runtime/lib/lynx/env.d.ts +1 -0
  124. package/runtime/lib/lynx/env.js +92 -0
  125. package/runtime/lib/lynx/env.js.map +1 -0
  126. package/runtime/lib/lynx/injectLepusMethods.d.ts +2 -0
  127. package/runtime/lib/lynx/injectLepusMethods.js +50 -0
  128. package/runtime/lib/lynx/injectLepusMethods.js.map +1 -0
  129. package/runtime/lib/lynx/lazy-bundle.d.ts +9 -0
  130. package/runtime/lib/lynx/lazy-bundle.js +119 -0
  131. package/runtime/lib/lynx/lazy-bundle.js.map +1 -0
  132. package/runtime/lib/lynx/performance.d.ts +29 -0
  133. package/runtime/lib/lynx/performance.js +100 -0
  134. package/runtime/lib/lynx/performance.js.map +1 -0
  135. package/runtime/lib/lynx/tt.d.ts +4 -0
  136. package/runtime/lib/lynx/tt.js +193 -0
  137. package/runtime/lib/lynx/tt.js.map +1 -0
  138. package/runtime/lib/lynx-api.d.ts +311 -0
  139. package/runtime/lib/lynx-api.js +116 -0
  140. package/runtime/lib/lynx-api.js.map +1 -0
  141. package/runtime/lib/lynx.d.ts +2 -0
  142. package/runtime/lib/lynx.js +91 -0
  143. package/runtime/lib/lynx.js.map +1 -0
  144. package/runtime/lib/opcodes.d.ts +2 -0
  145. package/runtime/lib/opcodes.js +59 -0
  146. package/runtime/lib/opcodes.js.map +1 -0
  147. package/runtime/lib/renderToOpcodes/constants.d.ts +17 -0
  148. package/runtime/lib/renderToOpcodes/constants.js +23 -0
  149. package/runtime/lib/renderToOpcodes/constants.js.map +1 -0
  150. package/runtime/lib/renderToOpcodes/index.d.ts +13 -0
  151. package/runtime/lib/renderToOpcodes/index.js +227 -0
  152. package/runtime/lib/renderToOpcodes/index.js.map +1 -0
  153. package/runtime/lib/root.d.ts +7 -0
  154. package/runtime/lib/root.js +17 -0
  155. package/runtime/lib/root.js.map +1 -0
  156. package/runtime/lib/snapshot/event.d.ts +3 -0
  157. package/runtime/lib/snapshot/event.js +24 -0
  158. package/runtime/lib/snapshot/event.js.map +1 -0
  159. package/runtime/lib/snapshot/gesture.d.ts +2 -0
  160. package/runtime/lib/snapshot/gesture.js +18 -0
  161. package/runtime/lib/snapshot/gesture.js.map +1 -0
  162. package/runtime/lib/snapshot/platformInfo.d.ts +4 -0
  163. package/runtime/lib/snapshot/platformInfo.js +35 -0
  164. package/runtime/lib/snapshot/platformInfo.js.map +1 -0
  165. package/runtime/lib/snapshot/ref.d.ts +10 -0
  166. package/runtime/lib/snapshot/ref.js +119 -0
  167. package/runtime/lib/snapshot/ref.js.map +1 -0
  168. package/runtime/lib/snapshot/spread.d.ts +5 -0
  169. package/runtime/lib/snapshot/spread.js +289 -0
  170. package/runtime/lib/snapshot/spread.js.map +1 -0
  171. package/runtime/lib/snapshot/workletEvent.d.ts +3 -0
  172. package/runtime/lib/snapshot/workletEvent.js +22 -0
  173. package/runtime/lib/snapshot/workletEvent.js.map +1 -0
  174. package/runtime/lib/snapshot/workletRef.d.ts +5 -0
  175. package/runtime/lib/snapshot/workletRef.js +52 -0
  176. package/runtime/lib/snapshot/workletRef.js.map +1 -0
  177. package/runtime/lib/snapshot.d.ts +81 -0
  178. package/runtime/lib/snapshot.js +477 -0
  179. package/runtime/lib/snapshot.js.map +1 -0
  180. package/runtime/lib/snapshotPatch.d.ts +14 -0
  181. package/runtime/lib/snapshotPatch.js +31 -0
  182. package/runtime/lib/snapshotPatch.js.map +1 -0
  183. package/runtime/lib/snapshotPatchApply.d.ts +2 -0
  184. package/runtime/lib/snapshotPatchApply.js +110 -0
  185. package/runtime/lib/snapshotPatchApply.js.map +1 -0
  186. package/runtime/lib/utils.d.ts +4 -0
  187. package/runtime/lib/utils.js +32 -0
  188. package/runtime/lib/utils.js.map +1 -0
  189. package/runtime/lib/worklet/ctx.d.ts +1 -0
  190. package/runtime/lib/worklet/ctx.js +17 -0
  191. package/runtime/lib/worklet/ctx.js.map +1 -0
  192. package/runtime/lib/worklet/execMap.d.ts +1 -0
  193. package/runtime/lib/worklet/execMap.js +42 -0
  194. package/runtime/lib/worklet/execMap.js.map +1 -0
  195. package/runtime/lib/worklet/functionality.d.ts +1 -0
  196. package/runtime/lib/worklet/functionality.js +11 -0
  197. package/runtime/lib/worklet/functionality.js.map +1 -0
  198. package/runtime/lib/worklet/hmr.d.ts +1 -0
  199. package/runtime/lib/worklet/hmr.js +21 -0
  200. package/runtime/lib/worklet/hmr.js.map +1 -0
  201. package/runtime/lib/worklet/indexMap.d.ts +8 -0
  202. package/runtime/lib/worklet/indexMap.js +17 -0
  203. package/runtime/lib/worklet/indexMap.js.map +1 -0
  204. package/runtime/lib/worklet/jsImpl.d.ts +11 -0
  205. package/runtime/lib/worklet/jsImpl.js +68 -0
  206. package/runtime/lib/worklet/jsImpl.js.map +1 -0
  207. package/runtime/lib/worklet/runWorklet.d.ts +14 -0
  208. package/runtime/lib/worklet/runWorklet.js +82 -0
  209. package/runtime/lib/worklet/runWorklet.js.map +1 -0
  210. package/runtime/lib/worklet/workletRef.d.ts +131 -0
  211. package/runtime/lib/worklet/workletRef.js +96 -0
  212. package/runtime/lib/worklet/workletRef.js.map +1 -0
  213. package/runtime/lib/worklet/workletRefPool.d.ts +2 -0
  214. package/runtime/lib/worklet/workletRefPool.js +22 -0
  215. package/runtime/lib/worklet/workletRefPool.js.map +1 -0
  216. package/runtime/src/backgroundSnapshot.ts +452 -0
  217. package/runtime/src/compat/componentIs.ts +30 -0
  218. package/runtime/src/compat/initData.ts +140 -0
  219. package/runtime/src/compat/lynxComponent.ts +80 -0
  220. package/runtime/src/debug/debug.ts +9 -0
  221. package/runtime/src/debug/printSnapshot.ts +28 -0
  222. package/runtime/src/debug/profile.ts +54 -0
  223. package/runtime/src/document.ts +53 -0
  224. package/runtime/src/gesture/processGesture.ts +77 -0
  225. package/runtime/src/gesture/processGestureBagkround.ts +15 -0
  226. package/runtime/src/gesture/types.ts +39 -0
  227. package/runtime/src/hooks/react.ts +62 -0
  228. package/runtime/src/hooks/useLynxGlobalEventListener.ts +59 -0
  229. package/runtime/src/hydrate.ts +364 -0
  230. package/runtime/src/index.ts +89 -0
  231. package/runtime/src/internal.ts +60 -0
  232. package/runtime/src/legacy-react-runtime/index.ts +40 -0
  233. package/runtime/src/lifecycle/delayUnmount.ts +77 -0
  234. package/runtime/src/lifecycle/destroy.ts +26 -0
  235. package/runtime/src/lifecycle/pass.ts +14 -0
  236. package/runtime/src/lifecycle/patchUpdate.ts +240 -0
  237. package/runtime/src/lifecycle/reload.ts +79 -0
  238. package/runtime/src/lifecycle/render.ts +46 -0
  239. package/runtime/src/lifecycleConstant.ts +16 -0
  240. package/runtime/src/list.ts +375 -0
  241. package/runtime/src/lynx/calledByNative.ts +132 -0
  242. package/runtime/src/lynx/component.ts +116 -0
  243. package/runtime/src/lynx/dynamic-js.ts +33 -0
  244. package/runtime/src/lynx/env.ts +110 -0
  245. package/runtime/src/lynx/injectLepusMethods.ts +53 -0
  246. package/runtime/src/lynx/lazy-bundle.ts +126 -0
  247. package/runtime/src/lynx/performance.ts +117 -0
  248. package/runtime/src/lynx/tt.ts +212 -0
  249. package/runtime/src/lynx-api.ts +374 -0
  250. package/runtime/src/lynx.ts +105 -0
  251. package/runtime/src/opcodes.ts +64 -0
  252. package/runtime/src/renderToOpcodes/constants.ts +24 -0
  253. package/runtime/src/renderToOpcodes/index.ts +301 -0
  254. package/runtime/src/root.ts +19 -0
  255. package/runtime/src/snapshot/event.ts +33 -0
  256. package/runtime/src/snapshot/gesture.ts +25 -0
  257. package/runtime/src/snapshot/platformInfo.ts +48 -0
  258. package/runtime/src/snapshot/ref.ts +151 -0
  259. package/runtime/src/snapshot/spread.ts +287 -0
  260. package/runtime/src/snapshot/workletEvent.ts +33 -0
  261. package/runtime/src/snapshot/workletRef.ts +63 -0
  262. package/runtime/src/snapshot.ts +576 -0
  263. package/runtime/src/snapshotPatch.ts +56 -0
  264. package/runtime/src/snapshotPatchApply.ts +117 -0
  265. package/runtime/src/utils.ts +35 -0
  266. package/runtime/src/worklet/ctx.ts +22 -0
  267. package/runtime/src/worklet/execMap.ts +50 -0
  268. package/runtime/src/worklet/functionality.ts +12 -0
  269. package/runtime/src/worklet/hmr.ts +26 -0
  270. package/runtime/src/worklet/indexMap.ts +20 -0
  271. package/runtime/src/worklet/jsImpl.ts +86 -0
  272. package/runtime/src/worklet/runWorklet.ts +88 -0
  273. package/runtime/src/worklet/workletRef.ts +229 -0
  274. package/runtime/src/worklet/workletRefPool.ts +25 -0
  275. package/transform/cjs/main.cjs +6 -0
  276. package/transform/cjs/main.d.cts +3 -0
  277. package/transform/cjs/package.json +3 -0
  278. package/transform/dist/wasm.cjs +8478 -0
  279. package/transform/index.d.ts +187 -0
  280. package/transform/main.js +15 -0
  281. package/types/react.d.ts +147 -0
  282. package/types/react.docs.d.ts +74 -0
  283. package/worklet-runtime/dist/dev.js +414 -0
  284. package/worklet-runtime/dist/dev.js.map +8 -0
  285. package/worklet-runtime/dist/main.js +414 -0
  286. package/worklet-runtime/dist/main.js.map +8 -0
  287. package/worklet-runtime/lib/api/element.d.ts +14 -0
  288. package/worklet-runtime/lib/api/element.js +71 -0
  289. package/worklet-runtime/lib/api/element.js.map +1 -0
  290. package/worklet-runtime/lib/api/lepusQuerySelector.d.ts +3 -0
  291. package/worklet-runtime/lib/api/lepusQuerySelector.js +23 -0
  292. package/worklet-runtime/lib/api/lepusQuerySelector.js.map +1 -0
  293. package/worklet-runtime/lib/api/lynxApi.d.ts +2 -0
  294. package/worklet-runtime/lib/api/lynxApi.js +35 -0
  295. package/worklet-runtime/lib/api/lynxApi.js.map +1 -0
  296. package/worklet-runtime/lib/bindings/bindings.d.ts +14 -0
  297. package/worklet-runtime/lib/bindings/bindings.js +61 -0
  298. package/worklet-runtime/lib/bindings/bindings.js.map +1 -0
  299. package/worklet-runtime/lib/bindings/events.d.ts +7 -0
  300. package/worklet-runtime/lib/bindings/events.js +9 -0
  301. package/worklet-runtime/lib/bindings/events.js.map +1 -0
  302. package/worklet-runtime/lib/bindings/index.d.ts +4 -0
  303. package/worklet-runtime/lib/bindings/index.js +7 -0
  304. package/worklet-runtime/lib/bindings/index.js.map +1 -0
  305. package/worklet-runtime/lib/bindings/loadRuntime.d.ts +8 -0
  306. package/worklet-runtime/lib/bindings/loadRuntime.js +25 -0
  307. package/worklet-runtime/lib/bindings/loadRuntime.js.map +1 -0
  308. package/worklet-runtime/lib/bindings/types.d.ts +35 -0
  309. package/worklet-runtime/lib/bindings/types.js +2 -0
  310. package/worklet-runtime/lib/bindings/types.js.map +1 -0
  311. package/worklet-runtime/lib/delayWorkletEvent.d.ts +11 -0
  312. package/worklet-runtime/lib/delayWorkletEvent.js +49 -0
  313. package/worklet-runtime/lib/delayWorkletEvent.js.map +1 -0
  314. package/worklet-runtime/lib/global.d.ts +15 -0
  315. package/worklet-runtime/lib/global.js +2 -0
  316. package/worklet-runtime/lib/global.js.map +1 -0
  317. package/worklet-runtime/lib/index.d.ts +1 -0
  318. package/worklet-runtime/lib/index.js +12 -0
  319. package/worklet-runtime/lib/index.js.map +1 -0
  320. package/worklet-runtime/lib/jsFunctionLifecycle.d.ts +18 -0
  321. package/worklet-runtime/lib/jsFunctionLifecycle.js +55 -0
  322. package/worklet-runtime/lib/jsFunctionLifecycle.js.map +1 -0
  323. package/worklet-runtime/lib/listeners.d.ts +2 -0
  324. package/worklet-runtime/lib/listeners.js +17 -0
  325. package/worklet-runtime/lib/listeners.js.map +1 -0
  326. package/worklet-runtime/lib/utils/profile.d.ts +1 -0
  327. package/worklet-runtime/lib/utils/profile.js +20 -0
  328. package/worklet-runtime/lib/utils/profile.js.map +1 -0
  329. package/worklet-runtime/lib/utils/version.d.ts +1 -0
  330. package/worklet-runtime/lib/utils/version.js +10 -0
  331. package/worklet-runtime/lib/utils/version.js.map +1 -0
  332. package/worklet-runtime/lib/workletRef.d.ts +12 -0
  333. package/worklet-runtime/lib/workletRef.js +50 -0
  334. package/worklet-runtime/lib/workletRef.js.map +1 -0
  335. package/worklet-runtime/lib/workletRuntime.d.ts +2 -0
  336. package/worklet-runtime/lib/workletRuntime.js +128 -0
  337. package/worklet-runtime/lib/workletRuntime.js.map +1 -0
@@ -0,0 +1,28 @@
1
+ // Copyright 2024 The Lynx Authors. All rights reserved.
2
+ // Licensed under the Apache License Version 2.0 that can be found in the
3
+ // LICENSE file in the root directory of this source tree.
4
+ import { BackgroundSnapshotInstance } from '../backgroundSnapshot.js';
5
+ import { SnapshotInstance } from '../snapshot.js';
6
+ import { logDebug } from './debug.js';
7
+
8
+ export function printSnapshotInstance(
9
+ instance: BackgroundSnapshotInstance | SnapshotInstance,
10
+ log?: (...data: any[]) => void,
11
+ ): void {
12
+ const impl = (
13
+ instance: BackgroundSnapshotInstance | SnapshotInstance,
14
+ level: number,
15
+ ) => {
16
+ let msg = '';
17
+ for (let i = 0; i < level; ++i) {
18
+ msg += ' ';
19
+ }
20
+ msg += `| ${instance.__id}(${instance.type}): ${JSON.stringify(instance.__values)}`;
21
+ (log ?? logDebug)(msg);
22
+ for (const c of instance.childNodes) {
23
+ impl(c, level + 1);
24
+ }
25
+ };
26
+
27
+ impl(instance, 0);
28
+ }
@@ -0,0 +1,54 @@
1
+ // Copyright 2024 The Lynx Authors. All rights reserved.
2
+ // Licensed under the Apache License Version 2.0 that can be found in the
3
+ // LICENSE file in the root directory of this source tree.
4
+ import { options } from 'preact';
5
+ import type { Component, ComponentClass, VNode } from 'preact';
6
+
7
+ import { COMPONENT, DIFF, DIFFED, RENDER } from '../renderToOpcodes/constants.js';
8
+
9
+ export function initProfileHook(): void {
10
+ const oldDiff = options[DIFF];
11
+ options[DIFF] = function(vnode: VNode) {
12
+ // This __PROFILE__ is used for DCE testing
13
+ if (__PROFILE__ && typeof vnode.type === 'function') {
14
+ // We only add profiling trace for Component
15
+ console.profile(`diff::${getDisplayName(vnode.type as ComponentClass)}`);
16
+ }
17
+ oldDiff?.(vnode);
18
+ };
19
+ const oldDiffed = options[DIFFED];
20
+ options[DIFFED] = function(vnode) {
21
+ // This __PROFILE__ is used for DCE testing
22
+ if (__PROFILE__ && typeof vnode.type === 'function') {
23
+ console.profileEnd(); // for options[DIFF]
24
+ }
25
+ oldDiffed?.(vnode);
26
+ };
27
+
28
+ // Profile the user-provided `render`.
29
+ const oldRender = options[RENDER];
30
+ options[RENDER] = function(vnode: VNode & { [COMPONENT]: Component }) {
31
+ const displayName = getDisplayName(vnode.type as ComponentClass);
32
+ const originalRender = vnode[COMPONENT].render;
33
+ vnode[COMPONENT].render = function render(this, props, state, context) {
34
+ // This __PROFILE__ is used for DCE testing
35
+ if (__PROFILE__) {
36
+ console.profile(`render::${displayName}`);
37
+ }
38
+ try {
39
+ return originalRender.call(this, props, state, context);
40
+ } finally {
41
+ // This __PROFILE__ is used for DCE testing
42
+ if (__PROFILE__) {
43
+ console.profileEnd();
44
+ }
45
+ vnode[COMPONENT].render = originalRender;
46
+ }
47
+ };
48
+ oldRender?.(vnode);
49
+ };
50
+ }
51
+
52
+ function getDisplayName(type: ComponentClass): string {
53
+ return type.displayName ?? type.name;
54
+ }
@@ -0,0 +1,53 @@
1
+ // Copyright 2024 The Lynx Authors. All rights reserved.
2
+ // Licensed under the Apache License Version 2.0 that can be found in the
3
+ // LICENSE file in the root directory of this source tree.
4
+ import { BackgroundSnapshotInstance } from './backgroundSnapshot.js';
5
+ import { SnapshotInstance } from './snapshot.js';
6
+
7
+ const document: any = {};
8
+
9
+ function setupBackgroundDocument(): void {
10
+ document.createElement = function(type: string) {
11
+ return new BackgroundSnapshotInstance(type);
12
+ };
13
+ document.createElementNS = function(_ns: string, type: string) {
14
+ return new BackgroundSnapshotInstance(type);
15
+ };
16
+ document.createTextNode = function(text: string) {
17
+ const i = new BackgroundSnapshotInstance(null as unknown as string);
18
+ i.setAttribute(0, text);
19
+ Object.defineProperty(i, 'data', {
20
+ set(v) {
21
+ i.setAttribute(0, v);
22
+ },
23
+ });
24
+ return i;
25
+ };
26
+ }
27
+
28
+ function setupDocument(): void {
29
+ document.createElement = function(type: string) {
30
+ return new SnapshotInstance(type);
31
+ };
32
+ document.createElementNS = function(_ns: string, type: string) {
33
+ return new SnapshotInstance(type);
34
+ };
35
+ document.createTextNode = function(text: string) {
36
+ const i = new SnapshotInstance(null as unknown as string);
37
+ i.setAttribute(0, text);
38
+ Object.defineProperty(i, 'data', {
39
+ set(v) {
40
+ i.setAttribute(0, v);
41
+ },
42
+ });
43
+ return i;
44
+ };
45
+ }
46
+
47
+ // if (__JS__) {
48
+ // setupBackgroundDocument();
49
+ // } else if (__LEPUS__) {
50
+ // setupDocument();
51
+ // }
52
+
53
+ export { setupBackgroundDocument, setupDocument, document };
@@ -0,0 +1,77 @@
1
+ import {
2
+ type GestureKind,
3
+ GestureTypeInner,
4
+ type ComposedGesture,
5
+ type BaseGesture,
6
+ type GestureConfig,
7
+ } from './types.js';
8
+ import { onWorkletCtxUpdate } from '@lynx-js/react/worklet-runtime/bindings';
9
+
10
+ function isSerializedGesture(gesture: GestureKind): boolean {
11
+ return gesture.__isSerialized ?? false;
12
+ }
13
+
14
+ function getGestureInfo(gesture: BaseGesture, dom: FiberElement) {
15
+ const config = {
16
+ callbacks: [],
17
+ } as GestureConfig;
18
+ const baseGesture = gesture;
19
+
20
+ for (
21
+ const key of Object.keys(baseGesture.callbacks) as Array<
22
+ keyof BaseGesture['callbacks']
23
+ >
24
+ ) {
25
+ const callback = baseGesture.callbacks[key]!;
26
+ onWorkletCtxUpdate(callback, dom);
27
+ config.callbacks.push({
28
+ name: key,
29
+ callback: callback,
30
+ });
31
+ }
32
+
33
+ const relationMap = {
34
+ waitFor: baseGesture?.waitFor?.map(subGesture => subGesture.id) ?? [],
35
+ simultaneous: baseGesture?.simultaneousWith?.map(subGesture => subGesture.id) ?? [],
36
+ continueWith: baseGesture?.continueWith?.map(subGesture => subGesture.id) ?? [],
37
+ };
38
+
39
+ return {
40
+ config,
41
+ relationMap,
42
+ };
43
+ }
44
+
45
+ export function processGesture(
46
+ dom: FiberElement,
47
+ gesture: GestureKind,
48
+ gestureOptions?: {
49
+ domSet: boolean;
50
+ },
51
+ ): void {
52
+ if (!gesture || !isSerializedGesture(gesture)) {
53
+ return;
54
+ }
55
+
56
+ if (!(gestureOptions && gestureOptions.domSet)) {
57
+ __SetAttribute(dom, 'has-react-gesture', true);
58
+ __SetAttribute(dom, 'flatten', false);
59
+ }
60
+
61
+ if (gesture.type === GestureTypeInner.COMPOSED) {
62
+ for (const subGesture of (gesture as ComposedGesture).gestures) {
63
+ processGesture(dom, subGesture, { domSet: true });
64
+ }
65
+ } else {
66
+ const baseGesture = gesture as BaseGesture;
67
+
68
+ const { config, relationMap } = getGestureInfo(baseGesture, dom);
69
+ __SetGestureDetector(
70
+ dom,
71
+ baseGesture.id,
72
+ baseGesture.type,
73
+ config,
74
+ relationMap,
75
+ );
76
+ }
77
+ }
@@ -0,0 +1,15 @@
1
+ import { onPostWorkletCtx } from '../worklet/ctx.js';
2
+ import { type GestureKind, GestureTypeInner, type ComposedGesture, type BaseGesture } from './types.js';
3
+
4
+ export function processGestureBackground(gesture: GestureKind): void {
5
+ if (gesture.type === GestureTypeInner.COMPOSED) {
6
+ for (const subGesture of (gesture as ComposedGesture).gestures) {
7
+ processGestureBackground(subGesture);
8
+ }
9
+ } else {
10
+ const baseGesture = gesture as BaseGesture;
11
+ for (const [name, value] of Object.entries(baseGesture.callbacks)) {
12
+ baseGesture.callbacks[name] = onPostWorkletCtx(value)!;
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,39 @@
1
+ import type { Worklet } from '@lynx-js/react/worklet-runtime/bindings';
2
+
3
+ export enum GestureTypeInner {
4
+ COMPOSED = -1,
5
+ PAN = 0,
6
+ FLING = 1,
7
+ DEFAULT = 2,
8
+ TAP = 3,
9
+ LONGPRESS = 4,
10
+ ROTATION = 5,
11
+ PINCH = 6,
12
+ NATIVE = 7,
13
+ }
14
+
15
+ export interface GestureKind {
16
+ type: GestureTypeInner;
17
+ __isSerialized?: boolean;
18
+ __isGesture?: boolean;
19
+ }
20
+
21
+ export interface ComposedGesture extends GestureKind {
22
+ type: GestureTypeInner.COMPOSED;
23
+ gestures: GestureKind[];
24
+ }
25
+
26
+ export interface BaseGesture extends GestureKind {
27
+ id: number;
28
+ callbacks: Record<string, Worklet>;
29
+ waitFor: BaseGesture[];
30
+ simultaneousWith: BaseGesture[];
31
+ continueWith: BaseGesture[];
32
+ }
33
+
34
+ export interface GestureConfig {
35
+ callbacks: {
36
+ name: string;
37
+ callback: Worklet;
38
+ }[];
39
+ }
@@ -0,0 +1,62 @@
1
+ // Copyright 2024 The Lynx Authors. All rights reserved.
2
+ // Licensed under the Apache License Version 2.0 that can be found in the
3
+ // LICENSE file in the root directory of this source tree.
4
+ import {
5
+ useCallback,
6
+ useContext,
7
+ useDebugValue,
8
+ useErrorBoundary,
9
+ useId,
10
+ useImperativeHandle,
11
+ useMemo,
12
+ useLayoutEffect as usePreactLayoutEffect,
13
+ useReducer,
14
+ useRef,
15
+ useState,
16
+ } from 'preact/hooks';
17
+ import type { DependencyList, EffectCallback } from 'react';
18
+
19
+ /**
20
+ * `useLayoutEffect` is now an alias of `useEffect`. Use `useEffect` instead.
21
+ *
22
+ * Accepts a function that contains imperative, possibly effectful code. The effects run after main thread dom update without blocking it.
23
+ *
24
+ * @param effect - Imperative function that can return a cleanup function
25
+ * @param deps - If present, effect will only activate if the values in the list change (using ===).
26
+ *
27
+ * @public
28
+ *
29
+ * @deprecated `useLayoutEffect` in the background thread cannot offer the precise timing for reading layout information and synchronously re-render, which is different from React.
30
+ */
31
+ function useLayoutEffect(effect: EffectCallback, deps?: DependencyList): void {
32
+ return usePreactLayoutEffect(effect, deps);
33
+ }
34
+
35
+ /**
36
+ * Accepts a function that contains imperative, possibly effectful code.
37
+ * The effects run after main thread dom update without blocking it.
38
+ *
39
+ * @param effect - Imperative function that can return a cleanup function
40
+ * @param deps - If present, effect will only activate if the values in the list change (using ===).
41
+ *
42
+ * @public
43
+ */
44
+ function useEffect(effect: EffectCallback, deps?: DependencyList): void {
45
+ return usePreactLayoutEffect(effect, deps);
46
+ }
47
+
48
+ export {
49
+ // preact
50
+ useState,
51
+ useReducer,
52
+ useRef,
53
+ useImperativeHandle,
54
+ useLayoutEffect,
55
+ useEffect,
56
+ useCallback,
57
+ useMemo,
58
+ useContext,
59
+ useDebugValue,
60
+ useErrorBoundary,
61
+ useId,
62
+ };
@@ -0,0 +1,59 @@
1
+ // Copyright 2024 The Lynx Authors. All rights reserved.
2
+ // Licensed under the Apache License Version 2.0 that can be found in the
3
+ // LICENSE file in the root directory of this source tree.
4
+ import { useEffect, useMemo, useRef } from 'preact/hooks';
5
+
6
+ /**
7
+ * `useLynxGlobalEventListener` help you `addListener` as early as possible.
8
+ *
9
+ * @example
10
+ *
11
+ * Use this hooks to listen to event 'exposure' and event 'disexposure'
12
+ *
13
+ * ```jsx
14
+ * function App() {
15
+ * useLynxGlobalEventListener('exposure', (e) => {
16
+ * console.log("exposure", e)
17
+ * })
18
+ * useLynxGlobalEventListener('disexposure', (e) => {
19
+ * console.log("disexposure", e)
20
+ * })
21
+ * return (
22
+ * <view
23
+ * style='width: 100px; height: 100px; background-color: red;'
24
+ * exposure-id='a'
25
+ * />
26
+ * )
27
+ * }
28
+ * ```
29
+ *
30
+ * @param eventName - Event name to listen
31
+ * @param listener - Event handler
32
+ * @public
33
+ */
34
+ export function useLynxGlobalEventListener<T extends (...args: unknown[]) => void>(
35
+ eventName: string,
36
+ listener: T,
37
+ ): void {
38
+ 'background only';
39
+
40
+ const previousArgsRef = useRef<[string, T]>();
41
+
42
+ useMemo(() => {
43
+ if (previousArgsRef.current) {
44
+ const [eventName, listener] = previousArgsRef.current;
45
+ lynx.getJSModule('GlobalEventEmitter').removeListener(eventName, listener);
46
+ }
47
+ lynx.getJSModule('GlobalEventEmitter').addListener(eventName, listener);
48
+ previousArgsRef.current = [eventName, listener];
49
+ }, [eventName, listener]);
50
+
51
+ useEffect(() => {
52
+ return () => {
53
+ if (previousArgsRef.current) {
54
+ const [eventName, listener] = previousArgsRef.current;
55
+ lynx.getJSModule('GlobalEventEmitter').removeListener(eventName, listener);
56
+ }
57
+ };
58
+ }, []);
59
+ }