akanjs 3.0.0-beta.20 → 3.0.0-beta.21

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 (731) hide show
  1. package/README.ko.md +0 -1
  2. package/README.md +0 -1
  3. package/base/baseEnv.ts +40 -3
  4. package/client/cookie.ts +56 -20
  5. package/client/device.ts +47 -95
  6. package/client/frameConfig.ts +2 -2
  7. package/client/native.ts +44 -0
  8. package/client/router.ts +11 -1
  9. package/client/rscNavigation.ts +5 -0
  10. package/client/storage.ts +68 -39
  11. package/fetch/client/fetchClient.ts +13 -4
  12. package/index.ts +47 -46
  13. package/package.json +6 -87
  14. package/server/devtools/signalSerializer.ts +1 -2
  15. package/server/hmr/devHmrController.ts +29 -11
  16. package/server/resolver/signal.resolver.ts +1 -10
  17. package/server/routeTreeBuilder.ts +8 -11
  18. package/server/routing/apiRouter.ts +15 -2
  19. package/server/rscClient.tsx +1 -2
  20. package/server/ssrFromRscRenderer.tsx +2 -0
  21. package/server/webRouter.ts +1 -0
  22. package/signal/CrossSiteGuard.ts +34 -2
  23. package/signal/endpoint.ts +12 -7
  24. package/signal/endpointInfo.ts +13 -0
  25. package/signal/internal.ts +9 -5
  26. package/signal/serializer/fetch.serializer.ts +6 -3
  27. package/signal/slice.ts +34 -24
  28. package/store/baseSt.ts +0 -1
  29. package/store/storeInstance.ts +29 -17
  30. package/types/client/cookie.d.ts +6 -4
  31. package/types/client/device.d.ts +7 -10
  32. package/types/client/native.d.ts +26 -0
  33. package/types/client/rscNavigation.d.ts +4 -0
  34. package/types/client/storage.d.ts +8 -1
  35. package/types/index.d.ts +48 -44
  36. package/types/server/hmr/devHmrController.d.ts +2 -1
  37. package/types/server/resolver/signal.resolver.d.ts +0 -1
  38. package/types/server/rscClient.d.ts +0 -3
  39. package/types/signal/CrossSiteGuard.d.ts +7 -2
  40. package/types/signal/endpoint.d.ts +1 -1
  41. package/types/signal/endpointInfo.d.ts +3 -0
  42. package/types/signal/slice.d.ts +3 -2
  43. package/types/store/baseSt.d.ts +0 -13
  44. package/types/vendor/@akanjs/native/packages/cli/src/api.d.ts +182 -0
  45. package/types/vendor/@akanjs/native/packages/cli/src/commands/build.d.ts +28 -0
  46. package/types/vendor/@akanjs/native/packages/cli/src/commands/compat.d.ts +2 -0
  47. package/types/vendor/@akanjs/native/packages/cli/src/commands/dev.d.ts +2 -0
  48. package/types/vendor/@akanjs/native/packages/cli/src/commands/doctor.d.ts +37 -0
  49. package/types/vendor/@akanjs/native/packages/cli/src/commands/plugin.d.ts +2 -0
  50. package/types/vendor/@akanjs/native/packages/cli/src/commands/signing.d.ts +2 -0
  51. package/types/vendor/@akanjs/native/packages/cli/src/commands/test.d.ts +2 -0
  52. package/types/vendor/@akanjs/native/packages/cli/src/commands/toolchain.d.ts +2 -0
  53. package/types/vendor/@akanjs/native/packages/cli/src/commands/update.d.ts +2 -0
  54. package/types/vendor/@akanjs/native/packages/cli/src/config.d.ts +278 -0
  55. package/types/vendor/@akanjs/native/packages/cli/src/index.d.ts +2 -0
  56. package/types/vendor/@akanjs/native/packages/cli/src/lib/acl.d.ts +21 -0
  57. package/types/vendor/@akanjs/native/packages/cli/src/lib/apilevel.d.ts +40 -0
  58. package/types/vendor/@akanjs/native/packages/cli/src/lib/apk.d.ts +36 -0
  59. package/types/vendor/@akanjs/native/packages/cli/src/lib/args.d.ts +9 -0
  60. package/types/vendor/@akanjs/native/packages/cli/src/lib/boot.d.ts +32 -0
  61. package/types/vendor/@akanjs/native/packages/cli/src/lib/chrome.d.ts +6 -0
  62. package/types/vendor/@akanjs/native/packages/cli/src/lib/codegen.d.ts +94 -0
  63. package/types/vendor/@akanjs/native/packages/cli/src/lib/compat.d.ts +49 -0
  64. package/types/vendor/@akanjs/native/packages/cli/src/lib/configkeys.d.ts +2 -0
  65. package/types/vendor/@akanjs/native/packages/cli/src/lib/csp.d.ts +51 -0
  66. package/types/vendor/@akanjs/native/packages/cli/src/lib/env.d.ts +44 -0
  67. package/types/vendor/@akanjs/native/packages/cli/src/lib/exec.d.ts +31 -0
  68. package/types/vendor/@akanjs/native/packages/cli/src/lib/googleservices.d.ts +2 -0
  69. package/types/vendor/@akanjs/native/packages/cli/src/lib/hmr.d.ts +120 -0
  70. package/types/vendor/@akanjs/native/packages/cli/src/lib/html.d.ts +20 -0
  71. package/types/vendor/@akanjs/native/packages/cli/src/lib/icons.d.ts +44 -0
  72. package/types/vendor/@akanjs/native/packages/cli/src/lib/image.d.ts +21 -0
  73. package/types/vendor/@akanjs/native/packages/cli/src/lib/iossigning.d.ts +81 -0
  74. package/types/vendor/@akanjs/native/packages/cli/src/lib/launch.d.ts +51 -0
  75. package/types/vendor/@akanjs/native/packages/cli/src/lib/log.d.ts +42 -0
  76. package/types/vendor/@akanjs/native/packages/cli/src/lib/manifestmerge.d.ts +18 -0
  77. package/types/vendor/@akanjs/native/packages/cli/src/lib/maven.d.ts +97 -0
  78. package/types/vendor/@akanjs/native/packages/cli/src/lib/names.d.ts +45 -0
  79. package/types/vendor/@akanjs/native/packages/cli/src/lib/native-plugins.d.ts +67 -0
  80. package/types/vendor/@akanjs/native/packages/cli/src/lib/nativeconfig.d.ts +11 -0
  81. package/types/vendor/@akanjs/native/packages/cli/src/lib/permissions.d.ts +10 -0
  82. package/types/vendor/@akanjs/native/packages/cli/src/lib/plist.d.ts +11 -0
  83. package/types/vendor/@akanjs/native/packages/cli/src/lib/png.d.ts +11 -0
  84. package/types/vendor/@akanjs/native/packages/cli/src/lib/prepare.d.ts +138 -0
  85. package/types/vendor/@akanjs/native/packages/cli/src/lib/privacy.d.ts +13 -0
  86. package/types/vendor/@akanjs/native/packages/cli/src/lib/project.d.ts +208 -0
  87. package/types/vendor/@akanjs/native/packages/cli/src/lib/root.d.ts +1 -0
  88. package/types/vendor/@akanjs/native/packages/cli/src/lib/routes.d.ts +1 -0
  89. package/types/vendor/@akanjs/native/packages/cli/src/lib/serve.d.ts +17 -0
  90. package/types/vendor/@akanjs/native/packages/cli/src/lib/signing.d.ts +14 -0
  91. package/types/vendor/@akanjs/native/packages/cli/src/lib/spec.d.ts +96 -0
  92. package/types/vendor/@akanjs/native/packages/cli/src/lib/toolchains.d.ts +150 -0
  93. package/types/vendor/@akanjs/native/packages/cli/src/lib/updates.d.ts +77 -0
  94. package/types/vendor/@akanjs/native/packages/cli/src/lib/vectors.d.ts +13 -0
  95. package/types/vendor/@akanjs/native/packages/cli/src/lib/xml.d.ts +13 -0
  96. package/types/vendor/@akanjs/native/packages/cli/src/platforms/android.d.ts +57 -0
  97. package/types/vendor/@akanjs/native/packages/cli/src/platforms/desktop-update.d.ts +4 -0
  98. package/types/vendor/@akanjs/native/packages/cli/src/platforms/desktop.d.ts +40 -0
  99. package/types/vendor/@akanjs/native/packages/cli/src/platforms/index.d.ts +14 -0
  100. package/types/vendor/@akanjs/native/packages/cli/src/platforms/ios.d.ts +44 -0
  101. package/types/vendor/@akanjs/native/packages/cli/src/platforms/linux.d.ts +6 -0
  102. package/types/vendor/@akanjs/native/packages/cli/src/platforms/macos.d.ts +7 -0
  103. package/types/vendor/@akanjs/native/packages/cli/src/platforms/targets.d.ts +4 -0
  104. package/types/vendor/@akanjs/native/packages/cli/src/platforms/web-run.d.ts +15 -0
  105. package/types/vendor/@akanjs/native/packages/cli/src/platforms/web.d.ts +2 -0
  106. package/types/vendor/@akanjs/native/packages/cli/src/platforms/windows.d.ts +8 -0
  107. package/types/vendor/@akanjs/native/packages/cli/src/platforms.d.ts +1 -0
  108. package/types/vendor/@akanjs/native/packages/cli/src.d.ts +1 -0
  109. package/types/vendor/@akanjs/native/packages/core/src/acl.d.ts +97 -0
  110. package/types/vendor/@akanjs/native/packages/core/src/boot.d.ts +66 -0
  111. package/types/vendor/@akanjs/native/packages/core/src/contract.d.ts +35 -0
  112. package/types/vendor/@akanjs/native/packages/core/src/errors.d.ts +27 -0
  113. package/types/vendor/@akanjs/native/packages/core/src/files.d.ts +23 -0
  114. package/types/vendor/@akanjs/native/packages/core/src/index.d.ts +14 -0
  115. package/types/vendor/@akanjs/native/packages/core/src/kernel.d.ts +112 -0
  116. package/types/vendor/@akanjs/native/packages/core/src/live.d.ts +12 -0
  117. package/types/vendor/@akanjs/native/packages/core/src/mime.d.ts +2 -0
  118. package/types/vendor/@akanjs/native/packages/core/src/plugin.d.ts +71 -0
  119. package/types/vendor/@akanjs/native/packages/core/src/protocol.d.ts +109 -0
  120. package/types/vendor/@akanjs/native/packages/core/src/runtime.d.ts +66 -0
  121. package/types/vendor/@akanjs/native/packages/core/src/state.d.ts +28 -0
  122. package/types/vendor/@akanjs/native/packages/core/src/testing.d.ts +41 -0
  123. package/types/vendor/@akanjs/native/packages/core/src/version.d.ts +2 -0
  124. package/types/vendor/@akanjs/native/packages/core/src/veto.d.ts +17 -0
  125. package/types/vendor/@akanjs/native/packages/core/src.d.ts +1 -0
  126. package/types/vendor/@akanjs/native/packages/desktop/src/deeplinks.d.ts +24 -0
  127. package/types/vendor/@akanjs/native/packages/desktop/src/delta.d.ts +2 -0
  128. package/types/vendor/@akanjs/native/packages/desktop/src/dispatcher.d.ts +95 -0
  129. package/types/vendor/@akanjs/native/packages/desktop/src/ffi.d.ts +144 -0
  130. package/types/vendor/@akanjs/native/packages/desktop/src/host.d.ts +11 -0
  131. package/types/vendor/@akanjs/native/packages/desktop/src/lifecycle.d.ts +40 -0
  132. package/types/vendor/@akanjs/native/packages/desktop/src/main.d.ts +4 -0
  133. package/types/vendor/@akanjs/native/packages/desktop/src/page-veto.d.ts +17 -0
  134. package/types/vendor/@akanjs/native/packages/desktop/src/paths.d.ts +25 -0
  135. package/types/vendor/@akanjs/native/packages/desktop/src/plugin.d.ts +179 -0
  136. package/types/vendor/@akanjs/native/packages/react/src/index.d.ts +8 -0
  137. package/types/vendor/@akanjs/native/packages/react/src.d.ts +1 -0
  138. package/types/vendor/@akanjs/native/plugins/accessibility/src/announce.d.ts +8 -0
  139. package/types/vendor/@akanjs/native/plugins/accessibility/src/index.d.ts +47 -0
  140. package/types/vendor/@akanjs/native/plugins/accessibility/src/web.d.ts +4 -0
  141. package/types/vendor/@akanjs/native/plugins/accessibility/src.d.ts +1 -0
  142. package/types/vendor/@akanjs/native/plugins/app/src/desktop.d.ts +3 -0
  143. package/types/vendor/@akanjs/native/plugins/app/src/index.d.ts +66 -0
  144. package/types/vendor/@akanjs/native/plugins/app/src/web.d.ts +2 -0
  145. package/types/vendor/@akanjs/native/plugins/app/src.d.ts +1 -0
  146. package/types/vendor/@akanjs/native/plugins/app-state/src/index.d.ts +19 -0
  147. package/types/vendor/@akanjs/native/plugins/app-state/src/web.d.ts +2 -0
  148. package/types/vendor/@akanjs/native/plugins/app-state/src.d.ts +1 -0
  149. package/types/vendor/@akanjs/native/plugins/appearance/src/desktop.d.ts +9 -0
  150. package/types/vendor/@akanjs/native/plugins/appearance/src/index.d.ts +32 -0
  151. package/types/vendor/@akanjs/native/plugins/appearance/src/setting.d.ts +6 -0
  152. package/types/vendor/@akanjs/native/plugins/appearance/src/web.d.ts +3 -0
  153. package/types/vendor/@akanjs/native/plugins/appearance/src.d.ts +1 -0
  154. package/types/vendor/@akanjs/native/plugins/auth-session/src/args.d.ts +18 -0
  155. package/types/vendor/@akanjs/native/plugins/auth-session/src/desktop.d.ts +17 -0
  156. package/types/vendor/@akanjs/native/plugins/auth-session/src/index.d.ts +41 -0
  157. package/types/vendor/@akanjs/native/plugins/auth-session/src.d.ts +1 -0
  158. package/types/vendor/@akanjs/native/plugins/autostart/src/desktop.d.ts +44 -0
  159. package/types/vendor/@akanjs/native/plugins/autostart/src/index.d.ts +44 -0
  160. package/types/vendor/@akanjs/native/plugins/autostart/src.d.ts +1 -0
  161. package/types/vendor/@akanjs/native/plugins/badge/src/count.d.ts +4 -0
  162. package/types/vendor/@akanjs/native/plugins/badge/src/desktop.d.ts +3 -0
  163. package/types/vendor/@akanjs/native/plugins/badge/src/index.d.ts +37 -0
  164. package/types/vendor/@akanjs/native/plugins/badge/src/web.d.ts +2 -0
  165. package/types/vendor/@akanjs/native/plugins/badge/src.d.ts +1 -0
  166. package/types/vendor/@akanjs/native/plugins/biometric/src/index.d.ts +53 -0
  167. package/types/vendor/@akanjs/native/plugins/biometric/src.d.ts +1 -0
  168. package/types/vendor/@akanjs/native/plugins/browser/src/args.d.ts +8 -0
  169. package/types/vendor/@akanjs/native/plugins/browser/src/desktop.d.ts +9 -0
  170. package/types/vendor/@akanjs/native/plugins/browser/src/index.d.ts +36 -0
  171. package/types/vendor/@akanjs/native/plugins/browser/src/web.d.ts +2 -0
  172. package/types/vendor/@akanjs/native/plugins/browser/src.d.ts +1 -0
  173. package/types/vendor/@akanjs/native/plugins/camera/src/desktop.d.ts +5 -0
  174. package/types/vendor/@akanjs/native/plugins/camera/src/index.d.ts +55 -0
  175. package/types/vendor/@akanjs/native/plugins/camera/src/web.d.ts +2 -0
  176. package/types/vendor/@akanjs/native/plugins/camera/src.d.ts +1 -0
  177. package/types/vendor/@akanjs/native/plugins/clipboard/src/desktop.d.ts +8 -0
  178. package/types/vendor/@akanjs/native/plugins/clipboard/src/index.d.ts +40 -0
  179. package/types/vendor/@akanjs/native/plugins/clipboard/src/web.d.ts +2 -0
  180. package/types/vendor/@akanjs/native/plugins/clipboard/src.d.ts +1 -0
  181. package/types/vendor/@akanjs/native/plugins/device/src/desktop.d.ts +33 -0
  182. package/types/vendor/@akanjs/native/plugins/device/src/index.d.ts +55 -0
  183. package/types/vendor/@akanjs/native/plugins/device/src/web.d.ts +22 -0
  184. package/types/vendor/@akanjs/native/plugins/device/src.d.ts +1 -0
  185. package/types/vendor/@akanjs/native/plugins/dialog/src/desktop.d.ts +3 -0
  186. package/types/vendor/@akanjs/native/plugins/dialog/src/index.d.ts +60 -0
  187. package/types/vendor/@akanjs/native/plugins/dialog/src/options.d.ts +29 -0
  188. package/types/vendor/@akanjs/native/plugins/dialog/src/web.d.ts +2 -0
  189. package/types/vendor/@akanjs/native/plugins/dialog/src.d.ts +1 -0
  190. package/types/vendor/@akanjs/native/plugins/dock/src/desktop.d.ts +3 -0
  191. package/types/vendor/@akanjs/native/plugins/dock/src/index.d.ts +46 -0
  192. package/types/vendor/@akanjs/native/plugins/dock/src.d.ts +1 -0
  193. package/types/vendor/@akanjs/native/plugins/file-picker/src/common.d.ts +33 -0
  194. package/types/vendor/@akanjs/native/plugins/file-picker/src/desktop.d.ts +9 -0
  195. package/types/vendor/@akanjs/native/plugins/file-picker/src/index.d.ts +84 -0
  196. package/types/vendor/@akanjs/native/plugins/file-picker/src/web.d.ts +6 -0
  197. package/types/vendor/@akanjs/native/plugins/file-picker/src.d.ts +1 -0
  198. package/types/vendor/@akanjs/native/plugins/filesystem/src/common.d.ts +49 -0
  199. package/types/vendor/@akanjs/native/plugins/filesystem/src/desktop.d.ts +8 -0
  200. package/types/vendor/@akanjs/native/plugins/filesystem/src/index.d.ts +123 -0
  201. package/types/vendor/@akanjs/native/plugins/filesystem/src/web.d.ts +2 -0
  202. package/types/vendor/@akanjs/native/plugins/filesystem/src.d.ts +1 -0
  203. package/types/vendor/@akanjs/native/plugins/geolocation/src/index.d.ts +93 -0
  204. package/types/vendor/@akanjs/native/plugins/geolocation/src/web.d.ts +11 -0
  205. package/types/vendor/@akanjs/native/plugins/geolocation/src.d.ts +1 -0
  206. package/types/vendor/@akanjs/native/plugins/global-shortcut/src/desktop.d.ts +3 -0
  207. package/types/vendor/@akanjs/native/plugins/global-shortcut/src/index.d.ts +52 -0
  208. package/types/vendor/@akanjs/native/plugins/global-shortcut/src.d.ts +1 -0
  209. package/types/vendor/@akanjs/native/plugins/haptics/src/index.d.ts +31 -0
  210. package/types/vendor/@akanjs/native/plugins/haptics/src/web.d.ts +2 -0
  211. package/types/vendor/@akanjs/native/plugins/haptics/src.d.ts +1 -0
  212. package/types/vendor/@akanjs/native/plugins/http/src/common.d.ts +71 -0
  213. package/types/vendor/@akanjs/native/plugins/http/src/desktop.d.ts +5 -0
  214. package/types/vendor/@akanjs/native/plugins/http/src/index.d.ts +104 -0
  215. package/types/vendor/@akanjs/native/plugins/http/src/web.d.ts +2 -0
  216. package/types/vendor/@akanjs/native/plugins/http/src.d.ts +1 -0
  217. package/types/vendor/@akanjs/native/plugins/iap/src/index.d.ts +171 -0
  218. package/types/vendor/@akanjs/native/plugins/iap/src.d.ts +1 -0
  219. package/types/vendor/@akanjs/native/plugins/keep-awake/src/desktop.d.ts +15 -0
  220. package/types/vendor/@akanjs/native/plugins/keep-awake/src/index.d.ts +33 -0
  221. package/types/vendor/@akanjs/native/plugins/keep-awake/src/web.d.ts +2 -0
  222. package/types/vendor/@akanjs/native/plugins/keep-awake/src.d.ts +1 -0
  223. package/types/vendor/@akanjs/native/plugins/keyboard/src/index.d.ts +42 -0
  224. package/types/vendor/@akanjs/native/plugins/keyboard/src/web.d.ts +2 -0
  225. package/types/vendor/@akanjs/native/plugins/keyboard/src.d.ts +1 -0
  226. package/types/vendor/@akanjs/native/plugins/local-notifications/src/desktop.d.ts +29 -0
  227. package/types/vendor/@akanjs/native/plugins/local-notifications/src/index.d.ts +126 -0
  228. package/types/vendor/@akanjs/native/plugins/local-notifications/src/schedule.d.ts +38 -0
  229. package/types/vendor/@akanjs/native/plugins/local-notifications/src/timers.d.ts +25 -0
  230. package/types/vendor/@akanjs/native/plugins/local-notifications/src/web.d.ts +4 -0
  231. package/types/vendor/@akanjs/native/plugins/local-notifications/src.d.ts +1 -0
  232. package/types/vendor/@akanjs/native/plugins/menu/src/desktop.d.ts +3 -0
  233. package/types/vendor/@akanjs/native/plugins/menu/src/index.d.ts +85 -0
  234. package/types/vendor/@akanjs/native/plugins/menu/src.d.ts +1 -0
  235. package/types/vendor/@akanjs/native/plugins/network/src/index.d.ts +22 -0
  236. package/types/vendor/@akanjs/native/plugins/network/src/web.d.ts +3 -0
  237. package/types/vendor/@akanjs/native/plugins/network/src.d.ts +1 -0
  238. package/types/vendor/@akanjs/native/plugins/opener/src/desktop.d.ts +14 -0
  239. package/types/vendor/@akanjs/native/plugins/opener/src/index.d.ts +33 -0
  240. package/types/vendor/@akanjs/native/plugins/opener/src/url.d.ts +16 -0
  241. package/types/vendor/@akanjs/native/plugins/opener/src/web.d.ts +2 -0
  242. package/types/vendor/@akanjs/native/plugins/opener/src.d.ts +1 -0
  243. package/types/vendor/@akanjs/native/plugins/preferences/src/desktop.d.ts +3 -0
  244. package/types/vendor/@akanjs/native/plugins/preferences/src/index.d.ts +26 -0
  245. package/types/vendor/@akanjs/native/plugins/preferences/src/web.d.ts +2 -0
  246. package/types/vendor/@akanjs/native/plugins/preferences/src.d.ts +1 -0
  247. package/types/vendor/@akanjs/native/plugins/push/src/index.d.ts +57 -0
  248. package/types/vendor/@akanjs/native/plugins/push/src.d.ts +1 -0
  249. package/types/vendor/@akanjs/native/plugins/screen/src/desktop.d.ts +3 -0
  250. package/types/vendor/@akanjs/native/plugins/screen/src/index.d.ts +70 -0
  251. package/types/vendor/@akanjs/native/plugins/screen/src/web.d.ts +18 -0
  252. package/types/vendor/@akanjs/native/plugins/screen/src.d.ts +1 -0
  253. package/types/vendor/@akanjs/native/plugins/screen-orientation/src/index.d.ts +32 -0
  254. package/types/vendor/@akanjs/native/plugins/screen-orientation/src/types.d.ts +8 -0
  255. package/types/vendor/@akanjs/native/plugins/screen-orientation/src/web.d.ts +3 -0
  256. package/types/vendor/@akanjs/native/plugins/screen-orientation/src.d.ts +1 -0
  257. package/types/vendor/@akanjs/native/plugins/secure-storage/src/desktop.d.ts +16 -0
  258. package/types/vendor/@akanjs/native/plugins/secure-storage/src/index.d.ts +39 -0
  259. package/types/vendor/@akanjs/native/plugins/secure-storage/src.d.ts +1 -0
  260. package/types/vendor/@akanjs/native/plugins/share/src/index.d.ts +55 -0
  261. package/types/vendor/@akanjs/native/plugins/share/src/options.d.ts +6 -0
  262. package/types/vendor/@akanjs/native/plugins/share/src/web.d.ts +5 -0
  263. package/types/vendor/@akanjs/native/plugins/share/src.d.ts +1 -0
  264. package/types/vendor/@akanjs/native/plugins/single-instance/src/desktop.d.ts +8 -0
  265. package/types/vendor/@akanjs/native/plugins/single-instance/src/index.d.ts +25 -0
  266. package/types/vendor/@akanjs/native/plugins/single-instance/src/socket.d.ts +46 -0
  267. package/types/vendor/@akanjs/native/plugins/single-instance/src.d.ts +1 -0
  268. package/types/vendor/@akanjs/native/plugins/splash-screen/src/index.d.ts +19 -0
  269. package/types/vendor/@akanjs/native/plugins/splash-screen/src/web.d.ts +4 -0
  270. package/types/vendor/@akanjs/native/plugins/splash-screen/src.d.ts +1 -0
  271. package/types/vendor/@akanjs/native/plugins/sqlite/src/common.d.ts +34 -0
  272. package/types/vendor/@akanjs/native/plugins/sqlite/src/desktop.d.ts +6 -0
  273. package/types/vendor/@akanjs/native/plugins/sqlite/src/index.d.ts +115 -0
  274. package/types/vendor/@akanjs/native/plugins/sqlite/src.d.ts +1 -0
  275. package/types/vendor/@akanjs/native/plugins/toast/src/index.d.ts +30 -0
  276. package/types/vendor/@akanjs/native/plugins/toast/src/queue.d.ts +23 -0
  277. package/types/vendor/@akanjs/native/plugins/toast/src/web.d.ts +2 -0
  278. package/types/vendor/@akanjs/native/plugins/toast/src.d.ts +1 -0
  279. package/types/vendor/@akanjs/native/plugins/tray/src/desktop.d.ts +3 -0
  280. package/types/vendor/@akanjs/native/plugins/tray/src/index.d.ts +113 -0
  281. package/types/vendor/@akanjs/native/plugins/tray/src.d.ts +1 -0
  282. package/types/vendor/@akanjs/native/plugins/updates/src/desktop.d.ts +4 -0
  283. package/types/vendor/@akanjs/native/plugins/updates/src/index.d.ts +68 -0
  284. package/types/vendor/@akanjs/native/plugins/updates/src.d.ts +1 -0
  285. package/types/vendor/@akanjs/native/plugins/window/src/desktop.d.ts +6 -0
  286. package/types/vendor/@akanjs/native/plugins/window/src/index.d.ts +185 -0
  287. package/types/vendor/@akanjs/native/plugins/window/src/web.d.ts +2 -0
  288. package/types/vendor/@akanjs/native/plugins/window/src.d.ts +1 -0
  289. package/types/vendor/@akanjs/native/plugins/window-state/src/desktop.d.ts +7 -0
  290. package/types/vendor/@akanjs/native/plugins/window-state/src/index.d.ts +33 -0
  291. package/types/vendor/@akanjs/native/plugins/window-state/src/state.d.ts +39 -0
  292. package/types/vendor/@akanjs/native/plugins/window-state/src.d.ts +1 -0
  293. package/types/webkit/index.d.ts +0 -2
  294. package/types/webkit/nativeNavigation.d.ts +25 -0
  295. package/types/webkit/nativePurchase.d.ts +37 -0
  296. package/types/webkit/useCamera.d.ts +13 -15
  297. package/types/webkit/useGeoLocation.d.ts +4 -5
  298. package/types/webkit/usePurchase.d.ts +12 -16
  299. package/ui/Link/Anchor.tsx +2 -5
  300. package/ui/System/Client.tsx +2 -6
  301. package/vendor/@akanjs/native/LICENSE +21 -0
  302. package/vendor/@akanjs/native/README.ko.md +88 -0
  303. package/vendor/@akanjs/native/README.md +93 -0
  304. package/vendor/@akanjs/native/THIRD_PARTY_NOTICES.md +237 -0
  305. package/vendor/@akanjs/native/native/android/maven.lock.json +1751 -0
  306. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeAcl.kt +243 -0
  307. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeActivity.kt +936 -0
  308. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeApplication.kt +189 -0
  309. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeAssetServer.kt +225 -0
  310. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeBridge.kt +444 -0
  311. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeCompat.kt +55 -0
  312. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeContract.kt +99 -0
  313. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeEd25519.kt +100 -0
  314. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeFileProvider.kt +71 -0
  315. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeKernel.kt +324 -0
  316. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativePlugin.kt +361 -0
  317. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeSpec.kt +100 -0
  318. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeUpdates.kt +305 -0
  319. package/vendor/@akanjs/native/native/android/src/com/akanjs/runtime/AkanNativeVectors.kt +132 -0
  320. package/vendor/@akanjs/native/native/desktop/Cargo.lock +2565 -0
  321. package/vendor/@akanjs/native/native/desktop/Cargo.toml +49 -0
  322. package/vendor/@akanjs/native/native/desktop/build.rs +19 -0
  323. package/vendor/@akanjs/native/native/desktop/rust-toolchain.toml +7 -0
  324. package/vendor/@akanjs/native/native/desktop/src/accelerator.rs +466 -0
  325. package/vendor/@akanjs/native/native/desktop/src/autostart.rs +158 -0
  326. package/vendor/@akanjs/native/native/desktop/src/camera.rs +53 -0
  327. package/vendor/@akanjs/native/native/desktop/src/chrome.rs +710 -0
  328. package/vendor/@akanjs/native/native/desktop/src/contract.rs +105 -0
  329. package/vendor/@akanjs/native/native/desktop/src/devproxy.rs +234 -0
  330. package/vendor/@akanjs/native/native/desktop/src/dialog_args.rs +189 -0
  331. package/vendor/@akanjs/native/native/desktop/src/dock.rs +209 -0
  332. package/vendor/@akanjs/native/native/desktop/src/hotkey.rs +209 -0
  333. package/vendor/@akanjs/native/native/desktop/src/js_panels.rs +125 -0
  334. package/vendor/@akanjs/native/native/desktop/src/json.rs +272 -0
  335. package/vendor/@akanjs/native/native/desktop/src/keychain.rs +151 -0
  336. package/vendor/@akanjs/native/native/desktop/src/lib.rs +2185 -0
  337. package/vendor/@akanjs/native/native/desktop/src/linux/appearance.rs +177 -0
  338. package/vendor/@akanjs/native/native/desktop/src/linux/camera.rs +11 -0
  339. package/vendor/@akanjs/native/native/desktop/src/linux/clipboard.rs +48 -0
  340. package/vendor/@akanjs/native/native/desktop/src/linux/device.rs +9 -0
  341. package/vendor/@akanjs/native/native/desktop/src/linux/dialogs.rs +348 -0
  342. package/vendor/@akanjs/native/native/desktop/src/linux/dock.rs +146 -0
  343. package/vendor/@akanjs/native/native/desktop/src/linux/hotkey.rs +228 -0
  344. package/vendor/@akanjs/native/native/desktop/src/linux/keychain.rs +243 -0
  345. package/vendor/@akanjs/native/native/desktop/src/linux/menu.rs +445 -0
  346. package/vendor/@akanjs/native/native/desktop/src/linux/mod.rs +116 -0
  347. package/vendor/@akanjs/native/native/desktop/src/linux/notify.rs +211 -0
  348. package/vendor/@akanjs/native/native/desktop/src/linux/open.rs +79 -0
  349. package/vendor/@akanjs/native/native/desktop/src/linux/power.rs +155 -0
  350. package/vendor/@akanjs/native/native/desktop/src/linux/screen.rs +158 -0
  351. package/vendor/@akanjs/native/native/desktop/src/linux/tray.rs +604 -0
  352. package/vendor/@akanjs/native/native/desktop/src/menu.rs +517 -0
  353. package/vendor/@akanjs/native/native/desktop/src/navigation.rs +381 -0
  354. package/vendor/@akanjs/native/native/desktop/src/notify.rs +411 -0
  355. package/vendor/@akanjs/native/native/desktop/src/notify_schedule.rs +382 -0
  356. package/vendor/@akanjs/native/native/desktop/src/page_menu.rs +287 -0
  357. package/vendor/@akanjs/native/native/desktop/src/panels.rs +333 -0
  358. package/vendor/@akanjs/native/native/desktop/src/placement.rs +92 -0
  359. package/vendor/@akanjs/native/native/desktop/src/routes.rs +153 -0
  360. package/vendor/@akanjs/native/native/desktop/src/screen.rs +190 -0
  361. package/vendor/@akanjs/native/native/desktop/src/tray.rs +279 -0
  362. package/vendor/@akanjs/native/native/desktop/src/vectors.rs +126 -0
  363. package/vendor/@akanjs/native/native/desktop/src/win/appearance.rs +51 -0
  364. package/vendor/@akanjs/native/native/desktop/src/win/autostart.rs +77 -0
  365. package/vendor/@akanjs/native/native/desktop/src/win/camera.rs +34 -0
  366. package/vendor/@akanjs/native/native/desktop/src/win/clipboard.rs +106 -0
  367. package/vendor/@akanjs/native/native/desktop/src/win/device.rs +80 -0
  368. package/vendor/@akanjs/native/native/desktop/src/win/dialogs.rs +917 -0
  369. package/vendor/@akanjs/native/native/desktop/src/win/dock.rs +228 -0
  370. package/vendor/@akanjs/native/native/desktop/src/win/hotkey.rs +110 -0
  371. package/vendor/@akanjs/native/native/desktop/src/win/keychain.rs +103 -0
  372. package/vendor/@akanjs/native/native/desktop/src/win/menu.rs +500 -0
  373. package/vendor/@akanjs/native/native/desktop/src/win/mod.rs +100 -0
  374. package/vendor/@akanjs/native/native/desktop/src/win/msgwin.rs +86 -0
  375. package/vendor/@akanjs/native/native/desktop/src/win/notify.rs +334 -0
  376. package/vendor/@akanjs/native/native/desktop/src/win/open.rs +127 -0
  377. package/vendor/@akanjs/native/native/desktop/src/win/power.rs +64 -0
  378. package/vendor/@akanjs/native/native/desktop/src/win/registry.rs +87 -0
  379. package/vendor/@akanjs/native/native/desktop/src/win/screen.rs +127 -0
  380. package/vendor/@akanjs/native/native/desktop/src/win/tray.rs +280 -0
  381. package/vendor/@akanjs/native/native/ios/Sources/AkanNativeAcl.swift +241 -0
  382. package/vendor/@akanjs/native/native/ios/Sources/AkanNativeApp.swift +285 -0
  383. package/vendor/@akanjs/native/native/ios/Sources/AkanNativeBridge.swift +407 -0
  384. package/vendor/@akanjs/native/native/ios/Sources/AkanNativeContract.swift +106 -0
  385. package/vendor/@akanjs/native/native/ios/Sources/AkanNativeKernel.swift +317 -0
  386. package/vendor/@akanjs/native/native/ios/Sources/AkanNativePlugin.swift +250 -0
  387. package/vendor/@akanjs/native/native/ios/Sources/AkanNativeSchemeHandler.swift +209 -0
  388. package/vendor/@akanjs/native/native/ios/Sources/AkanNativeShell.swift +161 -0
  389. package/vendor/@akanjs/native/native/ios/Sources/AkanNativeSpec.swift +143 -0
  390. package/vendor/@akanjs/native/native/ios/Sources/AkanNativeUpdates.swift +270 -0
  391. package/vendor/@akanjs/native/native/ios/Sources/AkanNativeVectors.swift +155 -0
  392. package/vendor/@akanjs/native/native/ios/Sources/AkanNativeViewController.swift +371 -0
  393. package/vendor/@akanjs/native/packages/cli/src/api.ts +600 -0
  394. package/vendor/@akanjs/native/packages/cli/src/commands/build.ts +101 -0
  395. package/vendor/@akanjs/native/packages/cli/src/commands/compat.ts +53 -0
  396. package/vendor/@akanjs/native/packages/cli/src/commands/dev.ts +249 -0
  397. package/vendor/@akanjs/native/packages/cli/src/commands/doctor.ts +536 -0
  398. package/vendor/@akanjs/native/packages/cli/src/commands/plugin.ts +164 -0
  399. package/vendor/@akanjs/native/packages/cli/src/commands/signing.ts +32 -0
  400. package/vendor/@akanjs/native/packages/cli/src/commands/test.ts +130 -0
  401. package/vendor/@akanjs/native/packages/cli/src/commands/toolchain.ts +143 -0
  402. package/vendor/@akanjs/native/packages/cli/src/commands/update.ts +168 -0
  403. package/vendor/@akanjs/native/packages/cli/src/config.ts +257 -0
  404. package/vendor/@akanjs/native/packages/cli/src/index.ts +77 -0
  405. package/vendor/@akanjs/native/packages/cli/src/lib/acl.ts +420 -0
  406. package/vendor/@akanjs/native/packages/cli/src/lib/apilevel.ts +245 -0
  407. package/vendor/@akanjs/native/packages/cli/src/lib/apk.ts +203 -0
  408. package/vendor/@akanjs/native/packages/cli/src/lib/args.ts +44 -0
  409. package/vendor/@akanjs/native/packages/cli/src/lib/boot.ts +73 -0
  410. package/vendor/@akanjs/native/packages/cli/src/lib/chrome.ts +89 -0
  411. package/vendor/@akanjs/native/packages/cli/src/lib/codegen.ts +1128 -0
  412. package/vendor/@akanjs/native/packages/cli/src/lib/compat.ts +185 -0
  413. package/vendor/@akanjs/native/packages/cli/src/lib/configkeys.ts +91 -0
  414. package/vendor/@akanjs/native/packages/cli/src/lib/csp.ts +198 -0
  415. package/vendor/@akanjs/native/packages/cli/src/lib/env.ts +257 -0
  416. package/vendor/@akanjs/native/packages/cli/src/lib/exec.ts +104 -0
  417. package/vendor/@akanjs/native/packages/cli/src/lib/googleservices.ts +53 -0
  418. package/vendor/@akanjs/native/packages/cli/src/lib/hmr.ts +534 -0
  419. package/vendor/@akanjs/native/packages/cli/src/lib/html.ts +63 -0
  420. package/vendor/@akanjs/native/packages/cli/src/lib/icons.ts +316 -0
  421. package/vendor/@akanjs/native/packages/cli/src/lib/image.ts +175 -0
  422. package/vendor/@akanjs/native/packages/cli/src/lib/iossigning.ts +295 -0
  423. package/vendor/@akanjs/native/packages/cli/src/lib/launch.ts +98 -0
  424. package/vendor/@akanjs/native/packages/cli/src/lib/log.ts +105 -0
  425. package/vendor/@akanjs/native/packages/cli/src/lib/manifestmerge.ts +107 -0
  426. package/vendor/@akanjs/native/packages/cli/src/lib/maven.ts +244 -0
  427. package/vendor/@akanjs/native/packages/cli/src/lib/names.ts +202 -0
  428. package/vendor/@akanjs/native/packages/cli/src/lib/native-plugins.ts +326 -0
  429. package/vendor/@akanjs/native/packages/cli/src/lib/nativeconfig.ts +68 -0
  430. package/vendor/@akanjs/native/packages/cli/src/lib/permissions.ts +80 -0
  431. package/vendor/@akanjs/native/packages/cli/src/lib/plist.ts +139 -0
  432. package/vendor/@akanjs/native/packages/cli/src/lib/png.ts +240 -0
  433. package/vendor/@akanjs/native/packages/cli/src/lib/prepare.ts +290 -0
  434. package/vendor/@akanjs/native/packages/cli/src/lib/privacy.ts +64 -0
  435. package/vendor/@akanjs/native/packages/cli/src/lib/project.ts +710 -0
  436. package/vendor/@akanjs/native/packages/cli/src/lib/root.ts +18 -0
  437. package/vendor/@akanjs/native/packages/cli/src/lib/routes.ts +3 -0
  438. package/vendor/@akanjs/native/packages/cli/src/lib/serve.ts +83 -0
  439. package/vendor/@akanjs/native/packages/cli/src/lib/signing.ts +117 -0
  440. package/vendor/@akanjs/native/packages/cli/src/lib/spec.ts +521 -0
  441. package/vendor/@akanjs/native/packages/cli/src/lib/toolchains.ts +579 -0
  442. package/vendor/@akanjs/native/packages/cli/src/lib/updates.ts +160 -0
  443. package/vendor/@akanjs/native/packages/cli/src/lib/vectors.ts +121 -0
  444. package/vendor/@akanjs/native/packages/cli/src/lib/xml.ts +72 -0
  445. package/vendor/@akanjs/native/packages/cli/src/platforms/android.ts +1320 -0
  446. package/vendor/@akanjs/native/packages/cli/src/platforms/desktop-update.ts +78 -0
  447. package/vendor/@akanjs/native/packages/cli/src/platforms/desktop.ts +279 -0
  448. package/vendor/@akanjs/native/packages/cli/src/platforms/index.ts +31 -0
  449. package/vendor/@akanjs/native/packages/cli/src/platforms/ios.ts +801 -0
  450. package/vendor/@akanjs/native/packages/cli/src/platforms/linux.ts +52 -0
  451. package/vendor/@akanjs/native/packages/cli/src/platforms/macos.ts +97 -0
  452. package/vendor/@akanjs/native/packages/cli/src/platforms/targets.ts +12 -0
  453. package/vendor/@akanjs/native/packages/cli/src/platforms/web-run.ts +69 -0
  454. package/vendor/@akanjs/native/packages/cli/src/platforms/web.ts +28 -0
  455. package/vendor/@akanjs/native/packages/cli/src/platforms/windows.ts +82 -0
  456. package/vendor/@akanjs/native/packages/core/contract.json +96 -0
  457. package/vendor/@akanjs/native/packages/core/src/acl.ts +272 -0
  458. package/vendor/@akanjs/native/packages/core/src/boot.ts +97 -0
  459. package/vendor/@akanjs/native/packages/core/src/contract.ts +100 -0
  460. package/vendor/@akanjs/native/packages/core/src/errors.ts +95 -0
  461. package/vendor/@akanjs/native/packages/core/src/files.ts +105 -0
  462. package/vendor/@akanjs/native/packages/core/src/index.ts +35 -0
  463. package/vendor/@akanjs/native/packages/core/src/kernel.ts +281 -0
  464. package/vendor/@akanjs/native/packages/core/src/live.ts +62 -0
  465. package/vendor/@akanjs/native/packages/core/src/mime.ts +8 -0
  466. package/vendor/@akanjs/native/packages/core/src/plugin.ts +358 -0
  467. package/vendor/@akanjs/native/packages/core/src/protocol.ts +194 -0
  468. package/vendor/@akanjs/native/packages/core/src/runtime.ts +520 -0
  469. package/vendor/@akanjs/native/packages/core/src/state.ts +46 -0
  470. package/vendor/@akanjs/native/packages/core/src/testing.ts +176 -0
  471. package/vendor/@akanjs/native/packages/core/src/version.ts +2 -0
  472. package/vendor/@akanjs/native/packages/core/src/veto.ts +55 -0
  473. package/vendor/@akanjs/native/packages/core/vectors/acl.json +57 -0
  474. package/vendor/@akanjs/native/packages/core/vectors/bridge.json +76 -0
  475. package/vendor/@akanjs/native/packages/core/vectors/ed25519.json +29 -0
  476. package/vendor/@akanjs/native/packages/core/vectors/ids.json +73 -0
  477. package/vendor/@akanjs/native/packages/core/vectors/navigation.json +75 -0
  478. package/vendor/@akanjs/native/packages/core/vectors/ranges.json +39 -0
  479. package/vendor/@akanjs/native/packages/core/vectors/retained.json +17 -0
  480. package/vendor/@akanjs/native/packages/core/vectors/routes.json +66 -0
  481. package/vendor/@akanjs/native/packages/core/vectors/scope.json +143 -0
  482. package/vendor/@akanjs/native/packages/desktop/src/deeplinks.ts +143 -0
  483. package/vendor/@akanjs/native/packages/desktop/src/delta.ts +174 -0
  484. package/vendor/@akanjs/native/packages/desktop/src/dispatcher.ts +679 -0
  485. package/vendor/@akanjs/native/packages/desktop/src/ffi.ts +76 -0
  486. package/vendor/@akanjs/native/packages/desktop/src/host.ts +355 -0
  487. package/vendor/@akanjs/native/packages/desktop/src/lifecycle.ts +142 -0
  488. package/vendor/@akanjs/native/packages/desktop/src/main.ts +133 -0
  489. package/vendor/@akanjs/native/packages/desktop/src/page-veto.ts +103 -0
  490. package/vendor/@akanjs/native/packages/desktop/src/paths.ts +59 -0
  491. package/vendor/@akanjs/native/packages/desktop/src/plugin.ts +232 -0
  492. package/vendor/@akanjs/native/packages/react/src/index.ts +23 -0
  493. package/vendor/@akanjs/native/plugins/accessibility/android/AccessibilityPlugin.kt +96 -0
  494. package/vendor/@akanjs/native/plugins/accessibility/ios/AccessibilityPlugin.swift +92 -0
  495. package/vendor/@akanjs/native/plugins/accessibility/native-plugin.json +21 -0
  496. package/vendor/@akanjs/native/plugins/accessibility/src/announce.ts +71 -0
  497. package/vendor/@akanjs/native/plugins/accessibility/src/index.ts +77 -0
  498. package/vendor/@akanjs/native/plugins/accessibility/src/web.ts +52 -0
  499. package/vendor/@akanjs/native/plugins/app/android/AppPlugin.kt +72 -0
  500. package/vendor/@akanjs/native/plugins/app/ios/AppPlugin.swift +52 -0
  501. package/vendor/@akanjs/native/plugins/app/native-plugin.json +21 -0
  502. package/vendor/@akanjs/native/plugins/app/src/desktop.ts +64 -0
  503. package/vendor/@akanjs/native/plugins/app/src/index.ts +77 -0
  504. package/vendor/@akanjs/native/plugins/app/src/web.ts +12 -0
  505. package/vendor/@akanjs/native/plugins/app-state/android/AppStatePlugin.kt +54 -0
  506. package/vendor/@akanjs/native/plugins/app-state/ios/AppStatePlugin.swift +58 -0
  507. package/vendor/@akanjs/native/plugins/app-state/native-plugin.json +17 -0
  508. package/vendor/@akanjs/native/plugins/app-state/src/index.ts +42 -0
  509. package/vendor/@akanjs/native/plugins/app-state/src/web.ts +33 -0
  510. package/vendor/@akanjs/native/plugins/appearance/android/AppearancePlugin.kt +133 -0
  511. package/vendor/@akanjs/native/plugins/appearance/ios/AppearancePlugin.swift +109 -0
  512. package/vendor/@akanjs/native/plugins/appearance/native-plugin.json +18 -0
  513. package/vendor/@akanjs/native/plugins/appearance/src/desktop.ts +133 -0
  514. package/vendor/@akanjs/native/plugins/appearance/src/index.ts +62 -0
  515. package/vendor/@akanjs/native/plugins/appearance/src/setting.ts +18 -0
  516. package/vendor/@akanjs/native/plugins/appearance/src/web.ts +25 -0
  517. package/vendor/@akanjs/native/plugins/auth-session/android/AuthSessionPlugin.kt +171 -0
  518. package/vendor/@akanjs/native/plugins/auth-session/ios/AuthSessionPlugin.swift +112 -0
  519. package/vendor/@akanjs/native/plugins/auth-session/native-plugin.json +19 -0
  520. package/vendor/@akanjs/native/plugins/auth-session/src/args.ts +62 -0
  521. package/vendor/@akanjs/native/plugins/auth-session/src/desktop.ts +133 -0
  522. package/vendor/@akanjs/native/plugins/auth-session/src/index.ts +39 -0
  523. package/vendor/@akanjs/native/plugins/autostart/native-plugin.json +10 -0
  524. package/vendor/@akanjs/native/plugins/autostart/src/desktop.ts +189 -0
  525. package/vendor/@akanjs/native/plugins/autostart/src/index.ts +51 -0
  526. package/vendor/@akanjs/native/plugins/badge/ios/BadgePlugin.swift +92 -0
  527. package/vendor/@akanjs/native/plugins/badge/native-plugin.json +15 -0
  528. package/vendor/@akanjs/native/plugins/badge/src/count.ts +12 -0
  529. package/vendor/@akanjs/native/plugins/badge/src/desktop.ts +24 -0
  530. package/vendor/@akanjs/native/plugins/badge/src/index.ts +40 -0
  531. package/vendor/@akanjs/native/plugins/badge/src/web.ts +37 -0
  532. package/vendor/@akanjs/native/plugins/biometric/android/BiometricPlugin.kt +179 -0
  533. package/vendor/@akanjs/native/plugins/biometric/ios/BiometricPlugin.swift +129 -0
  534. package/vendor/@akanjs/native/plugins/biometric/native-plugin.json +22 -0
  535. package/vendor/@akanjs/native/plugins/biometric/src/index.ts +100 -0
  536. package/vendor/@akanjs/native/plugins/browser/android/BrowserPlugin.kt +178 -0
  537. package/vendor/@akanjs/native/plugins/browser/ios/BrowserPlugin.swift +63 -0
  538. package/vendor/@akanjs/native/plugins/browser/native-plugin.json +22 -0
  539. package/vendor/@akanjs/native/plugins/browser/src/args.ts +34 -0
  540. package/vendor/@akanjs/native/plugins/browser/src/desktop.ts +40 -0
  541. package/vendor/@akanjs/native/plugins/browser/src/index.ts +47 -0
  542. package/vendor/@akanjs/native/plugins/browser/src/web.ts +60 -0
  543. package/vendor/@akanjs/native/plugins/camera/android/CameraPlugin.kt +365 -0
  544. package/vendor/@akanjs/native/plugins/camera/ios/CameraPlugin.swift +296 -0
  545. package/vendor/@akanjs/native/plugins/camera/native-plugin.json +32 -0
  546. package/vendor/@akanjs/native/plugins/camera/src/desktop.ts +27 -0
  547. package/vendor/@akanjs/native/plugins/camera/src/index.ts +85 -0
  548. package/vendor/@akanjs/native/plugins/camera/src/web.ts +267 -0
  549. package/vendor/@akanjs/native/plugins/clipboard/android/ClipboardPlugin.kt +51 -0
  550. package/vendor/@akanjs/native/plugins/clipboard/ios/ClipboardPlugin.swift +35 -0
  551. package/vendor/@akanjs/native/plugins/clipboard/native-plugin.json +17 -0
  552. package/vendor/@akanjs/native/plugins/clipboard/src/desktop.ts +66 -0
  553. package/vendor/@akanjs/native/plugins/clipboard/src/index.ts +72 -0
  554. package/vendor/@akanjs/native/plugins/clipboard/src/web.ts +69 -0
  555. package/vendor/@akanjs/native/plugins/device/android/DevicePlugin.kt +70 -0
  556. package/vendor/@akanjs/native/plugins/device/ios/DevicePlugin.swift +80 -0
  557. package/vendor/@akanjs/native/plugins/device/native-plugin.json +18 -0
  558. package/vendor/@akanjs/native/plugins/device/src/desktop.ts +276 -0
  559. package/vendor/@akanjs/native/plugins/device/src/index.ts +72 -0
  560. package/vendor/@akanjs/native/plugins/device/src/web.ts +162 -0
  561. package/vendor/@akanjs/native/plugins/dialog/android/DialogPlugin.kt +260 -0
  562. package/vendor/@akanjs/native/plugins/dialog/ios/DialogPlugin.swift +198 -0
  563. package/vendor/@akanjs/native/plugins/dialog/native-plugin.json +18 -0
  564. package/vendor/@akanjs/native/plugins/dialog/src/desktop.ts +80 -0
  565. package/vendor/@akanjs/native/plugins/dialog/src/index.ts +87 -0
  566. package/vendor/@akanjs/native/plugins/dialog/src/options.ts +111 -0
  567. package/vendor/@akanjs/native/plugins/dialog/src/web.ts +296 -0
  568. package/vendor/@akanjs/native/plugins/dock/native-plugin.json +10 -0
  569. package/vendor/@akanjs/native/plugins/dock/src/desktop.ts +34 -0
  570. package/vendor/@akanjs/native/plugins/dock/src/index.ts +46 -0
  571. package/vendor/@akanjs/native/plugins/file-picker/android/FilePickerPlugin.kt +316 -0
  572. package/vendor/@akanjs/native/plugins/file-picker/ios/FilePickerPlugin.swift +366 -0
  573. package/vendor/@akanjs/native/plugins/file-picker/native-plugin.json +18 -0
  574. package/vendor/@akanjs/native/plugins/file-picker/src/common.ts +125 -0
  575. package/vendor/@akanjs/native/plugins/file-picker/src/desktop.ts +164 -0
  576. package/vendor/@akanjs/native/plugins/file-picker/src/index.ts +187 -0
  577. package/vendor/@akanjs/native/plugins/file-picker/src/web.ts +158 -0
  578. package/vendor/@akanjs/native/plugins/filesystem/android/FilesystemPlugin.kt +561 -0
  579. package/vendor/@akanjs/native/plugins/filesystem/ios/FilesystemPlugin.swift +596 -0
  580. package/vendor/@akanjs/native/plugins/filesystem/native-plugin.json +45 -0
  581. package/vendor/@akanjs/native/plugins/filesystem/src/common.ts +150 -0
  582. package/vendor/@akanjs/native/plugins/filesystem/src/desktop.ts +438 -0
  583. package/vendor/@akanjs/native/plugins/filesystem/src/index.ts +179 -0
  584. package/vendor/@akanjs/native/plugins/filesystem/src/web.ts +334 -0
  585. package/vendor/@akanjs/native/plugins/geolocation/android/GeolocationPlugin.kt +360 -0
  586. package/vendor/@akanjs/native/plugins/geolocation/ios/GeolocationPlugin.swift +284 -0
  587. package/vendor/@akanjs/native/plugins/geolocation/native-plugin.json +23 -0
  588. package/vendor/@akanjs/native/plugins/geolocation/src/index.ts +155 -0
  589. package/vendor/@akanjs/native/plugins/geolocation/src/web.ts +132 -0
  590. package/vendor/@akanjs/native/plugins/global-shortcut/native-plugin.json +10 -0
  591. package/vendor/@akanjs/native/plugins/global-shortcut/src/desktop.ts +36 -0
  592. package/vendor/@akanjs/native/plugins/global-shortcut/src/index.ts +55 -0
  593. package/vendor/@akanjs/native/plugins/haptics/android/HapticsPlugin.kt +127 -0
  594. package/vendor/@akanjs/native/plugins/haptics/ios/HapticsPlugin.swift +127 -0
  595. package/vendor/@akanjs/native/plugins/haptics/native-plugin.json +19 -0
  596. package/vendor/@akanjs/native/plugins/haptics/src/index.ts +34 -0
  597. package/vendor/@akanjs/native/plugins/haptics/src/web.ts +53 -0
  598. package/vendor/@akanjs/native/plugins/http/android/HttpPlugin.kt +234 -0
  599. package/vendor/@akanjs/native/plugins/http/android/HttpUrl.kt +182 -0
  600. package/vendor/@akanjs/native/plugins/http/ios/HttpPlugin.swift +228 -0
  601. package/vendor/@akanjs/native/plugins/http/ios/HttpUrl.swift +166 -0
  602. package/vendor/@akanjs/native/plugins/http/native-plugin.json +27 -0
  603. package/vendor/@akanjs/native/plugins/http/src/common.ts +294 -0
  604. package/vendor/@akanjs/native/plugins/http/src/desktop.ts +69 -0
  605. package/vendor/@akanjs/native/plugins/http/src/index.ts +181 -0
  606. package/vendor/@akanjs/native/plugins/http/src/web.ts +40 -0
  607. package/vendor/@akanjs/native/plugins/iap/android/IapPlugin.kt +358 -0
  608. package/vendor/@akanjs/native/plugins/iap/ios/IapPlugin.swift +306 -0
  609. package/vendor/@akanjs/native/plugins/iap/native-plugin.json +28 -0
  610. package/vendor/@akanjs/native/plugins/iap/src/index.ts +206 -0
  611. package/vendor/@akanjs/native/plugins/keep-awake/android/KeepAwakePlugin.kt +48 -0
  612. package/vendor/@akanjs/native/plugins/keep-awake/ios/KeepAwakePlugin.swift +36 -0
  613. package/vendor/@akanjs/native/plugins/keep-awake/native-plugin.json +17 -0
  614. package/vendor/@akanjs/native/plugins/keep-awake/src/desktop.ts +127 -0
  615. package/vendor/@akanjs/native/plugins/keep-awake/src/index.ts +79 -0
  616. package/vendor/@akanjs/native/plugins/keep-awake/src/web.ts +78 -0
  617. package/vendor/@akanjs/native/plugins/keyboard/android/KeyboardPlugin.kt +77 -0
  618. package/vendor/@akanjs/native/plugins/keyboard/ios/KeyboardPlugin.swift +93 -0
  619. package/vendor/@akanjs/native/plugins/keyboard/native-plugin.json +18 -0
  620. package/vendor/@akanjs/native/plugins/keyboard/src/index.ts +78 -0
  621. package/vendor/@akanjs/native/plugins/keyboard/src/web.ts +57 -0
  622. package/vendor/@akanjs/native/plugins/local-notifications/android/LocalNotificationReceiver.kt +38 -0
  623. package/vendor/@akanjs/native/plugins/local-notifications/android/LocalNotifications.kt +284 -0
  624. package/vendor/@akanjs/native/plugins/local-notifications/android/LocalNotificationsPlugin.kt +248 -0
  625. package/vendor/@akanjs/native/plugins/local-notifications/ios/LocalNotificationsPlugin.swift +279 -0
  626. package/vendor/@akanjs/native/plugins/local-notifications/native-plugin.json +35 -0
  627. package/vendor/@akanjs/native/plugins/local-notifications/src/desktop.ts +196 -0
  628. package/vendor/@akanjs/native/plugins/local-notifications/src/index.ts +174 -0
  629. package/vendor/@akanjs/native/plugins/local-notifications/src/schedule.ts +164 -0
  630. package/vendor/@akanjs/native/plugins/local-notifications/src/timers.ts +72 -0
  631. package/vendor/@akanjs/native/plugins/local-notifications/src/web.ts +158 -0
  632. package/vendor/@akanjs/native/plugins/menu/native-plugin.json +10 -0
  633. package/vendor/@akanjs/native/plugins/menu/src/desktop.ts +52 -0
  634. package/vendor/@akanjs/native/plugins/menu/src/index.ts +107 -0
  635. package/vendor/@akanjs/native/plugins/network/android/NetworkPlugin.kt +124 -0
  636. package/vendor/@akanjs/native/plugins/network/ios/NetworkPlugin.swift +82 -0
  637. package/vendor/@akanjs/native/plugins/network/native-plugin.json +19 -0
  638. package/vendor/@akanjs/native/plugins/network/src/index.ts +59 -0
  639. package/vendor/@akanjs/native/plugins/network/src/web.ts +43 -0
  640. package/vendor/@akanjs/native/plugins/opener/android/OpenerPlugin.kt +81 -0
  641. package/vendor/@akanjs/native/plugins/opener/ios/OpenerPlugin.swift +83 -0
  642. package/vendor/@akanjs/native/plugins/opener/native-plugin.json +25 -0
  643. package/vendor/@akanjs/native/plugins/opener/src/desktop.ts +88 -0
  644. package/vendor/@akanjs/native/plugins/opener/src/index.ts +35 -0
  645. package/vendor/@akanjs/native/plugins/opener/src/url.ts +39 -0
  646. package/vendor/@akanjs/native/plugins/opener/src/web.ts +33 -0
  647. package/vendor/@akanjs/native/plugins/preferences/android/PreferencesPlugin.kt +44 -0
  648. package/vendor/@akanjs/native/plugins/preferences/ios/PreferencesPlugin.swift +47 -0
  649. package/vendor/@akanjs/native/plugins/preferences/native-plugin.json +18 -0
  650. package/vendor/@akanjs/native/plugins/preferences/src/desktop.ts +59 -0
  651. package/vendor/@akanjs/native/plugins/preferences/src/index.ts +75 -0
  652. package/vendor/@akanjs/native/plugins/preferences/src/web.ts +55 -0
  653. package/vendor/@akanjs/native/plugins/push/android/AkanNativeMessagingService.kt +17 -0
  654. package/vendor/@akanjs/native/plugins/push/android/PushPlugin.kt +257 -0
  655. package/vendor/@akanjs/native/plugins/push/ios/PushPlugin.swift +169 -0
  656. package/vendor/@akanjs/native/plugins/push/native-plugin.json +23 -0
  657. package/vendor/@akanjs/native/plugins/push/src/index.ts +73 -0
  658. package/vendor/@akanjs/native/plugins/screen/native-plugin.json +10 -0
  659. package/vendor/@akanjs/native/plugins/screen/src/desktop.ts +50 -0
  660. package/vendor/@akanjs/native/plugins/screen/src/index.ts +107 -0
  661. package/vendor/@akanjs/native/plugins/screen/src/web.ts +92 -0
  662. package/vendor/@akanjs/native/plugins/screen-orientation/android/ScreenOrientationPlugin.kt +113 -0
  663. package/vendor/@akanjs/native/plugins/screen-orientation/ios/ScreenOrientationPlugin.swift +150 -0
  664. package/vendor/@akanjs/native/plugins/screen-orientation/native-plugin.json +17 -0
  665. package/vendor/@akanjs/native/plugins/screen-orientation/src/index.ts +69 -0
  666. package/vendor/@akanjs/native/plugins/screen-orientation/src/types.ts +26 -0
  667. package/vendor/@akanjs/native/plugins/screen-orientation/src/web.ts +67 -0
  668. package/vendor/@akanjs/native/plugins/secure-storage/android/SecureStoragePlugin.kt +184 -0
  669. package/vendor/@akanjs/native/plugins/secure-storage/ios/SecureStoragePlugin.swift +145 -0
  670. package/vendor/@akanjs/native/plugins/secure-storage/native-plugin.json +18 -0
  671. package/vendor/@akanjs/native/plugins/secure-storage/src/desktop.ts +332 -0
  672. package/vendor/@akanjs/native/plugins/secure-storage/src/index.ts +33 -0
  673. package/vendor/@akanjs/native/plugins/share/android/SharePlugin.kt +218 -0
  674. package/vendor/@akanjs/native/plugins/share/ios/SharePlugin.swift +142 -0
  675. package/vendor/@akanjs/native/plugins/share/native-plugin.json +18 -0
  676. package/vendor/@akanjs/native/plugins/share/src/index.ts +87 -0
  677. package/vendor/@akanjs/native/plugins/share/src/options.ts +43 -0
  678. package/vendor/@akanjs/native/plugins/share/src/web.ts +116 -0
  679. package/vendor/@akanjs/native/plugins/single-instance/native-plugin.json +10 -0
  680. package/vendor/@akanjs/native/plugins/single-instance/src/desktop.ts +63 -0
  681. package/vendor/@akanjs/native/plugins/single-instance/src/index.ts +32 -0
  682. package/vendor/@akanjs/native/plugins/single-instance/src/socket.ts +248 -0
  683. package/vendor/@akanjs/native/plugins/splash-screen/android/SplashScreenPlugin.kt +19 -0
  684. package/vendor/@akanjs/native/plugins/splash-screen/ios/SplashScreenPlugin.swift +20 -0
  685. package/vendor/@akanjs/native/plugins/splash-screen/native-plugin.json +17 -0
  686. package/vendor/@akanjs/native/plugins/splash-screen/src/index.ts +24 -0
  687. package/vendor/@akanjs/native/plugins/splash-screen/src/web.ts +17 -0
  688. package/vendor/@akanjs/native/plugins/sqlite/android/SqlStatements.kt +121 -0
  689. package/vendor/@akanjs/native/plugins/sqlite/android/SqlitePlugin.kt +327 -0
  690. package/vendor/@akanjs/native/plugins/sqlite/ios/SqlitePlugin.swift +361 -0
  691. package/vendor/@akanjs/native/plugins/sqlite/native-plugin.json +18 -0
  692. package/vendor/@akanjs/native/plugins/sqlite/src/common.ts +221 -0
  693. package/vendor/@akanjs/native/plugins/sqlite/src/desktop.ts +140 -0
  694. package/vendor/@akanjs/native/plugins/sqlite/src/index.ts +114 -0
  695. package/vendor/@akanjs/native/plugins/toast/android/ToastPlugin.kt +27 -0
  696. package/vendor/@akanjs/native/plugins/toast/native-plugin.json +14 -0
  697. package/vendor/@akanjs/native/plugins/toast/src/index.ts +41 -0
  698. package/vendor/@akanjs/native/plugins/toast/src/queue.ts +77 -0
  699. package/vendor/@akanjs/native/plugins/toast/src/web.ts +130 -0
  700. package/vendor/@akanjs/native/plugins/tray/native-plugin.json +10 -0
  701. package/vendor/@akanjs/native/plugins/tray/src/desktop.ts +73 -0
  702. package/vendor/@akanjs/native/plugins/tray/src/index.ts +111 -0
  703. package/vendor/@akanjs/native/plugins/updates/android/UpdatesPlugin.kt +290 -0
  704. package/vendor/@akanjs/native/plugins/updates/ios/UpdatesPlugin.swift +292 -0
  705. package/vendor/@akanjs/native/plugins/updates/native-plugin.json +19 -0
  706. package/vendor/@akanjs/native/plugins/updates/src/desktop.ts +558 -0
  707. package/vendor/@akanjs/native/plugins/updates/src/index.ts +95 -0
  708. package/vendor/@akanjs/native/plugins/window/native-plugin.json +32 -0
  709. package/vendor/@akanjs/native/plugins/window/src/desktop.ts +170 -0
  710. package/vendor/@akanjs/native/plugins/window/src/index.ts +342 -0
  711. package/vendor/@akanjs/native/plugins/window/src/web.ts +43 -0
  712. package/vendor/@akanjs/native/plugins/window-state/native-plugin.json +10 -0
  713. package/vendor/@akanjs/native/plugins/window-state/src/desktop.ts +73 -0
  714. package/vendor/@akanjs/native/plugins/window-state/src/index.ts +35 -0
  715. package/vendor/@akanjs/native/plugins/window-state/src/state.ts +146 -0
  716. package/webkit/bootCsr.tsx +26 -14
  717. package/webkit/index.ts +0 -2
  718. package/webkit/nativeNavigation.ts +116 -0
  719. package/webkit/nativePurchase.ts +93 -0
  720. package/webkit/useCamera.tsx +76 -71
  721. package/webkit/useCsrValues.ts +10 -124
  722. package/webkit/useGeoLocation.tsx +11 -13
  723. package/webkit/usePurchase.tsx +68 -123
  724. package/capacitor.base.config.ts +0 -140
  725. package/client/capacitor.ts +0 -252
  726. package/types/capacitor.base.config.d.ts +0 -3
  727. package/types/client/capacitor.d.ts +0 -290
  728. package/types/webkit/useCodepush.d.ts +0 -16
  729. package/types/webkit/useContact.d.ts +0 -11
  730. package/webkit/useCodepush.tsx +0 -76
  731. package/webkit/useContact.tsx +0 -45
@@ -0,0 +1,260 @@
1
+ package com.akanjs.plugins.dialog
2
+
3
+ import android.app.AlertDialog
4
+ import android.content.Context
5
+ import android.content.DialogInterface
6
+ import android.text.SpannableString
7
+ import android.text.Spanned
8
+ import android.text.style.ForegroundColorSpan
9
+ import android.util.Log
10
+ import android.util.TypedValue
11
+ import android.view.KeyEvent
12
+ import android.view.WindowManager
13
+ import android.view.inputmethod.EditorInfo
14
+ import android.widget.EditText
15
+ import android.widget.FrameLayout
16
+ import android.widget.LinearLayout
17
+ import android.widget.TextView
18
+ import com.akanjs.runtime.AkanNativeErrorCode
19
+ import com.akanjs.runtime.AkanNativePluginContext
20
+ import com.akanjs.runtime.AkanNativeReply
21
+ import com.akanjs.runtime.AkanNativeVoidReply
22
+
23
+ /**
24
+ * alert / confirm / prompt / actionSheet with the framework android.app.AlertDialog: no AndroidX,
25
+ * no Material (docs/plugins.md §2, §4.2). Argument rules are those of src/options.ts: the generated
26
+ * DialogPluginSpec (PL-10) decodes and type-checks the arguments, the rules beyond the types keep
27
+ * src/options.ts's messages.
28
+ * - AlertDialog.Builder(activity) takes the activity's Theme.DeviceDefault.DayNight, so dark mode and
29
+ * the device's dialog look come with it. Default button titles are the framework's localized
30
+ * android.R.string.ok / cancel.
31
+ * - Back and a tap outside cancel, as in Capacitor (capacitor-plugins/dialog/…/Dialog.java:57-60) and
32
+ * wry (wry/src/android/kotlin/RustWebChromeClient.kt:141-160). Every dialog also answers from
33
+ * onDismiss, which runs after a button's listener; react-native consumes its callback once the same
34
+ * way (react-native/…/modules/dialog/DialogModule.kt:73-93), and AkanNativeCall ignores the second answer.
35
+ * - At most three buttons fit an AlertDialog (react-native/…/Alert/Alert.js:128-136). That is enough for
36
+ * alert/confirm/prompt; action-sheet options are list rows and only the cancel option is a button.
37
+ */
38
+ class DialogPlugin(private val context: AkanNativePluginContext) : DialogPluginSpec {
39
+ private val showing = LinkedHashSet<AlertDialog>()
40
+
41
+ override fun destroy() {
42
+ // The activity is going away and the page with it: close without answering, without leaking windows.
43
+ for (dialog in showing.toList()) {
44
+ dialog.setOnDismissListener(null)
45
+ dialog.dismiss()
46
+ }
47
+ showing.clear()
48
+ }
49
+
50
+ // ---------------------------------------------------------------- methods
51
+
52
+ override fun alert(args: DialogAlertOptions, reply: AkanNativeVoidReply) {
53
+ val (title, message) = heading(args.title, args.message, reply) ?: return
54
+ val ok = label(args.buttonTitle, android.R.string.ok)
55
+ val builder = builder(title).setMessage(message).setPositiveButton(ok) { _, _ -> answer(reply, Unit) }
56
+ show(reply, builder.create(), Unit)
57
+ }
58
+
59
+ override fun confirm(args: DialogConfirmOptions, reply: AkanNativeReply<DialogConfirmResult>) {
60
+ val (title, message) = heading(args.title, args.message, reply) ?: return
61
+ val ok = label(args.okButtonTitle, android.R.string.ok)
62
+ val cancel = label(args.cancelButtonTitle, android.R.string.cancel)
63
+ val cancelled = DialogConfirmResult(value = false)
64
+ val builder = builder(title)
65
+ .setMessage(message)
66
+ .setPositiveButton(ok) { _, _ -> answer(reply, DialogConfirmResult(value = true)) }
67
+ .setNegativeButton(cancel) { _, _ -> answer(reply, cancelled) }
68
+ show(reply, builder.create(), cancelled)
69
+ }
70
+
71
+ override fun prompt(args: DialogPromptOptions, reply: AkanNativeReply<DialogPromptResult>) {
72
+ val (title, message) = heading(args.title, args.message, reply) ?: return
73
+ val ok = label(args.okButtonTitle, android.R.string.ok)
74
+ val cancel = label(args.cancelButtonTitle, android.R.string.cancel)
75
+ val placeholder = args.inputPlaceholder ?: ""
76
+ // wry's onJsPrompt drops the default value (RustWebChromeClient.kt:206-221); keep it.
77
+ val initial = args.inputText ?: ""
78
+ val cancelled = DialogPromptResult(value = "", cancelled = true)
79
+
80
+ val builder = builder(title).setMessage(message)
81
+ val themed = builder.context // the alert dialog theme, for the field and its padding
82
+ val input = EditText(themed).apply {
83
+ setSingleLine()
84
+ imeOptions = EditorInfo.IME_ACTION_DONE
85
+ hint = placeholder
86
+ setText(initial)
87
+ setSelection(initial.length) // caret at the end, as UITextField does
88
+ }
89
+ // Capacitor and wry add the EditText edge to edge; the dialog's content padding aligns it with the message.
90
+ val pad = dimension(themed, android.R.attr.dialogPreferredPadding, 24)
91
+ val box = FrameLayout(themed).apply {
92
+ setPadding(pad, 0, pad, 0)
93
+ addView(input)
94
+ }
95
+ builder.setView(box)
96
+ // Not trimmed: Capacitor trims on Android only (capacitor-plugins/dialog/…/Dialog.java:143).
97
+ .setPositiveButton(ok) { _, _ -> answer(reply, DialogPromptResult(value = input.text.toString(), cancelled = false)) }
98
+ .setNegativeButton(cancel) { _, _ -> answer(reply, cancelled) }
99
+ val dialog = builder.create()
100
+ dialog.setCanceledOnTouchOutside(false) // a stray tap beside the keyboard must not throw the text away
101
+ input.setOnEditorActionListener { _, action, event ->
102
+ val enter = action == EditorInfo.IME_ACTION_DONE ||
103
+ (event?.keyCode == KeyEvent.KEYCODE_ENTER && event.action == KeyEvent.ACTION_DOWN)
104
+ if (enter) dialog.getButton(DialogInterface.BUTTON_POSITIVE)?.performClick()
105
+ enter
106
+ }
107
+ dialog.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE)
108
+ input.requestFocus()
109
+ show(reply, dialog, cancelled)
110
+ }
111
+
112
+ override fun actionSheet(args: DialogActionSheetOptions, reply: AkanNativeReply<DialogActionSheetResult>) {
113
+ val title = args.title?.ifEmpty { null }
114
+ val message = args.message?.ifEmpty { null }
115
+ val options = sheetOptions(args.options, reply) ?: return
116
+ val cancelled = DialogActionSheetResult(index = -1.0, cancelled = true)
117
+
118
+ val builder = AlertDialog.Builder(context.activity)
119
+ val themed = builder.context
120
+ val cancelIndex = options.indexOfFirst { it.second == DialogActionSheetOptionStyle.CANCEL }
121
+ val rows = options.indices.filter { it != cancelIndex }
122
+ val danger = color(themed, android.R.attr.colorError)
123
+ val items = rows.map<Int, CharSequence> { i ->
124
+ val (label, style) = options[i]
125
+ if (style == DialogActionSheetOptionStyle.DESTRUCTIVE && danger != null) {
126
+ SpannableString(label).apply { setSpan(ForegroundColorSpan(danger), 0, length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) }
127
+ } else {
128
+ label
129
+ }
130
+ }.toTypedArray()
131
+ // setMessage hides the setItems list (react-native/…/modules/dialog/AlertFragment.kt:158-162),
132
+ // so a message goes into a custom title.
133
+ if (message != null) builder.setCustomTitle(header(themed, title, message)) else if (title != null) builder.setTitle(title)
134
+ builder.setItems(items) { _, which -> answer(reply, DialogActionSheetResult(index = rows[which].toDouble(), cancelled = false)) }
135
+ if (cancelIndex >= 0) builder.setNegativeButton(options[cancelIndex].first) { _, _ -> answer(reply, cancelled) }
136
+ show(reply, builder.create(), cancelled)
137
+ }
138
+
139
+ // ---------------------------------------------------------------- showing
140
+
141
+ private fun builder(title: String?): AlertDialog.Builder =
142
+ AlertDialog.Builder(context.activity).apply { if (title != null) setTitle(title) }
143
+
144
+ private fun <T> show(reply: AkanNativeReply<T>, dialog: AlertDialog, cancelled: T) {
145
+ val activity = context.activity
146
+ // Showing on a finishing activity throws BadTokenException. Capacitor rejects and wry returns
147
+ // without answering (capacitor-plugins/dialog/…/DialogPlugin.java:25-28, RustWebChromeClient.kt:142);
148
+ // answering as cancelled keeps the page going.
149
+ if (activity.isFinishing || activity.isDestroyed) return answer(reply, cancelled)
150
+ dialog.setOnDismissListener {
151
+ showing.remove(dialog)
152
+ answer(reply, cancelled)
153
+ }
154
+ showing.add(dialog)
155
+ try {
156
+ dialog.show()
157
+ } catch (e: WindowManager.BadTokenException) {
158
+ showing.remove(dialog)
159
+ return answer(reply, cancelled)
160
+ }
161
+ // The dialog belongs to its call: the page gave up on it (AbortSignal) or went away (reload,
162
+ // navigation), so it goes too instead of staying on screen for a page that cannot hear it.
163
+ reply.onCancel {
164
+ dialog.setOnDismissListener(null)
165
+ showing.remove(dialog)
166
+ dialog.dismiss()
167
+ }
168
+ // The title as an accessibility heading, as react-native does (AlertFragment.kt:99-131).
169
+ val titleId = dialog.context.resources.getIdentifier("alertTitle", "id", "android")
170
+ if (titleId != 0) dialog.findViewById<TextView>(titleId)?.isAccessibilityHeading = true
171
+ }
172
+
173
+ /** After a page reload the shell's reply port is closed; that must not crash a button click. */
174
+ private fun <T> answer(reply: AkanNativeReply<T>, result: T) {
175
+ try {
176
+ reply.resolve(result)
177
+ } catch (e: RuntimeException) {
178
+ Log.w("AkanNative", "dialog: answer dropped", e)
179
+ }
180
+ }
181
+
182
+ /** Title and message for an action sheet with a message (the stock title is a single line). */
183
+ private fun header(themed: Context, title: String?, message: String): LinearLayout {
184
+ val pad = dimension(themed, android.R.attr.dialogPreferredPadding, 24)
185
+ val dp = themed.resources.displayMetrics.density
186
+ return LinearLayout(themed).apply {
187
+ orientation = LinearLayout.VERTICAL
188
+ setPadding(pad, (18 * dp).toInt(), pad, (4 * dp).toInt())
189
+ if (title != null) {
190
+ addView(TextView(themed, null, android.R.attr.windowTitleStyle).apply {
191
+ text = title
192
+ isAccessibilityHeading = true
193
+ })
194
+ }
195
+ addView(TextView(themed).apply {
196
+ text = message
197
+ color(themed, android.R.attr.textColorSecondary)?.let(::setTextColor)
198
+ if (title != null) setPadding(0, (8 * dp).toInt(), 0, 0)
199
+ })
200
+ }
201
+ }
202
+
203
+ private fun dimension(themed: Context, attr: Int, fallbackDp: Int): Int {
204
+ val value = TypedValue()
205
+ val metrics = themed.resources.displayMetrics
206
+ return if (themed.theme.resolveAttribute(attr, value, true) && value.type == TypedValue.TYPE_DIMENSION) {
207
+ TypedValue.complexToDimensionPixelSize(value.data, metrics)
208
+ } else {
209
+ (fallbackDp * metrics.density).toInt()
210
+ }
211
+ }
212
+
213
+ private fun color(themed: Context, attr: Int): Int? =
214
+ themed.obtainStyledAttributes(intArrayOf(attr)).let { a ->
215
+ // recycle(), not use {}: TypedArray is AutoCloseable only from API 31.
216
+ try { if (a.hasValue(0)) a.getColor(0, 0) else null } finally { a.recycle() }
217
+ }
218
+
219
+ // ---------------------------------------------------------------- arguments (src/options.ts)
220
+
221
+ /** The rules the types cannot express, with src/options.ts's "<method>: …" messages. */
222
+ private fun invalid(reply: AkanNativeReply<*>, message: String) =
223
+ reply.reject(AkanNativeErrorCode.INVALID_ARGS, "${reply.call.method}: $message")
224
+
225
+ /** Title and message for the dialog, null when empty. Rejects (and returns null) when both are empty. */
226
+ private fun heading(title: String?, message: String, reply: AkanNativeReply<*>): Pair<String?, String?>? {
227
+ if (title.isNullOrEmpty() && message.isEmpty()) {
228
+ invalid(reply, "title or message must not be empty")
229
+ return null
230
+ }
231
+ return title?.ifEmpty { null } to message.ifEmpty { null }
232
+ }
233
+
234
+ /** "" means the default, not an invisible button (react-native/…/Alert/Alert.js:145-148). */
235
+ private fun label(text: String?, fallback: Int): String =
236
+ text?.ifEmpty { null } ?: context.activity.getString(fallback)
237
+
238
+ private fun sheetOptions(
239
+ raw: List<DialogActionSheetOption>,
240
+ reply: AkanNativeReply<*>,
241
+ ): List<Pair<String, DialogActionSheetOptionStyle>>? {
242
+ if (raw.isEmpty()) {
243
+ invalid(reply, "options must be a non-empty array")
244
+ return null
245
+ }
246
+ val options = raw.mapIndexed { i, option ->
247
+ if (option.title.isEmpty()) {
248
+ invalid(reply, "options[$i].title must be a non-empty string")
249
+ return null
250
+ }
251
+ option.title to (option.style ?: DialogActionSheetOptionStyle.DEFAULT)
252
+ }
253
+ // One cancel option, as UIAlertController allows one .cancel action.
254
+ if (options.count { it.second == DialogActionSheetOptionStyle.CANCEL } > 1) {
255
+ invalid(reply, "only one option may have the cancel style")
256
+ return null
257
+ }
258
+ return options
259
+ }
260
+ }
@@ -0,0 +1,198 @@
1
+ import UIKit
2
+
3
+ /// alert / confirm / prompt / actionSheet with UIAlertController (docs/plugins.md §4.2).
4
+ /// Argument rules are the ones of src/options.ts: the generated DialogPluginSpec (PL-10) decodes and
5
+ /// type-checks the arguments, the rules beyond the types keep src/options.ts's messages.
6
+ /// - Presented from the topmost view controller of the app's own window, so dark mode follows the
7
+ /// app by itself. react-native copies the window's overrideUserInterfaceStyle only because it
8
+ /// presents from a window of its own (react-native/…/RCTAlertController.mm:42-48).
9
+ /// - Default button titles are UIKit's own localized "OK"/"Cancel"
10
+ /// (react-native/…/RCTUtils.mm:1301-1305 RCTUIKitLocalizedString).
11
+ /// - When nothing can present, the call answers as cancelled: a call that never answers hangs the
12
+ /// page's await (the rule of AkanNativeViewController.presentPanel).
13
+ /// - A dialog belongs to its call: when the page gives up on it (AbortSignal) or goes away (reload,
14
+ /// navigation), it is dismissed, so no dialog of a gone page stays on screen and blocks the next.
15
+ final class DialogPlugin: DialogPluginSpec {
16
+ static let id = "dialog"
17
+ private let context: AkanNativePluginContext
18
+
19
+ init(context: AkanNativePluginContext) {
20
+ self.context = context
21
+ }
22
+
23
+ // MARK: Methods
24
+
25
+ func alert(_ args: DialogAlertOptions, _ reply: AkanNativeReply<Void>) {
26
+ guard let text = Self.heading(args.title, args.message, reply) else { return }
27
+ let alert = UIAlertController(title: text.title, message: text.message, preferredStyle: .alert)
28
+ let ok = UIAlertAction(title: Self.label(args.buttonTitle, Self.uikit("OK")), style: .default) { _ in reply.resolve() }
29
+ alert.addAction(ok)
30
+ alert.preferredAction = ok
31
+ present(alert, for: reply.call) { reply.resolve() }
32
+ }
33
+
34
+ func confirm(_ args: DialogConfirmOptions, _ reply: AkanNativeReply<DialogConfirmResult>) {
35
+ guard let text = Self.heading(args.title, args.message, reply) else { return }
36
+ let alert = UIAlertController(title: text.title, message: text.message, preferredStyle: .alert)
37
+ // .cancel (Capacitor uses .default for both) puts Cancel where iOS users expect it and lets a
38
+ // hardware keyboard's Escape pick it; preferredAction makes OK the bold, Return-key button
39
+ // (react-native/…/RCTAlertManager.mm:152-156, 186-188).
40
+ alert.addAction(UIAlertAction(title: Self.label(args.cancelButtonTitle, Self.uikit("Cancel")), style: .cancel) { _ in
41
+ reply.resolve(DialogConfirmResult(value: false))
42
+ })
43
+ let ok = UIAlertAction(title: Self.label(args.okButtonTitle, Self.uikit("OK")), style: .default) { _ in
44
+ reply.resolve(DialogConfirmResult(value: true))
45
+ }
46
+ alert.addAction(ok)
47
+ alert.preferredAction = ok
48
+ present(alert, for: reply.call) { reply.resolve(DialogConfirmResult(value: false)) }
49
+ }
50
+
51
+ func prompt(_ args: DialogPromptOptions, _ reply: AkanNativeReply<DialogPromptResult>) {
52
+ guard let text = Self.heading(args.title, args.message, reply) else { return }
53
+ let placeholder = args.inputPlaceholder
54
+ let initial = args.inputText
55
+ let cancelled = DialogPromptResult(value: "", cancelled: true)
56
+ let alert = UIAlertController(title: text.title, message: text.message, preferredStyle: .alert)
57
+ alert.addTextField { field in
58
+ field.placeholder = placeholder
59
+ field.text = initial
60
+ }
61
+ alert.addAction(UIAlertAction(title: Self.label(args.cancelButtonTitle, Self.uikit("Cancel")), style: .cancel) { _ in
62
+ reply.resolve(cancelled)
63
+ })
64
+ // Not trimmed: Capacitor trims on Android only (capacitor-plugins/dialog/…/Dialog.java:143).
65
+ let ok = UIAlertAction(title: Self.label(args.okButtonTitle, Self.uikit("OK")), style: .default) { [weak alert] _ in
66
+ reply.resolve(DialogPromptResult(value: alert?.textFields?.first?.text ?? "", cancelled: false))
67
+ }
68
+ alert.addAction(ok)
69
+ alert.preferredAction = ok
70
+ present(alert, for: reply.call) { reply.resolve(cancelled) }
71
+ }
72
+
73
+ func actionSheet(_ args: DialogActionSheetOptions, _ reply: AkanNativeReply<DialogActionSheetResult>) {
74
+ guard let options = Self.sheetOptions(args.options, reply) else { return }
75
+ let sheet = UIAlertController(title: Self.nonEmpty(args.title), message: Self.nonEmpty(args.message), preferredStyle: .actionSheet)
76
+ let responder = SheetResponder(reply) // retained by the actions below
77
+ for (index, option) in options.enumerated() {
78
+ // iOS 26 does not show a .cancel action (verified in the iPad popover; iPhone per
79
+ // capacitor-plugins/action-sheet/README.md:121) and runs it on a tap outside instead,
80
+ // so choosing it counts as a dismissal.
81
+ sheet.addAction(UIAlertAction(title: option.title, style: option.style) { _ in
82
+ responder.answer(option.style == .cancel ? nil : index)
83
+ })
84
+ }
85
+ // iPad (and Mac): the sheet is a popover and UIKit throws without an anchor. Centered with no
86
+ // arrow like Capacitor's setCenteredPopover (capacitor/ios/Capacitor/Capacitor/CAPPlugin.m:149-155).
87
+ // Not on iPhone: since iOS 26 an anchor turns the sheet into a popover there too and leaves the
88
+ // page behind it interactive (react-native/…/RCTActionSheetManager.mm:64-74).
89
+ if UIDevice.current.userInterfaceIdiom != .phone, let popover = sheet.popoverPresentationController,
90
+ let anchor = context.webView ?? context.viewController?.view
91
+ {
92
+ popover.sourceView = anchor
93
+ popover.sourceRect = CGRect(x: anchor.bounds.midX, y: anchor.bounds.midY, width: 0, height: 0)
94
+ popover.permittedArrowDirections = []
95
+ }
96
+ present(sheet, for: reply.call, presented: {
97
+ // Without a cancel action a tap outside dismisses the sheet with no action at all; the
98
+ // delegate hears it. Only on action sheets: an alert-style controller's presentation
99
+ // controller must not get a delegate (capacitor-plugins/action-sheet/…/ActionSheetPlugin.swift:57-73).
100
+ sheet.presentationController?.delegate = responder
101
+ }, otherwise: { responder.answer(nil) })
102
+ }
103
+
104
+ // MARK: Presenting
105
+
106
+ /// AkanNativePresent: waits out a running transition; `otherwise` answers the call when nothing can
107
+ /// present. The controller goes away with its call (cancelled, or its page ended).
108
+ private func present(_ controller: UIViewController, for call: AkanNativeCall, presented: (@MainActor () -> Void)? = nil, otherwise: @escaping @MainActor () -> Void) {
109
+ call.onCancel { [weak controller] in
110
+ guard let controller, controller.presentingViewController != nil else { return }
111
+ controller.dismiss(animated: true)
112
+ }
113
+ context.present(controller, completion: presented, otherwise: otherwise)
114
+ }
115
+
116
+ // MARK: Arguments (src/options.ts)
117
+
118
+ /// The rules the types cannot express. The generated DialogPluginSpec has already checked the
119
+ /// types (PL-10); these keep src/options.ts's "<method>: …" messages.
120
+ private static func invalid<T>(_ reply: AkanNativeReply<T>, _ message: String) {
121
+ reply.reject(.invalidArgs, "\(reply.call.method): \(message)")
122
+ }
123
+
124
+ /// Title and message for the controller, nil when empty. Rejects when both are empty.
125
+ private static func heading<T>(_ title: String?, _ message: String, _ reply: AkanNativeReply<T>) -> (title: String?, message: String?)? {
126
+ let title = nonEmpty(title), message = nonEmpty(message)
127
+ if title == nil && message == nil {
128
+ invalid(reply, "title or message must not be empty")
129
+ return nil
130
+ }
131
+ return (title, message)
132
+ }
133
+
134
+ /// "" means the default, not an invisible button (react-native/…/Alert/Alert.js:145-148).
135
+ private static func label(_ text: String?, _ fallback: String) -> String {
136
+ nonEmpty(text) ?? fallback
137
+ }
138
+
139
+ private static func sheetOptions(_ raw: [DialogActionSheetOption], _ reply: AkanNativeReply<DialogActionSheetResult>) -> [(title: String, style: UIAlertAction.Style)]? {
140
+ guard !raw.isEmpty else {
141
+ invalid(reply, "options must be a non-empty array")
142
+ return nil
143
+ }
144
+ var options: [(title: String, style: UIAlertAction.Style)] = []
145
+ for (i, option) in raw.enumerated() {
146
+ guard !option.title.isEmpty else {
147
+ invalid(reply, "options[\(i)].title must be a non-empty string")
148
+ return nil
149
+ }
150
+ let style: UIAlertAction.Style =
151
+ switch option.style ?? .default {
152
+ case .default: .default
153
+ case .destructive: .destructive
154
+ case .cancel: .cancel
155
+ }
156
+ options.append((option.title, style))
157
+ }
158
+ // UIAlertController raises NSInternalInconsistencyException for a second .cancel action.
159
+ if options.count(where: { $0.style == .cancel }) > 1 {
160
+ invalid(reply, "only one option may have the cancel style")
161
+ return nil
162
+ }
163
+ return options
164
+ }
165
+
166
+ private static func nonEmpty(_ text: String?) -> String? {
167
+ text?.isEmpty == false ? text : nil
168
+ }
169
+
170
+ private static func uikit(_ key: String) -> String {
171
+ Bundle(for: UIApplication.self).localizedString(forKey: key, value: key, table: nil)
172
+ }
173
+
174
+ /// Answers an action sheet once: an option, the cancel option, or a dismissal without an action.
175
+ /// The sheet's actions retain it, so it lives exactly as long as the sheet (the presentation
176
+ /// controller's delegate is weak). If the sheet goes away unanswered, the call is released and
177
+ /// AkanNativeCall rejects it instead of leaving the page waiting.
178
+ private final class SheetResponder: NSObject, UIAdaptivePresentationControllerDelegate {
179
+ private let reply: AkanNativeReply<DialogActionSheetResult>
180
+
181
+ init(_ reply: AkanNativeReply<DialogActionSheetResult>) {
182
+ self.reply = reply
183
+ }
184
+
185
+ func answer(_ index: Int?) {
186
+ if let index {
187
+ reply.resolve(DialogActionSheetResult(index: Double(index), cancelled: false))
188
+ } else {
189
+ reply.resolve(DialogActionSheetResult(index: -1, cancelled: true))
190
+ }
191
+ }
192
+
193
+ func presentationControllerDidDismiss(_ presentationController: UIPresentationController) {
194
+ answer(nil)
195
+ }
196
+ }
197
+ }
198
+
@@ -0,0 +1,18 @@
1
+ {
2
+ "id": "dialog",
3
+ "apiVersion": 1,
4
+ "methods": ["alert", "confirm", "prompt", "actionSheet"],
5
+ "events": [],
6
+ "codegen": true,
7
+ "web": "./src/web.ts",
8
+ "desktop": "./src/desktop.ts",
9
+ "ios": {
10
+ "sources": ["ios/*.swift"],
11
+ "class": "DialogPlugin",
12
+ "frameworks": ["UIKit"]
13
+ },
14
+ "android": {
15
+ "sources": ["android/*.kt"],
16
+ "class": "com.akanjs.plugins.dialog.DialogPlugin"
17
+ }
18
+ }
@@ -0,0 +1,80 @@
1
+
2
+
3
+ import { type DesktopContext, defineDesktopPlugin } from "../../../packages/desktop/src/plugin.ts";
4
+ import type { ActionSheetResult, DialogApi } from "./index.ts";
5
+ import { normalizeActionSheet, normalizeAlert, normalizeConfirm, normalizePrompt } from "./options.ts";
6
+
7
+ interface Button {
8
+ title: string;
9
+ style?: "default" | "cancel" | "destructive";
10
+ }
11
+
12
+ interface Answer {
13
+ /** Index of the button that ended the sheet; -1 when none did. */
14
+ button: number;
15
+ text?: string;
16
+ }
17
+
18
+ /**
19
+ * Shows the alert under a tag of its own; when the call's signal fires (the page gave up on it, or
20
+ * the page is gone) the shell takes it off the screen (`alert.dismiss`).
21
+ */
22
+ const show = async (
23
+ ctx: DesktopContext,
24
+ args: { title: string; message: string; buttons: Button[]; input?: { text: string; placeholder: string } },
25
+ ) => {
26
+ const tag = crypto.randomUUID();
27
+ const dismiss = () =>
28
+ void ctx
29
+ .shell("alert.dismiss", { tag })
30
+ .catch((error: unknown) => console.warn("[akan-native] dialog: alert.dismiss failed", error));
31
+ ctx.signal?.addEventListener("abort", dismiss, { once: true });
32
+ try {
33
+ return (await ctx.shell("alert.show", { ...args, tag })) as Answer;
34
+ } finally {
35
+ ctx.signal?.removeEventListener("abort", dismiss);
36
+ }
37
+ };
38
+
39
+ export default defineDesktopPlugin<DialogApi>({
40
+ id: "dialog",
41
+ methods: {
42
+ async alert(args, ctx) {
43
+ const a = normalizeAlert(args);
44
+ await show(ctx, { title: a.title, message: a.message, buttons: [{ title: a.buttonTitle }] });
45
+ },
46
+ async confirm(args, ctx) {
47
+ const c = normalizeConfirm(args);
48
+ const { button } = await show(ctx, {
49
+ title: c.title,
50
+ message: c.message,
51
+ buttons: [{ title: c.okButtonTitle }, { title: c.cancelButtonTitle, style: "cancel" }],
52
+ });
53
+ return { value: button === 0 };
54
+ },
55
+ async prompt(args, ctx) {
56
+ const p = normalizePrompt(args);
57
+ const { button, text } = await show(ctx, {
58
+ title: p.title,
59
+ message: p.message,
60
+ buttons: [{ title: p.okButtonTitle }, { title: p.cancelButtonTitle, style: "cancel" }],
61
+ input: { text: p.inputText, placeholder: p.inputPlaceholder },
62
+ });
63
+ return button === 0 ? { value: text ?? "", cancelled: false } : { value: "", cancelled: true };
64
+ },
65
+ async actionSheet(args, ctx): Promise<ActionSheetResult> {
66
+ const a = normalizeActionSheet(args);
67
+ const order = a.options
68
+ .map((_, i) => i)
69
+ .sort((x, y) => Number(a.options[x]!.style === "cancel") - Number(a.options[y]!.style === "cancel"));
70
+ const { button } = await show(ctx, {
71
+ title: a.title,
72
+ message: a.message,
73
+ buttons: order.map((i) => ({ title: a.options[i]!.title, style: a.options[i]!.style })),
74
+ });
75
+ const index = order[button];
76
+ if (index === undefined || a.options[index]!.style === "cancel") return { index: -1, cancelled: true };
77
+ return { index, cancelled: false };
78
+ },
79
+ },
80
+ });
@@ -0,0 +1,87 @@
1
+ import { definePlugin } from "../../../packages/core/src/index.ts";
2
+ import { web } from "./web.ts";
3
+
4
+ export interface AlertOptions {
5
+ title?: string;
6
+ /** Required; may be "" when there is a title. */
7
+ message: string;
8
+ /** Default: "OK" (the OS's localized OK on iOS and Android). */
9
+ buttonTitle?: string;
10
+ }
11
+
12
+ export interface ConfirmOptions {
13
+ title?: string;
14
+ message: string;
15
+ okButtonTitle?: string;
16
+ cancelButtonTitle?: string;
17
+ }
18
+
19
+ export interface ConfirmResult {
20
+ /** true only for the OK button. */
21
+ value: boolean;
22
+ }
23
+
24
+ export interface PromptOptions extends ConfirmOptions {
25
+ inputPlaceholder?: string;
26
+ /** Text the field starts with. */
27
+ inputText?: string;
28
+ }
29
+
30
+ export interface PromptResult {
31
+ /** The text as typed (not trimmed). "" when cancelled. */
32
+ value: string;
33
+ cancelled: boolean;
34
+ }
35
+
36
+ export type ActionSheetOptionStyle = "default" | "destructive" | "cancel";
37
+
38
+ export interface ActionSheetOption {
39
+ title: string;
40
+ /**
41
+ * "destructive" is shown in red. At most one option may be "cancel": it is shown apart
42
+ * (iOS hides it on iPhone and iPad and cancels on a tap outside instead) and choosing it
43
+ * answers `{ index: -1, cancelled: true }` like any other dismissal.
44
+ */
45
+ style?: ActionSheetOptionStyle;
46
+ }
47
+
48
+ export interface ActionSheetOptions {
49
+ title?: string;
50
+ message?: string;
51
+ /** At least one. */
52
+ options: ActionSheetOption[];
53
+ }
54
+
55
+ export interface ActionSheetResult {
56
+ /** Index into `options` of the chosen option, or -1 when cancelled. */
57
+ index: number;
58
+ cancelled: boolean;
59
+ }
60
+
61
+ export interface DialogApi {
62
+ alert(options: AlertOptions): Promise<void>;
63
+ confirm(options: ConfirmOptions): Promise<ConfirmResult>;
64
+ prompt(options: PromptOptions): Promise<PromptResult>;
65
+ actionSheet(options: ActionSheetOptions): Promise<ActionSheetResult>;
66
+ }
67
+
68
+ export const dialog = definePlugin<DialogApi>("dialog", {
69
+ methods: ["alert", "confirm", "prompt", "actionSheet"],
70
+ web,
71
+ });
72
+
73
+ export interface UseDialog extends DialogApi {
74
+ supported: boolean;
75
+ }
76
+
77
+ const methods: DialogApi = {
78
+ alert: dialog.alert,
79
+ confirm: dialog.confirm,
80
+ prompt: dialog.prompt,
81
+ actionSheet: dialog.actionSheet,
82
+ };
83
+
84
+ /** The dialog functions for components. They hold no state, so they are stable across renders. */
85
+ export function useDialog(): UseDialog {
86
+ return { supported: dialog.isSupported("alert"), ...methods };
87
+ }