basalt-core 0.0.0-rc5

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 (325) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cli/basalt.d.ts +3 -0
  3. package/dist/cli/basalt.d.ts.map +1 -0
  4. package/dist/cli/basalt.js +47 -0
  5. package/dist/cli/basalt.js.map +1 -0
  6. package/dist/cli/bundle-cli.d.ts +12 -0
  7. package/dist/cli/bundle-cli.d.ts.map +1 -0
  8. package/dist/cli/bundle-cli.js +124 -0
  9. package/dist/cli/bundle-cli.js.map +1 -0
  10. package/dist/cli/bundleWithAssets.d.ts +79 -0
  11. package/dist/cli/bundleWithAssets.d.ts.map +1 -0
  12. package/dist/cli/bundleWithAssets.js +198 -0
  13. package/dist/cli/bundleWithAssets.js.map +1 -0
  14. package/dist/cli/desktop.d.ts +339 -0
  15. package/dist/cli/desktop.d.ts.map +1 -0
  16. package/dist/cli/desktop.js +1029 -0
  17. package/dist/cli/desktop.js.map +1 -0
  18. package/dist/cli/doctor.d.ts +31 -0
  19. package/dist/cli/doctor.d.ts.map +1 -0
  20. package/dist/cli/doctor.js +283 -0
  21. package/dist/cli/doctor.js.map +1 -0
  22. package/dist/cli/init.d.ts +77 -0
  23. package/dist/cli/init.d.ts.map +1 -0
  24. package/dist/cli/init.js +442 -0
  25. package/dist/cli/init.js.map +1 -0
  26. package/dist/cli/metro.d.ts +49 -0
  27. package/dist/cli/metro.d.ts.map +1 -0
  28. package/dist/cli/metro.js +148 -0
  29. package/dist/cli/metro.js.map +1 -0
  30. package/dist/cli/packageApp.d.ts +102 -0
  31. package/dist/cli/packageApp.d.ts.map +1 -0
  32. package/dist/cli/packageApp.js +319 -0
  33. package/dist/cli/packageApp.js.map +1 -0
  34. package/dist/cli/steps.d.ts +34 -0
  35. package/dist/cli/steps.d.ts.map +1 -0
  36. package/dist/cli/steps.js +53 -0
  37. package/dist/cli/steps.js.map +1 -0
  38. package/dist/metro-config.d.ts +168 -0
  39. package/dist/metro-config.d.ts.map +1 -0
  40. package/dist/metro-config.js +671 -0
  41. package/dist/metro-config.js.map +1 -0
  42. package/dist/react-native.config.d.ts +7 -0
  43. package/dist/react-native.config.d.ts.map +1 -0
  44. package/dist/react-native.config.js +80 -0
  45. package/dist/react-native.config.js.map +1 -0
  46. package/dist/src/DragSource.d.ts +52 -0
  47. package/dist/src/DragSource.d.ts.map +1 -0
  48. package/dist/src/DragSource.js +97 -0
  49. package/dist/src/DragSource.js.map +1 -0
  50. package/dist/src/DropTarget.d.ts +58 -0
  51. package/dist/src/DropTarget.d.ts.map +1 -0
  52. package/dist/src/DropTarget.js +131 -0
  53. package/dist/src/DropTarget.js.map +1 -0
  54. package/dist/src/KeyHandler.d.ts +57 -0
  55. package/dist/src/KeyHandler.d.ts.map +1 -0
  56. package/dist/src/KeyHandler.js +48 -0
  57. package/dist/src/KeyHandler.js.map +1 -0
  58. package/dist/src/Menu.d.ts +72 -0
  59. package/dist/src/Menu.d.ts.map +1 -0
  60. package/dist/src/Menu.js +179 -0
  61. package/dist/src/Menu.js.map +1 -0
  62. package/dist/src/TitleBar.d.ts +75 -0
  63. package/dist/src/TitleBar.d.ts.map +1 -0
  64. package/dist/src/TitleBar.js +236 -0
  65. package/dist/src/TitleBar.js.map +1 -0
  66. package/dist/src/Window.d.ts +87 -0
  67. package/dist/src/Window.d.ts.map +1 -0
  68. package/dist/src/Window.js +248 -0
  69. package/dist/src/Window.js.map +1 -0
  70. package/dist/src/closeRequest.d.ts +55 -0
  71. package/dist/src/closeRequest.d.ts.map +1 -0
  72. package/dist/src/closeRequest.js +134 -0
  73. package/dist/src/closeRequest.js.map +1 -0
  74. package/dist/src/index.d.ts +45 -0
  75. package/dist/src/index.d.ts.map +1 -0
  76. package/dist/src/index.js +92 -0
  77. package/dist/src/index.js.map +1 -0
  78. package/dist/src/overrides/Alert.d.ts +69 -0
  79. package/dist/src/overrides/Alert.d.ts.map +1 -0
  80. package/dist/src/overrides/Alert.js +112 -0
  81. package/dist/src/overrides/Alert.js.map +1 -0
  82. package/dist/src/overrides/BaseViewConfig.d.ts +28 -0
  83. package/dist/src/overrides/BaseViewConfig.d.ts.map +1 -0
  84. package/dist/src/overrides/BaseViewConfig.js +72 -0
  85. package/dist/src/overrides/BaseViewConfig.js.map +1 -0
  86. package/dist/src/overrides/Platform.linux.d.ts +10 -0
  87. package/dist/src/overrides/Platform.linux.d.ts.map +1 -0
  88. package/dist/src/overrides/Platform.linux.js +15 -0
  89. package/dist/src/overrides/Platform.linux.js.map +1 -0
  90. package/dist/src/overrides/Platform.macos.d.ts +10 -0
  91. package/dist/src/overrides/Platform.macos.d.ts.map +1 -0
  92. package/dist/src/overrides/Platform.macos.js +15 -0
  93. package/dist/src/overrides/Platform.macos.js.map +1 -0
  94. package/dist/src/overrides/Platform.windows.d.ts +10 -0
  95. package/dist/src/overrides/Platform.windows.d.ts.map +1 -0
  96. package/dist/src/overrides/Platform.windows.js +15 -0
  97. package/dist/src/overrides/Platform.windows.js.map +1 -0
  98. package/dist/src/overrides/ReactDevToolsSettingsManager.d.ts +24 -0
  99. package/dist/src/overrides/ReactDevToolsSettingsManager.d.ts.map +1 -0
  100. package/dist/src/overrides/ReactDevToolsSettingsManager.js +30 -0
  101. package/dist/src/overrides/ReactDevToolsSettingsManager.js.map +1 -0
  102. package/dist/src/overrides/RefreshControl.d.ts +52 -0
  103. package/dist/src/overrides/RefreshControl.d.ts.map +1 -0
  104. package/dist/src/overrides/RefreshControl.js +92 -0
  105. package/dist/src/overrides/RefreshControl.js.map +1 -0
  106. package/dist/src/overrides/ScrollView.d.ts +39 -0
  107. package/dist/src/overrides/ScrollView.d.ts.map +1 -0
  108. package/dist/src/overrides/ScrollView.js +59 -0
  109. package/dist/src/overrides/ScrollView.js.map +1 -0
  110. package/dist/src/overrides/Share.d.ts +96 -0
  111. package/dist/src/overrides/Share.d.ts.map +1 -0
  112. package/dist/src/overrides/Share.js +97 -0
  113. package/dist/src/overrides/Share.js.map +1 -0
  114. package/dist/src/overrides/TextInput.d.ts +81 -0
  115. package/dist/src/overrides/TextInput.d.ts.map +1 -0
  116. package/dist/src/overrides/TextInput.js +213 -0
  117. package/dist/src/overrides/TextInput.js.map +1 -0
  118. package/dist/src/overrides/View.d.ts +36 -0
  119. package/dist/src/overrides/View.d.ts.map +1 -0
  120. package/dist/src/overrides/View.js +99 -0
  121. package/dist/src/overrides/View.js.map +1 -0
  122. package/dist/src/overrides/createPlatform.d.ts +32 -0
  123. package/dist/src/overrides/createPlatform.d.ts.map +1 -0
  124. package/dist/src/overrides/createPlatform.js +84 -0
  125. package/dist/src/overrides/createPlatform.js.map +1 -0
  126. package/dist/src/overrides/setUpDeveloperTools.d.ts +28 -0
  127. package/dist/src/overrides/setUpDeveloperTools.d.ts.map +1 -0
  128. package/dist/src/overrides/setUpDeveloperTools.js +84 -0
  129. package/dist/src/overrides/setUpDeveloperTools.js.map +1 -0
  130. package/dist/src/overrides/setUpXHR.d.ts +46 -0
  131. package/dist/src/overrides/setUpXHR.d.ts.map +1 -0
  132. package/dist/src/overrides/setUpXHR.js +236 -0
  133. package/dist/src/overrides/setUpXHR.js.map +1 -0
  134. package/dist/src/quitRequest.d.ts +55 -0
  135. package/dist/src/quitRequest.d.ts.map +1 -0
  136. package/dist/src/quitRequest.js +121 -0
  137. package/dist/src/quitRequest.js.map +1 -0
  138. package/dist/src/resourcePath.d.ts +18 -0
  139. package/dist/src/resourcePath.d.ts.map +1 -0
  140. package/dist/src/resourcePath.js +31 -0
  141. package/dist/src/resourcePath.js.map +1 -0
  142. package/dist/src/responseBody.d.ts +76 -0
  143. package/dist/src/responseBody.d.ts.map +1 -0
  144. package/dist/src/responseBody.js +94 -0
  145. package/dist/src/responseBody.js.map +1 -0
  146. package/dist/src/responseHeaders.d.ts +40 -0
  147. package/dist/src/responseHeaders.d.ts.map +1 -0
  148. package/dist/src/responseHeaders.js +75 -0
  149. package/dist/src/responseHeaders.js.map +1 -0
  150. package/dist/src/titleBarState.d.ts +43 -0
  151. package/dist/src/titleBarState.d.ts.map +1 -0
  152. package/dist/src/titleBarState.js +77 -0
  153. package/dist/src/titleBarState.js.map +1 -0
  154. package/dist/src/useContextMenu.d.ts +113 -0
  155. package/dist/src/useContextMenu.d.ts.map +1 -0
  156. package/dist/src/useContextMenu.js +109 -0
  157. package/dist/src/useContextMenu.js.map +1 -0
  158. package/dist/src/useDialog.d.ts +98 -0
  159. package/dist/src/useDialog.d.ts.map +1 -0
  160. package/dist/src/useDialog.js +112 -0
  161. package/dist/src/useDialog.js.map +1 -0
  162. package/dist/src/useDisplays.d.ts +70 -0
  163. package/dist/src/useDisplays.d.ts.map +1 -0
  164. package/dist/src/useDisplays.js +118 -0
  165. package/dist/src/useDisplays.js.map +1 -0
  166. package/dist/src/useHandledKeys.d.ts +38 -0
  167. package/dist/src/useHandledKeys.d.ts.map +1 -0
  168. package/dist/src/useHandledKeys.js +70 -0
  169. package/dist/src/useHandledKeys.js.map +1 -0
  170. package/dist/src/useWindow.d.ts +140 -0
  171. package/dist/src/useWindow.d.ts.map +1 -0
  172. package/dist/src/useWindow.js +233 -0
  173. package/dist/src/useWindow.js.map +1 -0
  174. package/dist/tsconfig.tsbuildinfo +1 -0
  175. package/native/CMakeLists.txt +355 -0
  176. package/native/bootstrap.sh +613 -0
  177. package/native/cmake/CompilerFlags.cmake +49 -0
  178. package/native/cmake/Expo.cmake +125 -0
  179. package/native/cmake/ReactNativeCore.cmake +612 -0
  180. package/native/cmake/Reanimated.cmake +108 -0
  181. package/native/cmake/Skia.cmake +379 -0
  182. package/native/cmake/ThirdParty.cmake +290 -0
  183. package/native/cmake/Worklets.cmake +67 -0
  184. package/native/cmake/codegen/CMakeLists.txt +32 -0
  185. package/native/core/AppIdentity.cpp +85 -0
  186. package/native/core/AppIdentity.h +59 -0
  187. package/native/core/AppPaths.cpp +96 -0
  188. package/native/core/AppPaths.h +53 -0
  189. package/native/core/AppearanceModule.cpp +60 -0
  190. package/native/core/AppearanceModule.h +40 -0
  191. package/native/core/Backface.h +59 -0
  192. package/native/core/BlobModule.cpp +283 -0
  193. package/native/core/BlobModule.h +76 -0
  194. package/native/core/BlobRegistry.cpp +75 -0
  195. package/native/core/BlobRegistry.h +44 -0
  196. package/native/core/ColorScheme.cpp +105 -0
  197. package/native/core/ColorScheme.h +59 -0
  198. package/native/core/ComponentRegistry.h +30 -0
  199. package/native/core/ControlMetrics.h +37 -0
  200. package/native/core/CoreModules.cpp +592 -0
  201. package/native/core/CoreModules.h +308 -0
  202. package/native/core/DebuggingOverlay.cpp +106 -0
  203. package/native/core/DebuggingOverlay.h +65 -0
  204. package/native/core/DesktopControls.cpp +232 -0
  205. package/native/core/DesktopControls.h +170 -0
  206. package/native/core/DevBundle.cpp +108 -0
  207. package/native/core/DevBundle.h +69 -0
  208. package/native/core/DevMenu.cpp +99 -0
  209. package/native/core/DevMenu.h +75 -0
  210. package/native/core/DialogModule.cpp +150 -0
  211. package/native/core/DialogModule.h +51 -0
  212. package/native/core/DragAndDrop.cpp +45 -0
  213. package/native/core/DragAndDrop.h +225 -0
  214. package/native/core/ExpoImageComponent.cpp +79 -0
  215. package/native/core/ExpoImageComponent.h +80 -0
  216. package/native/core/ExpoModules.cpp +415 -0
  217. package/native/core/ExpoModules.h +115 -0
  218. package/native/core/ExpoRuntime.cpp +366 -0
  219. package/native/core/ExpoRuntime.h +42 -0
  220. package/native/core/FocusRing.h +36 -0
  221. package/native/core/FontRegistry.h +51 -0
  222. package/native/core/GestureHandlerModule.cpp +136 -0
  223. package/native/core/GestureHandlerModule.h +71 -0
  224. package/native/core/Gestures.cpp +533 -0
  225. package/native/core/Gestures.h +145 -0
  226. package/native/core/HoverTracker.cpp +69 -0
  227. package/native/core/HoverTracker.h +109 -0
  228. package/native/core/HttpClient.cpp +282 -0
  229. package/native/core/ImageBytes.cpp +205 -0
  230. package/native/core/ImageBytes.h +29 -0
  231. package/native/core/ImageCache.cpp +51 -0
  232. package/native/core/ImageCache.h +89 -0
  233. package/native/core/JsRuntimeAccess.cpp +70 -0
  234. package/native/core/JsRuntimeAccess.h +60 -0
  235. package/native/core/JsiPromise.h +51 -0
  236. package/native/core/KeyEvents.cpp +116 -0
  237. package/native/core/KeyEvents.h +144 -0
  238. package/native/core/LogBoxSurface.cpp +46 -0
  239. package/native/core/LogBoxSurface.h +68 -0
  240. package/native/core/MenuModel.h +117 -0
  241. package/native/core/MenuModule.cpp +209 -0
  242. package/native/core/MenuModule.h +66 -0
  243. package/native/core/MountingWalk.h +524 -0
  244. package/native/core/PackageModules.cpp.in +25 -0
  245. package/native/core/PackageModules.h +50 -0
  246. package/native/core/PlatformConstantsModule.cpp +63 -0
  247. package/native/core/PlatformConstantsModule.h +64 -0
  248. package/native/core/PlatformServices.h +213 -0
  249. package/native/core/PointerButtons.h +63 -0
  250. package/native/core/PullToRefresh.cpp +57 -0
  251. package/native/core/PullToRefresh.h +73 -0
  252. package/native/core/ReanimatedCompat.h +47 -0
  253. package/native/core/ReanimatedModule.cpp +203 -0
  254. package/native/core/ReanimatedModule.h +55 -0
  255. package/native/core/ScrollAnimation.cpp +59 -0
  256. package/native/core/ScrollAnimation.h +70 -0
  257. package/native/core/ScrollBounds.cpp +26 -0
  258. package/native/core/ScrollBounds.h +68 -0
  259. package/native/core/ScrollIndicator.cpp +50 -0
  260. package/native/core/ScrollIndicator.h +69 -0
  261. package/native/core/ScrollMomentum.cpp +71 -0
  262. package/native/core/ScrollMomentum.h +73 -0
  263. package/native/core/ScrollSnap.cpp +123 -0
  264. package/native/core/ScrollSnap.h +80 -0
  265. package/native/core/ShareFallback.cpp +101 -0
  266. package/native/core/ShareFallback.h +45 -0
  267. package/native/core/SkiaPictureViewComponent.cpp +11 -0
  268. package/native/core/SkiaPictureViewComponent.h +47 -0
  269. package/native/core/SourceCodeModule.cpp +55 -0
  270. package/native/core/SourceCodeModule.h +53 -0
  271. package/native/core/StatusBarModule.cpp +23 -0
  272. package/native/core/StatusBarModule.h +42 -0
  273. package/native/core/TestDialog.cpp +148 -0
  274. package/native/core/TestDialog.h +96 -0
  275. package/native/core/TestKeys.cpp +78 -0
  276. package/native/core/TestKeys.h +50 -0
  277. package/native/core/TestQuitFile.cpp +33 -0
  278. package/native/core/TestQuitFile.h +60 -0
  279. package/native/core/TestSettle.h +192 -0
  280. package/native/core/TitleBarRegions.h +31 -0
  281. package/native/core/TurboModuleProxy.cpp +51 -0
  282. package/native/core/TurboModuleProxy.h +46 -0
  283. package/native/core/UIManagerAccess.cpp +43 -0
  284. package/native/core/UIManagerAccess.h +43 -0
  285. package/native/core/WindowBoundsCache.cpp +319 -0
  286. package/native/core/WindowControl.h +235 -0
  287. package/native/core/WindowHost.h +158 -0
  288. package/native/core/WindowMethods.cpp +167 -0
  289. package/native/core/WindowMethods.h +84 -0
  290. package/native/core/WindowsModule.cpp +448 -0
  291. package/native/core/WindowsModule.h +133 -0
  292. package/native/core/WorkletsModule.cpp +199 -0
  293. package/native/core/WorkletsModule.h +57 -0
  294. package/native/core/portability_probe.cpp +210 -0
  295. package/native/tests/EventRecorder.h +124 -0
  296. package/native/tests/TestHarness.cpp +109 -0
  297. package/native/tests/TestHarness.h +89 -0
  298. package/native/tests/TreeDump.h +49 -0
  299. package/native/tests/test_app_identity.cpp +114 -0
  300. package/native/tests/test_app_paths.cpp +48 -0
  301. package/native/tests/test_appearance.cpp +107 -0
  302. package/native/tests/test_backface.cpp +79 -0
  303. package/native/tests/test_blobs.cpp +157 -0
  304. package/native/tests/test_controls.cpp +185 -0
  305. package/native/tests/test_devbundle.cpp +103 -0
  306. package/native/tests/test_drag_and_drop.cpp +143 -0
  307. package/native/tests/test_gestures.cpp +331 -0
  308. package/native/tests/test_hover.cpp +92 -0
  309. package/native/tests/test_image_cache.cpp +109 -0
  310. package/native/tests/test_js_runtime_access.cpp +137 -0
  311. package/native/tests/test_key_events.cpp +235 -0
  312. package/native/tests/test_momentum.cpp +138 -0
  313. package/native/tests/test_quit_file.cpp +104 -0
  314. package/native/tests/test_scroll_animation.cpp +120 -0
  315. package/native/tests/test_scroll_bounds.cpp +66 -0
  316. package/native/tests/test_scroll_indicator.cpp +149 -0
  317. package/native/tests/test_scroll_snap.cpp +112 -0
  318. package/native/tests/test_settle.cpp +115 -0
  319. package/native/tests/test_share.cpp +75 -0
  320. package/native/tests/test_sourcecode.cpp +62 -0
  321. package/native/tests/test_window_close.cpp +119 -0
  322. package/native/tests/test_window_limits.cpp +123 -0
  323. package/package.json +43 -0
  324. package/react-native.config.js +86 -0
  325. package/supported-versions.json +66 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metro-config.js","sourceRoot":"","sources":["../metro-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export type PlatformEntry = {
2
+ projectConfig: () => object;
3
+ dependencyConfig: () => null;
4
+ };
5
+ /** @type {Record<string, PlatformEntry>} */
6
+ export const platforms: Record<string, PlatformEntry>;
7
+ //# sourceMappingURL=react-native.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-native.config.d.ts","sourceRoot":"","sources":["../react-native.config.js"],"names":[],"mappings":"4BAiCc;IAAC,aAAa,EAAE,MAAM,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,IAAI,CAAA;CAAC;AAwCzE,4CAA4C;AAC5C,wBADW,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CACnB"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * What React Native's CLI reads out of this package.
3
+ *
4
+ * An entry per platform, without which the CLI does not believe these are
5
+ * platforms and `react-native bundle --platform macos` is rejected before Metro
6
+ * sees it.
7
+ *
8
+ * Commands are not here. `run-linux` needs a GTK host to run, so it belongs to
9
+ * basalt-gtk -- the CLI reads a react-native.config.js out of every
10
+ * dependency, so an app that has only the AppKit package never sees a command it
11
+ * could not have used.
12
+ *
13
+ * `projectConfig` returning null for a project with no native directory is how
14
+ * the CLI is told "this project does not target that platform", and is what
15
+ * keeps the command out of the way in an app that only builds for iOS. Today
16
+ * every project targets all three, because there is no per-project native code
17
+ * to look for yet; when there is, this is where the check goes.
18
+ *
19
+ * @format
20
+ */
21
+ // Checked, not compiled.
22
+ //
23
+ // This file stays JavaScript on purpose, and it is the only one in the package
24
+ // that does. React Native's CLI reads it from `node_modules/<package>/` by
25
+ // path convention rather than through `exports`, so it has to be loadable as
26
+ // CommonJS at exactly this path -- and what it exports is a data structure,
27
+ // which is the one shape types buy nothing to write and everything to check.
28
+ // `@ts-check` gives the checking without putting a tool this project does not
29
+ // control behind a build step.
30
+ // @ts-check
31
+ 'use strict';
32
+ /** @typedef {{projectConfig: () => object, dependencyConfig: () => null}} PlatformEntry */
33
+ // `./dist/metro-config`, not `./metro-config`: that file is TypeScript now and
34
+ // this one is not compiled, so the sibling it used to sit beside is no longer
35
+ // there. This is the file React Native's CLI loads from the package root, so
36
+ // it must resolve with nothing but Node.
37
+ // Required from `dist` at runtime, typed from the source.
38
+ //
39
+ // They are the same module. Splitting them this way is what stops checking
40
+ // this file from depending on the output of the very compilation that checks
41
+ // it -- `./dist/metro-config.d.ts` does not exist yet on a clean build, and a
42
+ // config file that only type-checks on the second run is a trap.
43
+ //
44
+ // The path is built rather than written so that TypeScript does not try to
45
+ // resolve it; the cast beside it says what it is.
46
+ const metroConfig = /** @type {typeof import('./metro-config')} */ (require(`${__dirname}/dist/metro-config`));
47
+ const DESKTOP_PLATFORMS = metroConfig.DESKTOP_PLATFORMS;
48
+ // The same entry for each. They differ in their view layer and in nothing the
49
+ // CLI can see, which is the whole argument of this project restated as four
50
+ // lines of configuration.
51
+ //
52
+ // Deliberately no `npmPackageName`, which is the one field that looks obviously
53
+ // right and is wrong here.
54
+ //
55
+ // Setting it tells the CLI this is an *out-of-tree platform* in the
56
+ // react-native-macos and react-native-windows sense: a fork. It then installs
57
+ // `reactNativePlatformResolver`, which rewrites every `react-native/...` import
58
+ // to `basalt-core/...` when bundling, and requires this package to
59
+ // export `./setup-env`. Both are correct for a fork that vendors React Native's
60
+ // JavaScript. This package vendors none of it -- it redirects nine of React
61
+ // Native's own shims to their existing `.android.js` siblings and overrides two
62
+ // files -- so the rewrite sends every import into a package that does not
63
+ // contain it.
64
+ //
65
+ // Without the field these are still platforms the CLI accepts, and resolution
66
+ // stays with `withDesktopPlatforms` in metro-config.js, which is where the
67
+ // actual policy lives.
68
+ /** @type {Record<string, PlatformEntry>} */
69
+ const platforms = {};
70
+ for (const name of DESKTOP_PLATFORMS) {
71
+ platforms[name] = {
72
+ projectConfig: () => ({}),
73
+ // No autolinking: nothing here has native code to link yet, and claiming
74
+ // otherwise would make the CLI generate references to files that do not
75
+ // exist.
76
+ dependencyConfig: () => null,
77
+ };
78
+ }
79
+ module.exports = { platforms };
80
+ //# sourceMappingURL=react-native.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-native.config.js","sourceRoot":"","sources":["../react-native.config.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,yBAAyB;AACzB,EAAE;AACF,+EAA+E;AAC/E,2EAA2E;AAC3E,6EAA6E;AAC7E,4EAA4E;AAC5E,6EAA6E;AAC7E,8EAA8E;AAC9E,+BAA+B;AAC/B,YAAY;AACZ,YAAY,CAAC;AAEb,2FAA2F;AAE3F,+EAA+E;AAC/E,8EAA8E;AAC9E,6EAA6E;AAC7E,yCAAyC;AACzC,0DAA0D;AAC1D,EAAE;AACF,2EAA2E;AAC3E,6EAA6E;AAC7E,8EAA8E;AAC9E,iEAAiE;AACjE,EAAE;AACF,2EAA2E;AAC3E,kDAAkD;AAClD,MAAM,WAAW,GAAG,8CAA8C,CAAC,CACjE,OAAO,CAAC,GAAG,SAAS,oBAAoB,CAAC,CAC1C,CAAC;AACF,MAAM,iBAAiB,GAAG,WAAW,CAAC,iBAAiB,CAAC;AAExD,8EAA8E;AAC9E,4EAA4E;AAC5E,0BAA0B;AAC1B,EAAE;AACF,gFAAgF;AAChF,2BAA2B;AAC3B,EAAE;AACF,oEAAoE;AACpE,8EAA8E;AAC9E,gFAAgF;AAChF,mEAAmE;AACnE,gFAAgF;AAChF,4EAA4E;AAC5E,gFAAgF;AAChF,0EAA0E;AAC1E,cAAc;AACd,EAAE;AACF,8EAA8E;AAC9E,2EAA2E;AAC3E,uBAAuB;AACvB,4CAA4C;AAC5C,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;IACrC,SAAS,CAAC,IAAI,CAAC,GAAG;QAChB,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;QACzB,yEAAyE;QACzE,wEAAwE;QACxE,SAAS;QACT,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI;KAC7B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,OAAO,GAAG,EAAC,SAAS,EAAC,CAAC"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * `<DragSource>` -- a view that can be dragged out of the app.
3
+ *
4
+ * The other direction from `<DropTarget>`, and the half people forget: a file
5
+ * manager needs it, and so does anything that lets you drag a row into another
6
+ * application.
7
+ *
8
+ * ## Why the payload is a prop and not a callback
9
+ *
10
+ * Every toolkit owns the gesture. `GtkDragSource`,
11
+ * `beginDraggingSessionWithItems:` and `DoDragDrop` all start the drag
12
+ * themselves and ask what is being dragged *synchronously*, on the UI thread.
13
+ * An app asked at that moment would have to answer from JavaScript on another
14
+ * thread -- the same problem `useCloseRequest` has, solved the same way: say it
15
+ * beforehand.
16
+ *
17
+ * So this is declarative. A view says what it represents, and the drag carries
18
+ * that. Changing the prop changes what the next drag carries; there is no
19
+ * moment at which an app is consulted.
20
+ *
21
+ * ## What can be dragged
22
+ *
23
+ * A file path or a line of text, which are the two every desktop understands.
24
+ * A file is offered as a file URL, so another application receives it as a
25
+ * file rather than as its name.
26
+ *
27
+ * Like `<DropTarget>`, this uses `nativeID` and therefore cannot also carry an
28
+ * app's own -- see that file for why the trade is worth it.
29
+ *
30
+ * @format
31
+ */
32
+ import * as React from 'react';
33
+ import type { ViewProps } from 'react-native';
34
+ export type DragSourceProps = ViewProps & {
35
+ /** An absolute path. Dragged out as a file URL. */
36
+ file?: string;
37
+ /** A line of text. Ignored when `file` is set. */
38
+ text?: string;
39
+ };
40
+ /**
41
+ * The nativeID a view carries to be draggable.
42
+ *
43
+ * Files win over text where both are given, which is what the host does too:
44
+ * a desktop dragging a file offers its name as text anyway, so the file is the
45
+ * more specific answer.
46
+ */
47
+ export declare function dragSourceId({ file, text }: {
48
+ file?: string;
49
+ text?: string;
50
+ }): string;
51
+ export declare function DragSource({ file, text, ...rest }: DragSourceProps): React.ReactElement;
52
+ //# sourceMappingURL=DragSource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DragSource.d.ts","sourceRoot":"","sources":["../../src/DragSource.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAG5C,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG;IACxC,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAKF;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,EAAC,IAAI,EAAE,IAAI,EAAC,EAAE;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAC,GAAG,MAAM,CAWjF;AAED,wBAAgB,UAAU,CAAC,EAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAC,EAAE,eAAe,GAAG,KAAK,CAAC,YAAY,CAGrF"}
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.dragSourceId = dragSourceId;
37
+ exports.DragSource = DragSource;
38
+ const jsx_runtime_1 = require("react/jsx-runtime");
39
+ /**
40
+ * `<DragSource>` -- a view that can be dragged out of the app.
41
+ *
42
+ * The other direction from `<DropTarget>`, and the half people forget: a file
43
+ * manager needs it, and so does anything that lets you drag a row into another
44
+ * application.
45
+ *
46
+ * ## Why the payload is a prop and not a callback
47
+ *
48
+ * Every toolkit owns the gesture. `GtkDragSource`,
49
+ * `beginDraggingSessionWithItems:` and `DoDragDrop` all start the drag
50
+ * themselves and ask what is being dragged *synchronously*, on the UI thread.
51
+ * An app asked at that moment would have to answer from JavaScript on another
52
+ * thread -- the same problem `useCloseRequest` has, solved the same way: say it
53
+ * beforehand.
54
+ *
55
+ * So this is declarative. A view says what it represents, and the drag carries
56
+ * that. Changing the prop changes what the next drag carries; there is no
57
+ * moment at which an app is consulted.
58
+ *
59
+ * ## What can be dragged
60
+ *
61
+ * A file path or a line of text, which are the two every desktop understands.
62
+ * A file is offered as a file URL, so another application receives it as a
63
+ * file rather than as its name.
64
+ *
65
+ * Like `<DropTarget>`, this uses `nativeID` and therefore cannot also carry an
66
+ * app's own -- see that file for why the trade is worth it.
67
+ *
68
+ * @format
69
+ */
70
+ const React = __importStar(require("react"));
71
+ const react_native_1 = require("react-native");
72
+ // Must match kDragSourceIdPrefix in native/core/DragAndDrop.h.
73
+ const MARKER_PREFIX = 'basalt-drag:';
74
+ /**
75
+ * The nativeID a view carries to be draggable.
76
+ *
77
+ * Files win over text where both are given, which is what the host does too:
78
+ * a desktop dragging a file offers its name as text anyway, so the file is the
79
+ * more specific answer.
80
+ */
81
+ function dragSourceId({ file, text }) {
82
+ if (file != null && file !== '') {
83
+ return `${MARKER_PREFIX}files:${file}`;
84
+ }
85
+ if (text != null && text !== '') {
86
+ return `${MARKER_PREFIX}text:${text}`;
87
+ }
88
+ // No payload: a marker the host reads as nothing, so the view is simply not
89
+ // draggable. Better than omitting the prop, which would leave a stale
90
+ // marker from a previous render.
91
+ return MARKER_PREFIX;
92
+ }
93
+ function DragSource({ file, text, ...rest }) {
94
+ const nativeID = React.useMemo(() => dragSourceId({ file, text }), [file, text]);
95
+ return (0, jsx_runtime_1.jsx)(react_native_1.View, { ...rest, nativeID: nativeID });
96
+ }
97
+ //# sourceMappingURL=DragSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DragSource.js","sourceRoot":"","sources":["../../src/DragSource.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDA,oCAWC;AAED,gCAGC;;AArED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,6CAA+B;AAE/B,+CAAkC;AASlC,+DAA+D;AAC/D,MAAM,aAAa,GAAG,cAAc,CAAC;AAErC;;;;;;GAMG;AACH,SAAgB,YAAY,CAAC,EAAC,IAAI,EAAE,IAAI,EAAiC;IACvE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;QAChC,OAAO,GAAG,aAAa,SAAS,IAAI,EAAE,CAAC;IACzC,CAAC;IACD,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;QAChC,OAAO,GAAG,aAAa,QAAQ,IAAI,EAAE,CAAC;IACxC,CAAC;IACD,4EAA4E;IAC5E,sEAAsE;IACtE,iCAAiC;IACjC,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAgB,UAAU,CAAC,EAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAkB;IAC/D,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC/E,OAAO,uBAAC,mBAAI,OAAK,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAI,CAAC;AAChD,CAAC"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * `<DropTarget>` -- a view the desktop may drop files or text onto.
3
+ *
4
+ * React Native has no API for this, because a phone has no pointer to drag
5
+ * with. What a desktop application is expected to do is accept a file dropped
6
+ * on it from the file manager, and this is that.
7
+ *
8
+ * ## How a view says so
9
+ *
10
+ * By its `nativeID`, which is the one prop a plain `<View>` carries to the
11
+ * host on every platform -- so there is no registration call, no ref, and no
12
+ * lifetime to get wrong. `<TitleBar.DragRegion>` marks views the same way.
13
+ * The strings are written here and read in `native/core/DragAndDrop.h`, whose
14
+ * tests round-trip them precisely because these two files cannot import each
15
+ * other.
16
+ *
17
+ * It follows that a `<DropTarget>` cannot also carry an app's own `nativeID`.
18
+ * That is a real limit and the honest one to take: the alternative was a
19
+ * registration protocol whose failure mode is a target that silently stops
20
+ * accepting after a re-render.
21
+ *
22
+ * ## What the handlers get
23
+ *
24
+ * `onDragOver` and `onDragLeave` are for the "you may drop here" state, and
25
+ * carry no contents -- no desktop reveals what is being dragged until it
26
+ * lands, and one that did should not tempt an app into reading it early.
27
+ * `onDrop` carries the files and the text.
28
+ *
29
+ * @format
30
+ */
31
+ import * as React from 'react';
32
+ import type { ViewProps } from 'react-native';
33
+ /** What was dropped. Both may be present; see native/core/DragAndDrop.h. */
34
+ export type DropPayload = {
35
+ /** Absolute paths, not URIs. */
36
+ files: string[];
37
+ text: string;
38
+ };
39
+ export type DropPoint = {
40
+ /** In the window's coordinates, like a touch. */
41
+ x: number;
42
+ y: number;
43
+ };
44
+ export type DropTargetProps = ViewProps & {
45
+ /**
46
+ * Which kinds this view takes. A drag offering none of them is not offered
47
+ * to this view at all, so the cursor says no rather than the app refusing
48
+ * after the fact.
49
+ */
50
+ accepts?: ReadonlyArray<'files' | 'text'>;
51
+ onDragOver?: (point: DropPoint) => void;
52
+ onDragLeave?: () => void;
53
+ onDrop?: (payload: DropPayload, point: DropPoint) => void;
54
+ };
55
+ /** The nativeID a view carries to accept these kinds. */
56
+ export declare function dropTargetId(accepts: ReadonlyArray<'files' | 'text'>): string;
57
+ export declare function DropTarget({ accepts, onDragOver, onDragLeave, onDrop, ...rest }: DropTargetProps): React.ReactElement;
58
+ //# sourceMappingURL=DropTarget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DropTarget.d.ts","sourceRoot":"","sources":["../../src/DropTarget.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAG5C,4EAA4E;AAC5E,MAAM,MAAM,WAAW,GAAG;IACxB,gCAAgC;IAChC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,iDAAiD;IACjD,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG;IACxC;;;;OAIG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC;IAC1C,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CAC3D,CAAC;AA0BF,yDAAyD;AACzD,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,MAAM,CAW7E;AAED,wBAAgB,UAAU,CAAC,EACzB,OAA2B,EAC3B,UAAU,EACV,WAAW,EACX,MAAM,EACN,GAAG,IAAI,EACR,EAAE,eAAe,GAAG,KAAK,CAAC,YAAY,CAuCtC"}
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.dropTargetId = dropTargetId;
37
+ exports.DropTarget = DropTarget;
38
+ const jsx_runtime_1 = require("react/jsx-runtime");
39
+ /**
40
+ * `<DropTarget>` -- a view the desktop may drop files or text onto.
41
+ *
42
+ * React Native has no API for this, because a phone has no pointer to drag
43
+ * with. What a desktop application is expected to do is accept a file dropped
44
+ * on it from the file manager, and this is that.
45
+ *
46
+ * ## How a view says so
47
+ *
48
+ * By its `nativeID`, which is the one prop a plain `<View>` carries to the
49
+ * host on every platform -- so there is no registration call, no ref, and no
50
+ * lifetime to get wrong. `<TitleBar.DragRegion>` marks views the same way.
51
+ * The strings are written here and read in `native/core/DragAndDrop.h`, whose
52
+ * tests round-trip them precisely because these two files cannot import each
53
+ * other.
54
+ *
55
+ * It follows that a `<DropTarget>` cannot also carry an app's own `nativeID`.
56
+ * That is a real limit and the honest one to take: the alternative was a
57
+ * registration protocol whose failure mode is a target that silently stops
58
+ * accepting after a re-render.
59
+ *
60
+ * ## What the handlers get
61
+ *
62
+ * `onDragOver` and `onDragLeave` are for the "you may drop here" state, and
63
+ * carry no contents -- no desktop reveals what is being dragged until it
64
+ * lands, and one that did should not tempt an app into reading it early.
65
+ * `onDrop` carries the files and the text.
66
+ *
67
+ * @format
68
+ */
69
+ const React = __importStar(require("react"));
70
+ const react_native_1 = require("react-native");
71
+ // Asked for, and the answer thrown away, because *getting* the module is what
72
+ // constructs it -- and its constructor is what registers the host-side drop
73
+ // listener. Without this an app that uses only <DropTarget> never instantiates
74
+ // BasaltWindows, the listener is never set, and every drop is found by the
75
+ // host, reported into a null std::function, and silently discarded. Which is
76
+ // exactly what happened: the C++ said "onto tag 18" and JavaScript heard
77
+ // nothing.
78
+ react_native_1.TurboModuleRegistry.get('BasaltWindows');
79
+ // Must match kDropTargetIdPrefix in native/core/DragAndDrop.h.
80
+ const MARKER_PREFIX = 'basalt-drop:';
81
+ // Must match kDropEvent in native/core/WindowsModule.h.
82
+ const DROP_EVENT = 'basaltDrop';
83
+ /** The nativeID a view carries to accept these kinds. */
84
+ function dropTargetId(accepts) {
85
+ // Ordered rather than as given: the host parses either order, and a stable
86
+ // string keeps the prop from changing identity on every render.
87
+ const kinds = [];
88
+ if (accepts.includes('files')) {
89
+ kinds.push('files');
90
+ }
91
+ if (accepts.includes('text')) {
92
+ kinds.push('text');
93
+ }
94
+ return MARKER_PREFIX + kinds.join(',');
95
+ }
96
+ function DropTarget({ accepts = ['files', 'text'], onDragOver, onDragLeave, onDrop, ...rest }) {
97
+ // The tag is not known until the view is mounted, and the event carries it
98
+ // -- so what the subscription matches on is the ref's current tag rather
99
+ // than anything captured at render.
100
+ const ref = React.useRef(null);
101
+ // Handlers through refs, so an app passing new closures every render does
102
+ // not re-subscribe.
103
+ const handlers = React.useRef({ onDragOver, onDragLeave, onDrop });
104
+ handlers.current = { onDragOver, onDragLeave, onDrop };
105
+ React.useEffect(() => {
106
+ const subscription = react_native_1.DeviceEventEmitter.addListener(DROP_EVENT, (event) => {
107
+ // `__nativeTag`, with two underscores: that is what the new renderer
108
+ // puts on a host component's ref. `_nativeTag` is the old one and is
109
+ // simply undefined here, which made every event match nothing --
110
+ // silently, because an event for another view is also no match.
111
+ const tag = ref.current?.__nativeTag;
112
+ if (tag == null || event.tag !== tag) {
113
+ return;
114
+ }
115
+ const point = { x: event.x, y: event.y };
116
+ if (event.phase === 'over') {
117
+ handlers.current.onDragOver?.(point);
118
+ }
119
+ else if (event.phase === 'leave') {
120
+ handlers.current.onDragLeave?.();
121
+ }
122
+ else {
123
+ handlers.current.onDrop?.({ files: event.files ?? [], text: event.text ?? '' }, point);
124
+ }
125
+ });
126
+ return () => subscription.remove();
127
+ }, []);
128
+ const nativeID = React.useMemo(() => dropTargetId(accepts), [accepts.join(',')]);
129
+ return (0, jsx_runtime_1.jsx)(react_native_1.View, { ...rest, ref: ref, nativeID: nativeID });
130
+ }
131
+ //# sourceMappingURL=DropTarget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DropTarget.js","sourceRoot":"","sources":["../../src/DropTarget.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * `<KeyHandler>` -- a view that declares keyboard shortcuts.
3
+ *
4
+ * `onKeyPress` exists on a `<TextInput>` and a `<View>` had nothing, so an app
5
+ * could not bind a shortcut to anything it draws. On a phone that is no loss; on
6
+ * a desktop it is most of the interface.
7
+ *
8
+ * ## The names are a browser's
9
+ *
10
+ * `key` is what `KeyboardEvent.key` reports: `'a'`, `'A'`, `' '`, `'ArrowLeft'`,
11
+ * `'Escape'`. react-native-macos and react-native-windows both use these, so a
12
+ * binding means the same thing on every platform an app might run on. Case
13
+ * follows the character, as in a browser: Shift+A is `'A'` *and* has `shiftKey`.
14
+ *
15
+ * ## Why the keys are declared and not just listened for
16
+ *
17
+ * Because a key nothing handled has to go on -- to the menu, to a focused text
18
+ * field, to a scroll view that scrolls on arrows -- and a key that was handled
19
+ * must not. The host decides that synchronously, inside `keyDown:`, and cannot
20
+ * ask JavaScript at that moment. So the list is what answers, and a combination
21
+ * absent from it is one this view will never be told about.
22
+ *
23
+ * ## Why not `nativeID`, which is how `<DropTarget>` does it
24
+ *
25
+ * Two reasons, both about this feature rather than taste. The list is long and it
26
+ * changes -- an editor registers twenty-odd combinations and adds to them as
27
+ * panes mount -- and `nativeID` holds one thing, which `<DropTarget>` already
28
+ * documents as a limit. A timeline that accepts dropped media *and* has shortcuts
29
+ * is an ordinary thing to want, and two features competing for one string would
30
+ * make it impossible.
31
+ *
32
+ * So this registers by the view's tag and unregisters on unmount. The failure
33
+ * mode that trade brings -- silently stopping after a re-render -- is what
34
+ * `keys` being in the effect's dependencies is for, and what a scenario asserts.
35
+ */
36
+ import React from 'react';
37
+ import { type ViewProps } from 'react-native';
38
+ import type { HandledKey, PressedKey } from './useHandledKeys';
39
+ export type { HandledKey, PressedKey } from './useHandledKeys';
40
+ export type KeyHandlerProps = ViewProps & {
41
+ /** The combinations this view handles. Anything else passes through. */
42
+ keys: ReadonlyArray<HandledKey>;
43
+ onKeyDown?: (pressed: PressedKey) => void;
44
+ /**
45
+ * Whether to take keyboard focus when it mounts, which defaults to true.
46
+ *
47
+ * A key press arrives at whatever has focus and is offered to that view and
48
+ * its ancestors, so a `<KeyHandler>` nothing ever focuses is never asked. For
49
+ * a window-level shortcut holder -- the common case, and the reason this
50
+ * exists -- that would mean no shortcut ever fires, which is the wrong default
51
+ * to have. Set it false for a handler inside a pane that should only be live
52
+ * while that pane has focus.
53
+ */
54
+ focusOnMount?: boolean;
55
+ };
56
+ export declare function KeyHandler({ keys, onKeyDown, focusOnMount, children, ...viewProps }: KeyHandlerProps): React.ReactElement;
57
+ //# sourceMappingURL=KeyHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeyHandler.d.ts","sourceRoot":"","sources":["../../src/KeyHandler.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,OAAO,KAAe,MAAM,OAAO,CAAC;AACpC,OAAO,EAAO,KAAK,SAAS,EAAC,MAAM,cAAc,CAAC;AAIlD,OAAO,KAAK,EAAC,UAAU,EAAE,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAG7D,YAAY,EAAC,UAAU,EAAE,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAE7D,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG;IACxC,wEAAwE;IACxE,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC;IAC1C;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,SAAS,EACT,YAAmB,EACnB,QAAQ,EACR,GAAG,SAAS,EACb,EAAE,eAAe,GAAG,KAAK,CAAC,YAAY,CAQtC"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KeyHandler = KeyHandler;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ /**
6
+ * `<KeyHandler>` -- a view that declares keyboard shortcuts.
7
+ *
8
+ * `onKeyPress` exists on a `<TextInput>` and a `<View>` had nothing, so an app
9
+ * could not bind a shortcut to anything it draws. On a phone that is no loss; on
10
+ * a desktop it is most of the interface.
11
+ *
12
+ * ## The names are a browser's
13
+ *
14
+ * `key` is what `KeyboardEvent.key` reports: `'a'`, `'A'`, `' '`, `'ArrowLeft'`,
15
+ * `'Escape'`. react-native-macos and react-native-windows both use these, so a
16
+ * binding means the same thing on every platform an app might run on. Case
17
+ * follows the character, as in a browser: Shift+A is `'A'` *and* has `shiftKey`.
18
+ *
19
+ * ## Why the keys are declared and not just listened for
20
+ *
21
+ * Because a key nothing handled has to go on -- to the menu, to a focused text
22
+ * field, to a scroll view that scrolls on arrows -- and a key that was handled
23
+ * must not. The host decides that synchronously, inside `keyDown:`, and cannot
24
+ * ask JavaScript at that moment. So the list is what answers, and a combination
25
+ * absent from it is one this view will never be told about.
26
+ *
27
+ * ## Why not `nativeID`, which is how `<DropTarget>` does it
28
+ *
29
+ * Two reasons, both about this feature rather than taste. The list is long and it
30
+ * changes -- an editor registers twenty-odd combinations and adds to them as
31
+ * panes mount -- and `nativeID` holds one thing, which `<DropTarget>` already
32
+ * documents as a limit. A timeline that accepts dropped media *and* has shortcuts
33
+ * is an ordinary thing to want, and two features competing for one string would
34
+ * make it impossible.
35
+ *
36
+ * So this registers by the view's tag and unregisters on unmount. The failure
37
+ * mode that trade brings -- silently stopping after a re-render -- is what
38
+ * `keys` being in the effect's dependencies is for, and what a scenario asserts.
39
+ */
40
+ const react_1 = require("react");
41
+ const react_native_1 = require("react-native");
42
+ const useHandledKeys_1 = require("./useHandledKeys");
43
+ function KeyHandler({ keys, onKeyDown, focusOnMount = true, children, ...viewProps }) {
44
+ const ref = (0, react_1.useRef)(null);
45
+ (0, useHandledKeys_1.useHandledKeys)(ref, keys, onKeyDown);
46
+ return ((0, jsx_runtime_1.jsx)(react_native_1.View, { ref: ref, focusable: focusOnMount, ...viewProps, children: children }));
47
+ }
48
+ //# sourceMappingURL=KeyHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeyHandler.js","sourceRoot":"","sources":["../../src/KeyHandler.tsx"],"names":[],"mappings":";;AA8DA,gCAcC;;AA5ED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,iCAAoC;AACpC,+CAAkD;AAKlD,qDAAgD;AAqBhD,SAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,SAAS,EACT,YAAY,GAAG,IAAI,EACnB,QAAQ,EACR,GAAG,SAAS,EACI;IAChB,MAAM,GAAG,GAAG,IAAA,cAAM,EAAyC,IAAI,CAAC,CAAC;IACjE,IAAA,+BAAc,EAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IACrC,OAAO,CACL,uBAAC,mBAAI,IAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,YAAY,KAAM,SAAS,YACnD,QAAQ,GACJ,CACR,CAAC;AACJ,CAAC"}