@opengeni/react-native 1.4.5-canary.37615713321001

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 (132) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +74 -0
  3. package/dist/adapters.d.ts +53 -0
  4. package/dist/adapters.js +3 -0
  5. package/dist/adapters.js.map +1 -0
  6. package/dist/attachments.d.ts +75 -0
  7. package/dist/chunk-3VSZAQ7G.js +391 -0
  8. package/dist/chunk-3VSZAQ7G.js.map +1 -0
  9. package/dist/chunk-5ZVK7WKA.js +88 -0
  10. package/dist/chunk-5ZVK7WKA.js.map +1 -0
  11. package/dist/chunk-EEDIMY3L.js +240 -0
  12. package/dist/chunk-EEDIMY3L.js.map +1 -0
  13. package/dist/chunk-M23SDI4R.js +83 -0
  14. package/dist/chunk-M23SDI4R.js.map +1 -0
  15. package/dist/chunk-PHJBSAR3.js +2006 -0
  16. package/dist/chunk-PHJBSAR3.js.map +1 -0
  17. package/dist/environment.d.ts +19 -0
  18. package/dist/expo.d.ts +25 -0
  19. package/dist/expo.js +267 -0
  20. package/dist/expo.js.map +1 -0
  21. package/dist/index.d.ts +13 -0
  22. package/dist/index.js +3345 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/presentation.d.ts +262 -0
  25. package/dist/read-acknowledgement.d.ts +39 -0
  26. package/dist/realtime/call-events.d.ts +11 -0
  27. package/dist/realtime/call-view.d.ts +26 -0
  28. package/dist/realtime/expo-call.d.ts +11 -0
  29. package/dist/realtime/native-call.d.ts +104 -0
  30. package/dist/realtime/native-realtime.d.ts +35 -0
  31. package/dist/realtime/use-native-session-realtime.d.ts +25 -0
  32. package/dist/session-view.d.ts +87 -0
  33. package/dist/timeline/activity.d.ts +34 -0
  34. package/dist/timeline/composer.d.ts +86 -0
  35. package/dist/timeline/controls.d.ts +27 -0
  36. package/dist/timeline/decisions.d.ts +29 -0
  37. package/dist/timeline/feedback.d.ts +26 -0
  38. package/dist/timeline/icon-nodes.generated.d.ts +738 -0
  39. package/dist/timeline/icon.d.ts +11 -0
  40. package/dist/timeline/index.d.ts +32 -0
  41. package/dist/timeline/index.js +5419 -0
  42. package/dist/timeline/index.js.map +1 -0
  43. package/dist/timeline/markdown.d.ts +11 -0
  44. package/dist/timeline/markdown.js +415 -0
  45. package/dist/timeline/markdown.js.map +1 -0
  46. package/dist/timeline/message-attachments.d.ts +13 -0
  47. package/dist/timeline/message-timeline.d.ts +36 -0
  48. package/dist/timeline/model-picker.d.ts +17 -0
  49. package/dist/timeline/primitives.d.ts +85 -0
  50. package/dist/timeline/queue-dock.d.ts +19 -0
  51. package/dist/timeline/session-actions.d.ts +34 -0
  52. package/dist/timeline/session-list.d.ts +50 -0
  53. package/dist/timeline/session-screen.d.ts +35 -0
  54. package/dist/timeline/session-signals.d.ts +37 -0
  55. package/dist/timeline/sheet.d.ts +14 -0
  56. package/dist/timeline/theme.d.ts +58 -0
  57. package/dist/timeline/thinking-orb.d.ts +13 -0
  58. package/dist/timeline/turn.d.ts +80 -0
  59. package/dist/ui/attention.d.ts +14 -0
  60. package/dist/ui/cards.d.ts +21 -0
  61. package/dist/ui/composer.d.ts +21 -0
  62. package/dist/ui/format.d.ts +13 -0
  63. package/dist/ui/icons.d.ts +9 -0
  64. package/dist/ui/index.d.ts +12 -0
  65. package/dist/ui/index.js +1757 -0
  66. package/dist/ui/index.js.map +1 -0
  67. package/dist/ui/steps-sheet.d.ts +10 -0
  68. package/dist/ui/theme.d.ts +63 -0
  69. package/dist/ui/timeline.d.ts +48 -0
  70. package/dist/ui/web-tokens.gen.d.ts +90 -0
  71. package/dist/use-native-session.d.ts +40 -0
  72. package/dist/view-model.d.ts +52 -0
  73. package/dist/voice-input.d.ts +102 -0
  74. package/dist/webrtc.d.ts +9 -0
  75. package/dist/webrtc.js +19 -0
  76. package/dist/webrtc.js.map +1 -0
  77. package/expo-module.config.json +7 -0
  78. package/ios/OpenGeniCall.podspec +22 -0
  79. package/ios/OpenGeniCallAppDelegateSubscriber.swift +29 -0
  80. package/ios/OpenGeniCallCenter.swift +189 -0
  81. package/ios/OpenGeniCallModule.swift +64 -0
  82. package/package.json +93 -0
  83. package/src/adapters.ts +150 -0
  84. package/src/attachments.ts +396 -0
  85. package/src/environment.tsx +214 -0
  86. package/src/expo.ts +295 -0
  87. package/src/index.ts +98 -0
  88. package/src/presentation.ts +285 -0
  89. package/src/read-acknowledgement.ts +72 -0
  90. package/src/realtime/call-events.ts +41 -0
  91. package/src/realtime/call-view.tsx +220 -0
  92. package/src/realtime/expo-call.ts +49 -0
  93. package/src/realtime/native-call.ts +266 -0
  94. package/src/realtime/native-realtime.ts +115 -0
  95. package/src/realtime/use-native-session-realtime.ts +29 -0
  96. package/src/session-view.tsx +2251 -0
  97. package/src/timeline/activity.tsx +736 -0
  98. package/src/timeline/composer.tsx +686 -0
  99. package/src/timeline/controls.tsx +151 -0
  100. package/src/timeline/decisions.tsx +651 -0
  101. package/src/timeline/feedback.tsx +251 -0
  102. package/src/timeline/icon-nodes.generated.ts +1830 -0
  103. package/src/timeline/icon.tsx +44 -0
  104. package/src/timeline/index.ts +67 -0
  105. package/src/timeline/markdown.tsx +510 -0
  106. package/src/timeline/message-attachments.tsx +155 -0
  107. package/src/timeline/message-timeline.tsx +1042 -0
  108. package/src/timeline/model-picker.tsx +450 -0
  109. package/src/timeline/primitives.tsx +561 -0
  110. package/src/timeline/queue-dock.tsx +331 -0
  111. package/src/timeline/session-actions.tsx +379 -0
  112. package/src/timeline/session-list.tsx +338 -0
  113. package/src/timeline/session-screen.tsx +488 -0
  114. package/src/timeline/session-signals.tsx +312 -0
  115. package/src/timeline/sheet.tsx +153 -0
  116. package/src/timeline/theme.tsx +128 -0
  117. package/src/timeline/thinking-orb.tsx +93 -0
  118. package/src/timeline/turn.tsx +569 -0
  119. package/src/ui/attention.tsx +220 -0
  120. package/src/ui/cards.tsx +267 -0
  121. package/src/ui/composer.tsx +296 -0
  122. package/src/ui/format.ts +86 -0
  123. package/src/ui/icons.tsx +131 -0
  124. package/src/ui/index.ts +18 -0
  125. package/src/ui/steps-sheet.tsx +71 -0
  126. package/src/ui/theme.ts +261 -0
  127. package/src/ui/timeline.tsx +837 -0
  128. package/src/ui/web-tokens.gen.ts +94 -0
  129. package/src/use-native-session.ts +219 -0
  130. package/src/view-model.ts +485 -0
  131. package/src/voice-input.ts +382 -0
  132. package/src/webrtc.ts +30 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/timeline/icon-nodes.generated.ts","../src/timeline/icon.tsx","../src/ui/web-tokens.gen.ts","../src/timeline/theme.tsx"],"names":["jsx","family"],"mappings":"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","file":"chunk-PHJBSAR3.js","sourcesContent":["// GENERATED by scripts/generate-native-icons.ts from lucide-react. Do not edit.\nexport const iconNodes = {\n \"arrow-down\": [\n [\n \"path\",\n {\n d: \"M 12 5v14\",\n },\n ],\n [\n \"path\",\n {\n d: \"m19 12-7 7-7-7\",\n },\n ],\n ],\n \"arrow-up\": [\n [\n \"path\",\n {\n d: \"m5 12 7-7 7 7\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 19V5\",\n },\n ],\n ],\n bot: [\n [\n \"path\",\n {\n d: \"M 12 8V4H8\",\n },\n ],\n [\n \"rect\",\n {\n width: \"16\",\n height: \"12\",\n x: \"4\",\n y: \"8\",\n rx: \"2\",\n },\n ],\n [\n \"path\",\n {\n d: \"M2 14h2\",\n },\n ],\n [\n \"path\",\n {\n d: \"M20 14h2\",\n },\n ],\n [\n \"path\",\n {\n d: \"M15 13v2\",\n },\n ],\n [\n \"path\",\n {\n d: \"M9 13v2\",\n },\n ],\n ],\n box: [\n [\n \"path\",\n {\n d: \"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z\",\n },\n ],\n [\n \"path\",\n {\n d: \"m3.3 7 8.7 5 8.7-5\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 22V12\",\n },\n ],\n ],\n brain: [\n [\n \"path\",\n {\n d: \"M 12 18V5\",\n },\n ],\n [\n \"path\",\n {\n d: \"M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4\",\n },\n ],\n [\n \"path\",\n {\n d: \"M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5\",\n },\n ],\n [\n \"path\",\n {\n d: \"M17.997 5.125a4 4 0 0 1 2.526 5.77\",\n },\n ],\n [\n \"path\",\n {\n d: \"M18 18a4 4 0 0 0 2-7.464\",\n },\n ],\n [\n \"path\",\n {\n d: \"M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517\",\n },\n ],\n [\n \"path\",\n {\n d: \"M6 18a4 4 0 0 1-2-7.464\",\n },\n ],\n [\n \"path\",\n {\n d: \"M6.003 5.125a4 4 0 0 0-2.526 5.77\",\n },\n ],\n ],\n \"brain-circuit\": [\n [\n \"path\",\n {\n d: \"M 12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z\",\n },\n ],\n [\n \"path\",\n {\n d: \"M9 13a4.5 4.5 0 0 0 3-4\",\n },\n ],\n [\n \"path\",\n {\n d: \"M6.003 5.125A3 3 0 0 0 6.401 6.5\",\n },\n ],\n [\n \"path\",\n {\n d: \"M3.477 10.896a4 4 0 0 1 .585-.396\",\n },\n ],\n [\n \"path\",\n {\n d: \"M6 18a4 4 0 0 1-1.967-.516\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 13h4\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 18h6a2 2 0 0 1 2 2v1\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 8h8\",\n },\n ],\n [\n \"path\",\n {\n d: \"M16 8V5a2 2 0 0 1 2-2\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"16\",\n cy: \"13\",\n r: \".5\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"18\",\n cy: \"3\",\n r: \".5\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"20\",\n cy: \"21\",\n r: \".5\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"20\",\n cy: \"8\",\n r: \".5\",\n },\n ],\n ],\n \"calendar-clock\": [\n [\n \"path\",\n {\n d: \"M16 14v2.2l1.6 1\",\n },\n ],\n [\n \"path\",\n {\n d: \"M16 2v3\",\n },\n ],\n [\n \"path\",\n {\n d: \"M21 7.338V5a2 2 0 00-2-2H5a2 2 0 00-2 2v14a2 2 0 002 2h2.338\",\n },\n ],\n [\n \"path\",\n {\n d: \"M3 9h5.859\",\n },\n ],\n [\n \"path\",\n {\n d: \"M8 2v3\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"16\",\n cy: \"16\",\n r: \"6\",\n },\n ],\n ],\n check: [\n [\n \"path\",\n {\n d: \"M20 6 9 17l-5-5\",\n },\n ],\n ],\n \"chevron-down\": [\n [\n \"path\",\n {\n d: \"m6 9 6 6 6-6\",\n },\n ],\n ],\n \"chevron-left\": [\n [\n \"path\",\n {\n d: \"m15 18-6-6 6-6\",\n },\n ],\n ],\n \"chevron-right\": [\n [\n \"path\",\n {\n d: \"m9 18 6-6-6-6\",\n },\n ],\n ],\n \"chevron-up\": [\n [\n \"path\",\n {\n d: \"m18 15-6-6-6 6\",\n },\n ],\n ],\n \"circle-alert\": [\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"12\",\n r: \"10\",\n },\n ],\n [\n \"line\",\n {\n x1: \"12\",\n x2: \"12\",\n y1: \"8\",\n y2: \"12\",\n },\n ],\n [\n \"line\",\n {\n x1: \"12\",\n x2: \"12.01\",\n y1: \"16\",\n y2: \"16\",\n },\n ],\n ],\n \"clock-3\": [\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"12\",\n r: \"10\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 6v6h4\",\n },\n ],\n ],\n \"circle-slash\": [\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"12\",\n r: \"10\",\n },\n ],\n [\n \"line\",\n {\n x1: \"9\",\n x2: \"15\",\n y1: \"15\",\n y2: \"9\",\n },\n ],\n ],\n copy: [\n [\n \"rect\",\n {\n width: \"14\",\n height: \"14\",\n x: \"8\",\n y: \"8\",\n rx: \"2\",\n ry: \"2\",\n },\n ],\n [\n \"path\",\n {\n d: \"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\",\n },\n ],\n ],\n \"corner-down-right\": [\n [\n \"path\",\n {\n d: \"m15 10 5 5-5 5\",\n },\n ],\n [\n \"path\",\n {\n d: \"M4 4v7a4 4 0 0 0 4 4h12\",\n },\n ],\n ],\n \"file-diff\": [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n },\n ],\n [\n \"path\",\n {\n d: \"M9 10h6\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 13V7\",\n },\n ],\n [\n \"path\",\n {\n d: \"M9 17h6\",\n },\n ],\n ],\n \"file-search\": [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n },\n ],\n [\n \"path\",\n {\n d: \"M14 2v5a1 1 0 0 0 1 1h5\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"11.5\",\n cy: \"14.5\",\n r: \"2.5\",\n },\n ],\n [\n \"path\",\n {\n d: \"M13.3 16.3 15 18\",\n },\n ],\n ],\n \"file-text\": [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n },\n ],\n [\n \"path\",\n {\n d: \"M14 2v5a1 1 0 0 0 1 1h5\",\n },\n ],\n [\n \"path\",\n {\n d: \"M10 9H8\",\n },\n ],\n [\n \"path\",\n {\n d: \"M16 13H8\",\n },\n ],\n [\n \"path\",\n {\n d: \"M16 17H8\",\n },\n ],\n ],\n image: [\n [\n \"rect\",\n {\n width: \"18\",\n height: \"18\",\n x: \"3\",\n y: \"3\",\n rx: \"2\",\n ry: \"2\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"9\",\n cy: \"9\",\n r: \"2\",\n },\n ],\n [\n \"path\",\n {\n d: \"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\",\n },\n ],\n ],\n folder: [\n [\n \"path\",\n {\n d: \"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\",\n },\n ],\n ],\n \"folder-git\": [\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"13\",\n r: \"2\",\n },\n ],\n [\n \"path\",\n {\n d: \"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\",\n },\n ],\n [\n \"path\",\n {\n d: \"M14 13h3\",\n },\n ],\n [\n \"path\",\n {\n d: \"M7 13h3\",\n },\n ],\n ],\n globe: [\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"12\",\n r: \"10\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20\",\n },\n ],\n [\n \"path\",\n {\n d: \"M2 12h20\",\n },\n ],\n ],\n keyboard: [\n [\n \"path\",\n {\n d: \"M10 8h.01\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 12h.01\",\n },\n ],\n [\n \"path\",\n {\n d: \"M14 8h.01\",\n },\n ],\n [\n \"path\",\n {\n d: \"M16 12h.01\",\n },\n ],\n [\n \"path\",\n {\n d: \"M18 8h.01\",\n },\n ],\n [\n \"path\",\n {\n d: \"M6 8h.01\",\n },\n ],\n [\n \"path\",\n {\n d: \"M7 16h10\",\n },\n ],\n [\n \"path\",\n {\n d: \"M8 12h.01\",\n },\n ],\n [\n \"rect\",\n {\n width: \"20\",\n height: \"16\",\n x: \"2\",\n y: \"4\",\n rx: \"2\",\n },\n ],\n ],\n \"loader-circle\": [\n [\n \"path\",\n {\n d: \"M21 12a9 9 0 1 1-6.219-8.56\",\n },\n ],\n ],\n \"list-ordered\": [\n [\n \"path\",\n {\n d: \"M11 5h10\",\n },\n ],\n [\n \"path\",\n {\n d: \"M11 12h10\",\n },\n ],\n [\n \"path\",\n {\n d: \"M11 19h10\",\n },\n ],\n [\n \"path\",\n {\n d: \"M4 4h1v5\",\n },\n ],\n [\n \"path\",\n {\n d: \"M4 9h2\",\n },\n ],\n [\n \"path\",\n {\n d: \"M6.5 20H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02\",\n },\n ],\n ],\n \"key-round\": [\n [\n \"path\",\n {\n d: \"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"16.5\",\n cy: \"7.5\",\n r: \".5\",\n fill: \"currentColor\",\n },\n ],\n ],\n menu: [\n [\n \"path\",\n {\n d: \"M4 5h16\",\n },\n ],\n [\n \"path\",\n {\n d: \"M4 12h16\",\n },\n ],\n [\n \"path\",\n {\n d: \"M4 19h16\",\n },\n ],\n ],\n \"message-circle-question\": [\n [\n \"path\",\n {\n d: \"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719\",\n },\n ],\n [\n \"path\",\n {\n d: \"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 17h.01\",\n },\n ],\n ],\n \"message-square\": [\n [\n \"path\",\n {\n d: \"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z\",\n },\n ],\n ],\n \"message-square-text\": [\n [\n \"path\",\n {\n d: \"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z\",\n },\n ],\n [\n \"path\",\n {\n d: \"M7 11h10\",\n },\n ],\n [\n \"path\",\n {\n d: \"M7 15h6\",\n },\n ],\n [\n \"path\",\n {\n d: \"M7 7h8\",\n },\n ],\n ],\n \"messages-square\": [\n [\n \"path\",\n {\n d: \"M16 10a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 14.286V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z\",\n },\n ],\n [\n \"path\",\n {\n d: \"M20 9a2 2 0 0 1 2 2v10.286a.71.71 0 0 1-1.212.502l-2.202-2.202A2 2 0 0 0 17.172 19H10a2 2 0 0 1-2-2v-1\",\n },\n ],\n ],\n mic: [\n [\n \"path\",\n {\n d: \"M 12 19v3\",\n },\n ],\n [\n \"path\",\n {\n d: \"M19 10v2a7 7 0 0 1-14 0v-2\",\n },\n ],\n [\n \"rect\",\n {\n x: \"9\",\n y: \"2\",\n width: \"6\",\n height: \"13\",\n rx: \"3\",\n },\n ],\n ],\n \"package-search\": [\n [\n \"path\",\n {\n d: \"M 12 22V12\",\n },\n ],\n [\n \"path\",\n {\n d: \"M20.27 18.27 22 20\",\n },\n ],\n [\n \"path\",\n {\n d: \"M21 10.498V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.729l7 4a2 2 0 0 0 2 .001l.98-.559\",\n },\n ],\n [\n \"path\",\n {\n d: \"M3.29 7 12 12l8.71-5\",\n },\n ],\n [\n \"path\",\n {\n d: \"m7.5 4.27 8.997 5.148\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"18.5\",\n cy: \"16.5\",\n r: \"2.5\",\n },\n ],\n ],\n paperclip: [\n [\n \"path\",\n {\n d: \"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551\",\n },\n ],\n ],\n \"panels-top-left\": [\n [\n \"rect\",\n {\n width: \"18\",\n height: \"18\",\n x: \"3\",\n y: \"3\",\n rx: \"2\",\n },\n ],\n [\n \"path\",\n {\n d: \"M3 9h18\",\n },\n ],\n [\n \"path\",\n {\n d: \"M9 21V9\",\n },\n ],\n ],\n pause: [\n [\n \"rect\",\n {\n x: \"14\",\n y: \"3\",\n width: \"5\",\n height: \"18\",\n rx: \"1\",\n },\n ],\n [\n \"rect\",\n {\n x: \"5\",\n y: \"3\",\n width: \"5\",\n height: \"18\",\n rx: \"1\",\n },\n ],\n ],\n pencil: [\n [\n \"path\",\n {\n d: \"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z\",\n },\n ],\n [\n \"path\",\n {\n d: \"m15 5 4 4\",\n },\n ],\n ],\n play: [\n [\n \"path\",\n {\n d: \"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z\",\n },\n ],\n ],\n plug: [\n [\n \"path\",\n {\n d: \"M 12 22v-5\",\n },\n ],\n [\n \"path\",\n {\n d: \"M15 8V2\",\n },\n ],\n [\n \"path\",\n {\n d: \"M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z\",\n },\n ],\n [\n \"path\",\n {\n d: \"M9 8V2\",\n },\n ],\n ],\n plus: [\n [\n \"path\",\n {\n d: \"M5 12h14\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 5v14\",\n },\n ],\n ],\n search: [\n [\n \"path\",\n {\n d: \"m21 21-4.34-4.34\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"11\",\n cy: \"11\",\n r: \"8\",\n },\n ],\n ],\n server: [\n [\n \"rect\",\n {\n width: \"20\",\n height: \"8\",\n x: \"2\",\n y: \"2\",\n rx: \"2\",\n ry: \"2\",\n },\n ],\n [\n \"rect\",\n {\n width: \"20\",\n height: \"8\",\n x: \"2\",\n y: \"14\",\n rx: \"2\",\n ry: \"2\",\n },\n ],\n [\n \"line\",\n {\n x1: \"6\",\n x2: \"6.01\",\n y1: \"6\",\n y2: \"6\",\n },\n ],\n [\n \"line\",\n {\n x1: \"6\",\n x2: \"6.01\",\n y1: \"18\",\n y2: \"18\",\n },\n ],\n ],\n \"server-cog\": [\n [\n \"path\",\n {\n d: \"m10.852 14.772-.383.923\",\n },\n ],\n [\n \"path\",\n {\n d: \"M13.148 14.772a3 3 0 1 0-2.296-5.544l-.383-.923\",\n },\n ],\n [\n \"path\",\n {\n d: \"m13.148 9.228.383-.923\",\n },\n ],\n [\n \"path\",\n {\n d: \"m13.53 15.696-.382-.924a3 3 0 1 1-2.296-5.544\",\n },\n ],\n [\n \"path\",\n {\n d: \"m14.772 10.852.923-.383\",\n },\n ],\n [\n \"path\",\n {\n d: \"m14.772 13.148.923.383\",\n },\n ],\n [\n \"path\",\n {\n d: \"M4.5 10H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-.5\",\n },\n ],\n [\n \"path\",\n {\n d: \"M4.5 14H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2h-.5\",\n },\n ],\n [\n \"path\",\n {\n d: \"M6 18h.01\",\n },\n ],\n [\n \"path\",\n {\n d: \"M6 6h.01\",\n },\n ],\n [\n \"path\",\n {\n d: \"m9.228 10.852-.923-.383\",\n },\n ],\n [\n \"path\",\n {\n d: \"m9.228 13.148-.923.383\",\n },\n ],\n ],\n settings: [\n [\n \"path\",\n {\n d: \"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"12\",\n r: \"3\",\n },\n ],\n ],\n \"share-2\": [\n [\n \"circle\",\n {\n cx: \"18\",\n cy: \"5\",\n r: \"3\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"6\",\n cy: \"12\",\n r: \"3\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"18\",\n cy: \"19\",\n r: \"3\",\n },\n ],\n [\n \"line\",\n {\n x1: \"8.59\",\n x2: \"15.42\",\n y1: \"13.51\",\n y2: \"17.49\",\n },\n ],\n [\n \"line\",\n {\n x1: \"15.41\",\n x2: \"8.59\",\n y1: \"6.51\",\n y2: \"10.49\",\n },\n ],\n ],\n shrink: [\n [\n \"path\",\n {\n d: \"m15 15 6 6m-6-6v4.8m0-4.8h4.8\",\n },\n ],\n [\n \"path\",\n {\n d: \"M9 19.8V15m0 0H4.2M9 15l-6 6\",\n },\n ],\n [\n \"path\",\n {\n d: \"M15 4.2V9m0 0h4.8M15 9l6-6\",\n },\n ],\n [\n \"path\",\n {\n d: \"M9 4.2V9m0 0H4.2M9 9 3 3\",\n },\n ],\n ],\n sparkles: [\n [\n \"path\",\n {\n d: \"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z\",\n },\n ],\n [\n \"path\",\n {\n d: \"M20 2v4\",\n },\n ],\n [\n \"path\",\n {\n d: \"M22 4h-4\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"4\",\n cy: \"20\",\n r: \"2\",\n },\n ],\n ],\n square: [\n [\n \"rect\",\n {\n width: \"18\",\n height: \"18\",\n x: \"3\",\n y: \"3\",\n rx: \"2\",\n },\n ],\n ],\n \"square-terminal\": [\n [\n \"path\",\n {\n d: \"m7 11 2-2-2-2\",\n },\n ],\n [\n \"path\",\n {\n d: \"M11 13h4\",\n },\n ],\n [\n \"rect\",\n {\n width: \"18\",\n height: \"18\",\n x: \"3\",\n y: \"3\",\n rx: \"2\",\n ry: \"2\",\n },\n ],\n ],\n target: [\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"12\",\n r: \"10\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"12\",\n r: \"6\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"12\",\n r: \"2\",\n },\n ],\n ],\n terminal: [\n [\n \"path\",\n {\n d: \"M 12 19h8\",\n },\n ],\n [\n \"path\",\n {\n d: \"m4 17 6-6-6-6\",\n },\n ],\n ],\n \"thumbs-down\": [\n [\n \"path\",\n {\n d: \"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z\",\n },\n ],\n [\n \"path\",\n {\n d: \"M17 14V2\",\n },\n ],\n ],\n \"thumbs-up\": [\n [\n \"path\",\n {\n d: \"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z\",\n },\n ],\n [\n \"path\",\n {\n d: \"M7 10v12\",\n },\n ],\n ],\n \"trash-2\": [\n [\n \"path\",\n {\n d: \"M10 11v6\",\n },\n ],\n [\n \"path\",\n {\n d: \"M14 11v6\",\n },\n ],\n [\n \"path\",\n {\n d: \"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\",\n },\n ],\n [\n \"path\",\n {\n d: \"M3 6h18\",\n },\n ],\n [\n \"path\",\n {\n d: \"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\",\n },\n ],\n ],\n \"triangle-alert\": [\n [\n \"path\",\n {\n d: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 9v4\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 17h.01\",\n },\n ],\n ],\n wrench: [\n [\n \"path\",\n {\n d: \"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z\",\n },\n ],\n ],\n x: [\n [\n \"path\",\n {\n d: \"M18 6 6 18\",\n },\n ],\n [\n \"path\",\n {\n d: \"m6 6 12 12\",\n },\n ],\n ],\n zap: [\n [\n \"path\",\n {\n d: \"M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z\",\n },\n ],\n ],\n pin: [\n [\n \"path\",\n {\n d: \"M 12 17v5\",\n },\n ],\n [\n \"path\",\n {\n d: \"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z\",\n },\n ],\n ],\n \"pin-off\": [\n [\n \"path\",\n {\n d: \"M 12 17v5\",\n },\n ],\n [\n \"path\",\n {\n d: \"M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89\",\n },\n ],\n [\n \"path\",\n {\n d: \"m2 2 20 20\",\n },\n ],\n [\n \"path\",\n {\n d: \"M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11\",\n },\n ],\n ],\n ellipsis: [\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"12\",\n r: \"1\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"19\",\n cy: \"12\",\n r: \"1\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"5\",\n cy: \"12\",\n r: \"1\",\n },\n ],\n ],\n \"grip-vertical\": [\n [\n \"circle\",\n {\n cx: \"9\",\n cy: \"12\",\n r: \"1\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"9\",\n cy: \"5\",\n r: \"1\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"9\",\n cy: \"19\",\n r: \"1\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"15\",\n cy: \"12\",\n r: \"1\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"15\",\n cy: \"5\",\n r: \"1\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"15\",\n cy: \"19\",\n r: \"1\",\n },\n ],\n ],\n \"audio-lines\": [\n [\n \"path\",\n {\n d: \"M2 10v3\",\n },\n ],\n [\n \"path\",\n {\n d: \"M6 6v11\",\n },\n ],\n [\n \"path\",\n {\n d: \"M10 3v18\",\n },\n ],\n [\n \"path\",\n {\n d: \"M14 8v7\",\n },\n ],\n [\n \"path\",\n {\n d: \"M18 5v13\",\n },\n ],\n [\n \"path\",\n {\n d: \"M22 10v3\",\n },\n ],\n ],\n \"list-restart\": [\n [\n \"path\",\n {\n d: \"M21 5H3\",\n },\n ],\n [\n \"path\",\n {\n d: \"M7 12H3\",\n },\n ],\n [\n \"path\",\n {\n d: \"M7 19H3\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 18a5 5 0 0 0 9-3 4.5 4.5 0 0 0-4.5-4.5c-1.33 0-2.54.54-3.41 1.41L11 14\",\n },\n ],\n [\n \"path\",\n {\n d: \"M11 10v4h4\",\n },\n ],\n ],\n lock: [\n [\n \"rect\",\n {\n width: \"18\",\n height: \"11\",\n x: \"3\",\n y: \"11\",\n rx: \"2\",\n ry: \"2\",\n },\n ],\n [\n \"path\",\n {\n d: \"M7 11V7a5 5 0 0 1 10 0v4\",\n },\n ],\n ],\n \"building-2\": [\n [\n \"path\",\n {\n d: \"M10 12h4\",\n },\n ],\n [\n \"path\",\n {\n d: \"M10 8h4\",\n },\n ],\n [\n \"path\",\n {\n d: \"M14 21v-3a2 2 0 0 0-4 0v3\",\n },\n ],\n [\n \"path\",\n {\n d: \"M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2\",\n },\n ],\n [\n \"path\",\n {\n d: \"M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16\",\n },\n ],\n ],\n \"chevrons-up-down\": [\n [\n \"path\",\n {\n d: \"m7 15 5 5 5-5\",\n },\n ],\n [\n \"path\",\n {\n d: \"m7 9 5-5 5 5\",\n },\n ],\n ],\n \"log-out\": [\n [\n \"path\",\n {\n d: \"m16 17 5-5-5-5\",\n },\n ],\n [\n \"path\",\n {\n d: \"M21 12H9\",\n },\n ],\n [\n \"path\",\n {\n d: \"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\",\n },\n ],\n ],\n \"external-link\": [\n [\n \"path\",\n {\n d: \"M15 3h6v6\",\n },\n ],\n [\n \"path\",\n {\n d: \"M10 14 21 3\",\n },\n ],\n [\n \"path\",\n {\n d: \"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\",\n },\n ],\n ],\n bell: [\n [\n \"path\",\n {\n d: \"M10.268 21a2 2 0 0 0 3.464 0\",\n },\n ],\n [\n \"path\",\n {\n d: \"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326\",\n },\n ],\n ],\n \"user-round\": [\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"8\",\n r: \"5\",\n },\n ],\n [\n \"path\",\n {\n d: \"M20 21a8 8 0 0 0-16 0\",\n },\n ],\n ],\n smartphone: [\n [\n \"rect\",\n {\n width: \"14\",\n height: \"20\",\n x: \"5\",\n y: \"2\",\n rx: \"2\",\n ry: \"2\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 18h.01\",\n },\n ],\n ],\n phone: [\n [\n \"path\",\n {\n d: \"M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384\",\n },\n ],\n ],\n \"phone-off\": [\n [\n \"path\",\n {\n d: \"M10.1 13.9a14 14 0 0 0 3.732 2.668 1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2 18 18 0 0 1-12.728-5.272\",\n },\n ],\n [\n \"path\",\n {\n d: \"M22 2 2 22\",\n },\n ],\n [\n \"path\",\n {\n d: \"M4.76 13.582A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 .244.473\",\n },\n ],\n ],\n \"mic-off\": [\n [\n \"path\",\n {\n d: \"M 12 19v3\",\n },\n ],\n [\n \"path\",\n {\n d: \"M15 9.34V5a3 3 0 0 0-5.68-1.33\",\n },\n ],\n [\n \"path\",\n {\n d: \"M16.95 16.95A7 7 0 0 1 5 12v-2\",\n },\n ],\n [\n \"path\",\n {\n d: \"M18.89 13.23A7 7 0 0 0 19 12v-2\",\n },\n ],\n [\n \"path\",\n {\n d: \"m2 2 20 20\",\n },\n ],\n [\n \"path\",\n {\n d: \"M9 9v3a3 3 0 0 0 5.12 2.12\",\n },\n ],\n ],\n \"volume-2\": [\n [\n \"path\",\n {\n d: \"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z\",\n },\n ],\n [\n \"path\",\n {\n d: \"M16 9a5 5 0 0 1 0 6\",\n },\n ],\n [\n \"path\",\n {\n d: \"M19.364 18.364a9 9 0 0 0 0-12.728\",\n },\n ],\n ],\n} as const;\n\nexport type NativeIconName = keyof typeof iconNodes;\n","import Svg, { Circle, Line, Path, Polyline, Rect } from \"react-native-svg\";\nimport { iconNodes, type NativeIconName } from \"./icon-nodes.generated\";\n\nexport type { NativeIconName };\n\nconst ELEMENTS = { path: Path, circle: Circle, rect: Rect, line: Line, polyline: Polyline };\n\n/** One lucide glyph with the web's geometry (24 viewBox, 2px round stroke). */\nexport function Icon({\n name,\n size = 14,\n color,\n strokeWidth = 2,\n fill,\n}: {\n name: NativeIconName;\n size?: number;\n color: string;\n strokeWidth?: number;\n /** Solid glyphs (the web fills pause/play). */\n fill?: string | undefined;\n}) {\n const node = iconNodes[name] as ReadonlyArray<readonly [string, Record<string, string | number>]>;\n return (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n {node.map(([tag, attrs]) => {\n const Element = ELEMENTS[tag as keyof typeof ELEMENTS];\n if (!Element) return null;\n const props = { ...attrs } as Record<string, unknown>;\n return (\n <Element\n key={`${tag}:${JSON.stringify(attrs)}`}\n {...props}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill={fill ?? \"none\"}\n />\n );\n })}\n </Svg>\n );\n}\n","// GENERATED by scripts/generate-native-tokens.ts from the web stylesheet. Do not edit.\n// Regenerate after changing packages/react/styles/tokens.css.\nexport const webColorsLight = {\n \"accent\": \"rgb(84, 84, 84)\",\n \"accent-deep\": \"rgb(56, 56, 56)\",\n \"accent-fg\": \"rgb(255, 255, 255)\",\n \"accent-soft\": \"rgba(82, 82, 82, 0.110)\",\n \"accent-strong\": \"rgb(56, 56, 56)\",\n \"bg\": \"rgb(246, 246, 246)\",\n \"border\": \"rgb(222, 222, 222)\",\n \"border-strong\": \"rgb(189, 189, 189)\",\n \"canvas\": \"rgb(255, 255, 255)\",\n \"danger\": \"rgb(194, 21, 47)\",\n \"danger-fg\": \"rgb(255, 255, 255)\",\n \"danger-fill\": \"rgb(183, 22, 45)\",\n \"diff-add-bg\": \"rgba(33, 115, 90, 0.122)\",\n \"diff-del-bg\": \"rgba(181, 25, 41, 0.122)\",\n \"fg\": \"rgb(36, 36, 36)\",\n \"fg-label\": \"rgb(58, 58, 58)\",\n \"fg-muted\": \"rgb(95, 95, 95)\",\n \"fg-subtle\": \"rgb(105, 105, 105)\",\n \"hover\": \"rgba(34, 34, 34, 0.059)\",\n \"primary\": \"rgb(235, 242, 240)\",\n \"primary-border\": \"rgb(196, 213, 208)\",\n \"primary-fg\": \"rgb(41, 41, 41)\",\n \"primary-hover\": \"rgb(206, 212, 210)\",\n \"selection\": \"rgb(226, 226, 226)\",\n \"status-cancelled\": \"rgb(105, 105, 105)\",\n \"status-failed\": \"rgb(183, 22, 45)\",\n \"status-idle\": \"rgb(35, 112, 88)\",\n \"status-queued\": \"rgb(105, 105, 105)\",\n \"status-running\": \"rgb(113, 97, 34)\",\n \"status-waiting\": \"rgb(140, 85, 36)\",\n \"surface-1\": \"rgb(255, 255, 255)\",\n \"surface-2\": \"rgb(238, 238, 238)\",\n \"surface-3\": \"rgb(229, 229, 229)\",\n \"switch-thumb\": \"rgb(255, 255, 255)\",\n \"switch-track\": \"rgb(189, 189, 189)\"\n} as const;\n\nexport const webColorsDark = {\n \"accent\": \"rgb(196, 196, 196)\",\n \"accent-deep\": \"rgb(213, 213, 213)\",\n \"accent-fg\": \"rgb(36, 36, 36)\",\n \"accent-soft\": \"rgba(199, 199, 199, 0.161)\",\n \"accent-strong\": \"rgb(220, 220, 220)\",\n \"bg\": \"rgb(48, 48, 48)\",\n \"border\": \"rgb(69, 69, 69)\",\n \"border-strong\": \"rgb(85, 85, 85)\",\n \"canvas\": \"rgb(32, 32, 32)\",\n \"danger\": \"rgb(249, 142, 139)\",\n \"danger-fg\": \"rgb(255, 255, 255)\",\n \"danger-fill\": \"rgb(179, 54, 61)\",\n \"diff-add-bg\": \"rgba(128, 205, 177, 0.141)\",\n \"diff-del-bg\": \"rgba(248, 149, 142, 0.141)\",\n \"fg\": \"rgb(230, 230, 230)\",\n \"fg-label\": \"rgb(212, 212, 212)\",\n \"fg-muted\": \"rgb(184, 184, 184)\",\n \"fg-subtle\": \"rgb(163, 163, 163)\",\n \"hover\": \"rgba(230, 230, 230, 0.078)\",\n \"primary\": \"rgb(43, 52, 50)\",\n \"primary-border\": \"rgb(78, 94, 89)\",\n \"primary-fg\": \"rgb(238, 238, 238)\",\n \"primary-hover\": \"rgb(72, 80, 78)\",\n \"selection\": \"rgb(72, 72, 72)\",\n \"status-cancelled\": \"rgb(163, 163, 163)\",\n \"status-failed\": \"rgb(247, 148, 145)\",\n \"status-idle\": \"rgb(131, 203, 176)\",\n \"status-queued\": \"rgb(163, 163, 163)\",\n \"status-running\": \"rgb(213, 189, 114)\",\n \"status-waiting\": \"rgb(233, 171, 119)\",\n \"surface-1\": \"rgb(51, 51, 51)\",\n \"surface-2\": \"rgb(56, 56, 56)\",\n \"surface-3\": \"rgb(64, 64, 64)\",\n \"switch-thumb\": \"rgb(163, 163, 163)\",\n \"switch-track\": \"rgb(69, 69, 69)\"\n} as const;\n\nexport const webLengths = {\n \"font-size-base\": 13,\n \"font-size-composer\": 16,\n \"font-size-composer-wide\": 15,\n \"font-size-control\": 12,\n \"font-size-md\": 15,\n \"font-size-menu\": 14,\n \"font-size-sm\": 12,\n \"font-size-xs\": 11,\n \"radius-full\": 9999,\n \"radius-lg\": 14,\n \"radius-md\": 10,\n \"radius-sm\": 6,\n \"radius-xl\": 20,\n \"radius-xs\": 4\n} as const;\n","import { createContext, useContext, useMemo, type ReactNode } from \"react\";\nimport { Platform, type TextStyle } from \"react-native\";\nimport { webColorsDark, webColorsLight, webLengths } from \"../ui/web-tokens.gen\";\n\n/* ----------------------------------------------------------------------------\n Native timeline theme\n\n The web design tokens (generated from the web stylesheet) drive every color,\n size and radius, so the native timeline matches the web app at phone width.\n Hosts override tokens (brand colors, fonts) without forking components.\n -------------------------------------------------------------------------- */\n\nexport type WebColorToken = keyof typeof webColorsLight;\nexport type NativeTimelineColors = Record<WebColorToken, string>;\n\nexport interface NativeTimelineFonts {\n /** Font family per weight for the sans face; undefined → platform system font. */\n sans?: Partial<Record<\"400\" | \"500\" | \"600\" | \"700\", string>> | undefined;\n /** Font family per weight for the mono face; undefined → platform monospace. */\n mono?: Partial<Record<\"400\" | \"500\", string>> | undefined;\n /** Regular-weight italic family (custom fonts cannot be synthesized italic on iOS). */\n sansItalic?: string | undefined;\n /** Extra sans letter spacing (pt) to match the web face's metrics. */\n sansTracking?: number | undefined;\n}\n\nexport interface NativeTimelineTheme {\n scheme: \"light\" | \"dark\";\n colors: NativeTimelineColors;\n size: {\n xs: number;\n sm: number;\n base: number;\n md: number;\n composer: number;\n };\n radius: { xs: number; sm: number; md: number; lg: number; xl: number; full: number };\n fonts: NativeTimelineFonts;\n}\n\nexport interface NativeTimelineThemeOverrides {\n light?: Partial<NativeTimelineColors> | undefined;\n dark?: Partial<NativeTimelineColors> | undefined;\n fonts?: NativeTimelineFonts | undefined;\n}\n\nexport function createNativeTimelineTheme(\n scheme: \"light\" | \"dark\",\n overrides: NativeTimelineThemeOverrides = {},\n): NativeTimelineTheme {\n const base = scheme === \"dark\" ? webColorsDark : webColorsLight;\n return {\n scheme,\n colors: { ...base, ...(scheme === \"dark\" ? overrides.dark : overrides.light) },\n size: {\n xs: webLengths[\"font-size-xs\"],\n sm: webLengths[\"font-size-sm\"],\n base: webLengths[\"font-size-base\"],\n md: webLengths[\"font-size-md\"],\n composer: webLengths[\"font-size-composer\"],\n },\n radius: {\n xs: webLengths[\"radius-xs\"],\n sm: webLengths[\"radius-sm\"],\n md: webLengths[\"radius-md\"],\n lg: webLengths[\"radius-lg\"],\n xl: webLengths[\"radius-xl\"],\n full: webLengths[\"radius-full\"],\n },\n fonts: overrides.fonts ?? {},\n };\n}\n\n/**\n * Fill for an inset block on the page (code blocks). Web uses `surface-1`, which reads\n * as a block on the component `bg`; when the host page itself is `surface-1` (the\n * white or near-black app canvas), the block falls back to the web component `bg` so\n * it never disappears into the page.\n */\nexport function insetSurface(theme: NativeTimelineTheme): string {\n const { colors } = theme;\n if (colors[\"surface-1\"] !== colors.bg) return colors[\"surface-1\"];\n return (theme.scheme === \"dark\" ? webColorsDark : webColorsLight).bg;\n}\n\nconst ThemeContext = createContext<NativeTimelineTheme>(createNativeTimelineTheme(\"light\"));\n\nexport function NativeTimelineThemeProvider({\n scheme,\n overrides,\n children,\n}: {\n scheme: \"light\" | \"dark\";\n overrides?: NativeTimelineThemeOverrides | undefined;\n children: ReactNode;\n}) {\n const theme = useMemo(() => createNativeTimelineTheme(scheme, overrides), [scheme, overrides]);\n return <ThemeContext.Provider value={theme}>{children}</ThemeContext.Provider>;\n}\n\nexport function useNativeTimelineTheme(): NativeTimelineTheme {\n return useContext(ThemeContext);\n}\n\n/** Text style for a web weight, resolving host font families when supplied. */\nexport function fontStyle(\n theme: NativeTimelineTheme,\n weight: 400 | 500 | 600 | 700 = 400,\n face: \"sans\" | \"mono\" = \"sans\",\n): TextStyle {\n if (face === \"mono\") {\n const family = theme.fonts.mono?.[weight >= 500 ? \"500\" : \"400\"] ?? theme.fonts.mono?.[\"400\"];\n return family ? { fontFamily: family } : { fontFamily: MONO_FALLBACK, fontWeight: `${weight}` };\n }\n const key = `${weight}` as \"400\" | \"500\" | \"600\" | \"700\";\n const family = theme.fonts.sans?.[key];\n // Android measures single-line text without letter spacing, so tracked text loses\n // its last glyphs (a truncated \"…\" shows as \"..\"); the tweak only matters on iOS.\n const tracking =\n theme.fonts.sansTracking && Platform.OS !== \"android\"\n ? { letterSpacing: theme.fonts.sansTracking }\n : {};\n return family ? { fontFamily: family, ...tracking } : { fontWeight: key, ...tracking };\n}\n\nconst MONO_FALLBACK = \"Menlo\";\n\nexport { MONO_FALLBACK };\n"]}
@@ -0,0 +1,19 @@
1
+ import { type ReactNode } from "react";
2
+ import type { OpenGeniReactNativeAdapters } from "./adapters.js";
3
+ interface InstalledEnvironment {
4
+ cleanup(): void;
5
+ }
6
+ /** Install only the browser-compatible primitives currently read by the official session hooks. */
7
+ export declare function installOpenGeniReactNativeEnvironment(adapters: OpenGeniReactNativeAdapters): InstalledEnvironment;
8
+ export interface NativeEnvironmentContextValue {
9
+ adapters: OpenGeniReactNativeAdapters;
10
+ active: boolean;
11
+ }
12
+ export interface OpenGeniReactNativeProviderProps {
13
+ adapters: OpenGeniReactNativeAdapters;
14
+ children: ReactNode;
15
+ loadingFallback?: ReactNode;
16
+ }
17
+ export declare function OpenGeniReactNativeProvider({ adapters, children, loadingFallback, }: OpenGeniReactNativeProviderProps): string | number | bigint | boolean | import("react").JSX.Element | Iterable<ReactNode> | Promise<string | number | bigint | boolean | Iterable<ReactNode> | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | import("react").ReactPortal | null | undefined> | null;
18
+ export declare function useOpenGeniReactNativeEnvironment(): NativeEnvironmentContextValue;
19
+ export {};
package/dist/expo.d.ts ADDED
@@ -0,0 +1,25 @@
1
+ import type { FetchLike, OpenGeniClient } from "@opengeni/sdk";
2
+ import type { NativePersistenceAdapter, OpenGeniReactNativeAdapters } from "./adapters.js";
3
+ import { type NativeVoiceRecorder, type NativeVoiceRecording } from "./voice-input.js";
4
+ export { createExpoCallAdapter, parseNativeCallEvent } from "./realtime/expo-call.js";
5
+ /** Streaming fetch backed by Expo's native implementation (required for live event streams). */
6
+ export declare const expoStreamingFetch: FetchLike;
7
+ export declare const expoLifecycleAdapter: OpenGeniReactNativeAdapters["lifecycle"];
8
+ export declare const expoCryptoAdapter: OpenGeniReactNativeAdapters["crypto"];
9
+ export declare const expoFileAdapter: OpenGeniReactNativeAdapters["files"];
10
+ /** Standard Expo adapters; the host supplies persistence. */
11
+ export declare function createExpoOpenGeniAdapters(input: {
12
+ persistence: NativePersistenceAdapter;
13
+ }): OpenGeniReactNativeAdapters;
14
+ /** Dictation recorder backed by expo-audio. */
15
+ export declare function useExpoVoiceRecorder(): NativeVoiceRecorder;
16
+ /**
17
+ * Send a recording to the deployment's transcription API. The device file is
18
+ * streamed as multipart form data and kept: dictation deletes it only once its
19
+ * text is in the draft. Failures carry the HTTP status (null when offline).
20
+ */
21
+ export declare function transcribeExpoRecording(input: {
22
+ client: Pick<OpenGeniClient, "fetchApi">;
23
+ workspaceId: string;
24
+ recording: NativeVoiceRecording;
25
+ }): Promise<string>;
package/dist/expo.js ADDED
@@ -0,0 +1,267 @@
1
+ import { NativeTranscriptionError } from './chunk-EEDIMY3L.js';
2
+ import { AppState } from 'react-native';
3
+ import { useMemo } from 'react';
4
+ import * as Crypto from 'expo-crypto';
5
+ import * as DocumentPicker from 'expo-document-picker';
6
+ import { fetch } from 'expo/fetch';
7
+ import { RecordingPresets, useAudioRecorder, setAudioModeAsync, requestRecordingPermissionsAsync } from 'expo-audio';
8
+ import { File, Directory, Paths } from 'expo-file-system';
9
+ import * as ImagePicker from 'expo-image-picker';
10
+ import { requireOptionalNativeModule } from 'expo-modules-core';
11
+
12
+ // src/realtime/call-events.ts
13
+ var ROUTES = /* @__PURE__ */ new Set([
14
+ "receiver",
15
+ "speaker",
16
+ "bluetooth",
17
+ "headphones",
18
+ "other"
19
+ ]);
20
+ function parseNativeCallEvent(raw) {
21
+ switch (raw.type) {
22
+ case "ended":
23
+ return raw.callId ? { type: "ended", callId: raw.callId } : null;
24
+ case "muteChanged":
25
+ return raw.callId ? { type: "muteChanged", callId: raw.callId, muted: Boolean(raw.muted) } : null;
26
+ case "routeChanged": {
27
+ const route = raw.route;
28
+ return { type: "routeChanged", route: ROUTES.has(route) ? route : "other" };
29
+ }
30
+ case "audioSessionActivated":
31
+ case "audioSessionDeactivated":
32
+ return { type: raw.type };
33
+ case "startRequested":
34
+ return { type: "startRequested", target: raw.target ?? null };
35
+ default:
36
+ return null;
37
+ }
38
+ }
39
+
40
+ // src/realtime/expo-call.ts
41
+ function createExpoCallAdapter(options = {}) {
42
+ const native = requireOptionalNativeModule("OpenGeniCall");
43
+ if (!native) return null;
44
+ native.configure(options.includeInRecents ?? true);
45
+ const id = (callId) => callId.toLowerCase();
46
+ return {
47
+ startCall: ({ callId, title, target }) => native.startCall(id(callId), title, target),
48
+ reportConnected: (callId) => native.reportConnected(id(callId)),
49
+ endCall: (callId, reason = "ended") => native.endCall(id(callId), reason === "failed"),
50
+ setMuted: (callId, muted) => native.setMuted(id(callId), muted),
51
+ setSpeaker: (on) => native.setSpeaker(on),
52
+ takePendingStartRequest: () => native.takePendingStartRequest(),
53
+ subscribe(listener) {
54
+ const subscription = native.addListener("onCallEvent", (raw) => {
55
+ const event = parseNativeCallEvent(raw);
56
+ if (event) listener(event);
57
+ });
58
+ return () => subscription.remove();
59
+ }
60
+ };
61
+ }
62
+
63
+ // src/expo.ts
64
+ function lifecycleState(value) {
65
+ if (value === "active") return "active";
66
+ if (value === "background") return "background";
67
+ return "inactive";
68
+ }
69
+ function bytesToHex(bytes) {
70
+ return [...bytes].map((byte) => byte.toString(16).padStart(2, "0")).join("");
71
+ }
72
+ function base64ToBytes(base64) {
73
+ const binary = globalThis.atob(base64);
74
+ const bytes = new Uint8Array(binary.length);
75
+ for (let index = 0; index < binary.length; index += 1) bytes[index] = binary.charCodeAt(index);
76
+ return bytes;
77
+ }
78
+ function fallbackFilename(uri, contentType) {
79
+ const raw = uri.split("/").at(-1)?.split("?")[0];
80
+ if (raw) {
81
+ try {
82
+ return decodeURIComponent(raw);
83
+ } catch {
84
+ return raw;
85
+ }
86
+ }
87
+ return contentType.startsWith("image/") ? "image" : "document";
88
+ }
89
+ function isRuntimeFetchResponse(value) {
90
+ return typeof value === "object" && value !== null && "status" in value && typeof value.status === "number" && "headers" in value && typeof value.headers === "object" && value.headers !== null && "json" in value && typeof value.json === "function" && "text" in value && typeof value.text === "function" && "arrayBuffer" in value && typeof value.arrayBuffer === "function" && "clone" in value && typeof value.clone === "function";
91
+ }
92
+ var expoStreamingFetch = async (input, init) => {
93
+ const response = await fetch(input, init);
94
+ if (!isRuntimeFetchResponse(response)) {
95
+ throw new TypeError("Expo fetch returned an incompatible response");
96
+ }
97
+ return response;
98
+ };
99
+ var expoLifecycleAdapter = {
100
+ currentState: () => lifecycleState(AppState.currentState),
101
+ subscribe: (listener) => {
102
+ const subscription = AppState.addEventListener(
103
+ "change",
104
+ (state) => listener(lifecycleState(state))
105
+ );
106
+ return () => subscription.remove();
107
+ }
108
+ };
109
+ var expoCryptoAdapter = {
110
+ randomUUID: Crypto.randomUUID,
111
+ sha256Hex: async (bytes) => {
112
+ const digestInput = bytes.buffer instanceof ArrayBuffer ? new Uint8Array(bytes.buffer, bytes.byteOffset, bytes.byteLength) : Uint8Array.from(bytes);
113
+ const digest2 = await Crypto.digest(Crypto.CryptoDigestAlgorithm.SHA256, digestInput);
114
+ return bytesToHex(new Uint8Array(digest2));
115
+ }
116
+ };
117
+ var expoFileAdapter = {
118
+ pickDocuments: async () => {
119
+ const result = await DocumentPicker.getDocumentAsync({
120
+ copyToCacheDirectory: true,
121
+ multiple: true
122
+ });
123
+ if (result.canceled) return [];
124
+ return result.assets.map(
125
+ (asset) => ({
126
+ id: Crypto.randomUUID(),
127
+ uri: asset.uri,
128
+ name: asset.name,
129
+ contentType: asset.mimeType ?? "application/octet-stream",
130
+ sizeBytes: asset.size ?? null,
131
+ kind: "document"
132
+ })
133
+ );
134
+ },
135
+ pickImages: async () => {
136
+ const result = await ImagePicker.launchImageLibraryAsync({
137
+ allowsMultipleSelection: true,
138
+ mediaTypes: ["images"],
139
+ quality: 1
140
+ });
141
+ if (result.canceled) return [];
142
+ return result.assets.map((asset) => {
143
+ const contentType = asset.mimeType ?? "image/jpeg";
144
+ return {
145
+ id: Crypto.randomUUID(),
146
+ uri: asset.uri,
147
+ name: asset.fileName ?? fallbackFilename(asset.uri, contentType),
148
+ contentType,
149
+ sizeBytes: asset.fileSize ?? null,
150
+ kind: "image",
151
+ previewUri: asset.uri
152
+ };
153
+ });
154
+ },
155
+ // Expo FileSystem's iOS `bytes()` requests write authority that read-only photo-picker
156
+ // exports do not grant; `base64()` uses read authority, so decode once here.
157
+ readBytes: async (source) => base64ToBytes(await new File(source.uri).base64())
158
+ };
159
+ function createExpoOpenGeniAdapters(input) {
160
+ return {
161
+ lifecycle: expoLifecycleAdapter,
162
+ crypto: expoCryptoAdapter,
163
+ files: expoFileAdapter,
164
+ fetch: expoStreamingFetch,
165
+ persistence: input.persistence
166
+ };
167
+ }
168
+ var DICTATION_RECORDING = {
169
+ ...RecordingPresets.HIGH_QUALITY,
170
+ numberOfChannels: 1,
171
+ bitRate: 64e3,
172
+ isMeteringEnabled: true
173
+ };
174
+ function discardRecordingFile(uri) {
175
+ if (!uri) return;
176
+ try {
177
+ const file = new File(uri);
178
+ if (file.exists) file.delete();
179
+ } catch {
180
+ }
181
+ }
182
+ async function keepRecordingFile(uri) {
183
+ try {
184
+ const directory = new Directory(Paths.document, "opengeni-dictation");
185
+ if (!directory.exists) directory.create({ intermediates: true, idempotent: true });
186
+ const kept = new File(directory, `${Crypto.randomUUID()}.m4a`);
187
+ await new File(uri).copy(kept);
188
+ discardRecordingFile(uri);
189
+ return kept.uri;
190
+ } catch {
191
+ return uri;
192
+ }
193
+ }
194
+ function useExpoVoiceRecorder() {
195
+ const recorder = useAudioRecorder(DICTATION_RECORDING);
196
+ return useMemo(
197
+ () => ({
198
+ async requestPermission() {
199
+ const permission = await requestRecordingPermissionsAsync();
200
+ return permission.granted;
201
+ },
202
+ async start() {
203
+ await setAudioModeAsync({ allowsRecording: true, playsInSilentMode: true });
204
+ await recorder.prepareToRecordAsync();
205
+ recorder.record();
206
+ },
207
+ async stop() {
208
+ const durationSeconds = recorder.getStatus().durationMillis / 1e3;
209
+ await recorder.stop();
210
+ await setAudioModeAsync({ allowsRecording: false }).catch(() => void 0);
211
+ const uri = recorder.uri;
212
+ if (!uri) return null;
213
+ return { uri: await keepRecordingFile(uri), mimeType: "audio/mp4", durationSeconds };
214
+ },
215
+ async cancel() {
216
+ if (recorder.isRecording) await recorder.stop();
217
+ await setAudioModeAsync({ allowsRecording: false }).catch(() => void 0);
218
+ discardRecordingFile(recorder.uri);
219
+ },
220
+ discard(recording) {
221
+ discardRecordingFile(recording.uri);
222
+ },
223
+ durationSeconds() {
224
+ return recorder.getStatus().durationMillis / 1e3;
225
+ },
226
+ level() {
227
+ const decibels = recorder.getStatus().metering;
228
+ if (typeof decibels !== "number") return null;
229
+ return Math.max(0, Math.min(1, (decibels + 55) / 55));
230
+ }
231
+ }),
232
+ [recorder]
233
+ );
234
+ }
235
+ async function transcribeExpoRecording(input) {
236
+ const form = new FormData();
237
+ form.append("audio", new File(input.recording.uri), "dictation.m4a");
238
+ form.append("mimeType", input.recording.mimeType);
239
+ form.append("durationSeconds", input.recording.durationSeconds.toFixed(3));
240
+ try {
241
+ const response = await input.client.fetchApi(
242
+ `/v1/workspaces/${encodeURIComponent(input.workspaceId)}/transcriptions`,
243
+ { method: "POST", body: form }
244
+ );
245
+ const text = await response.text();
246
+ let body = {};
247
+ try {
248
+ body = JSON.parse(text);
249
+ } catch {
250
+ }
251
+ if (!response.ok) {
252
+ const message = typeof body.error?.message === "string" ? body.error.message : typeof body.message === "string" ? body.message : `Transcription failed (${response.status}).`;
253
+ throw new NativeTranscriptionError(message, response.status);
254
+ }
255
+ return typeof body.text === "string" ? body.text : "";
256
+ } catch (cause) {
257
+ if (cause instanceof NativeTranscriptionError) throw cause;
258
+ throw new NativeTranscriptionError(
259
+ cause instanceof Error ? cause.message : "Network request failed",
260
+ null
261
+ );
262
+ }
263
+ }
264
+
265
+ export { createExpoCallAdapter, createExpoOpenGeniAdapters, expoCryptoAdapter, expoFileAdapter, expoLifecycleAdapter, expoStreamingFetch, parseNativeCallEvent, transcribeExpoRecording, useExpoVoiceRecorder };
266
+ //# sourceMappingURL=expo.js.map
267
+ //# sourceMappingURL=expo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/realtime/call-events.ts","../src/realtime/expo-call.ts","../src/expo.ts"],"names":["expoFetch","digest"],"mappings":";;;;;;;;;;;;AAWA,IAAM,MAAA,uBAAa,GAAA,CAA0B;AAAA,EAC3C,UAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAC,CAAA;AAGM,SAAS,qBAAqB,GAAA,EAAiD;AACpF,EAAA,QAAQ,IAAI,IAAA;AAAM,IAChB,KAAK,OAAA;AACH,MAAA,OAAO,GAAA,CAAI,SAAS,EAAE,IAAA,EAAM,SAAS,MAAA,EAAQ,GAAA,CAAI,QAAO,GAAI,IAAA;AAAA,IAC9D,KAAK,aAAA;AACH,MAAA,OAAO,GAAA,CAAI,MAAA,GACP,EAAE,IAAA,EAAM,aAAA,EAAe,MAAA,EAAQ,GAAA,CAAI,MAAA,EAAQ,KAAA,EAAO,OAAA,CAAQ,GAAA,CAAI,KAAK,GAAE,GACrE,IAAA;AAAA,IACN,KAAK,cAAA,EAAgB;AACnB,MAAA,MAAM,QAAQ,GAAA,CAAI,KAAA;AAClB,MAAA,OAAO,EAAE,MAAM,cAAA,EAAgB,KAAA,EAAO,OAAO,GAAA,CAAI,KAAK,CAAA,GAAI,KAAA,GAAQ,OAAA,EAAQ;AAAA,IAC5E;AAAA,IACA,KAAK,uBAAA;AAAA,IACL,KAAK,yBAAA;AACH,MAAA,OAAO,EAAE,IAAA,EAAM,GAAA,CAAI,IAAA,EAAK;AAAA,IAC1B,KAAK,gBAAA;AACH,MAAA,OAAO,EAAE,IAAA,EAAM,gBAAA,EAAkB,MAAA,EAAQ,GAAA,CAAI,UAAU,IAAA,EAAK;AAAA,IAC9D;AACE,MAAA,OAAO,IAAA;AAAA;AAEb;;;ACfO,SAAS,qBAAA,CACd,OAAA,GAA0C,EAAC,EACjB;AAC1B,EAAA,MAAM,MAAA,GAAS,4BAAsD,cAAc,CAAA;AACnF,EAAA,IAAI,CAAC,QAAQ,OAAO,IAAA;AACpB,EAAA,MAAA,CAAO,SAAA,CAAU,OAAA,CAAQ,gBAAA,IAAoB,IAAI,CAAA;AAEjD,EAAA,MAAM,EAAA,GAAK,CAAC,MAAA,KAAmB,MAAA,CAAO,WAAA,EAAY;AAClD,EAAA,OAAO;AAAA,IACL,SAAA,EAAW,CAAC,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAO,KAAM,MAAA,CAAO,SAAA,CAAU,EAAA,CAAG,MAAM,CAAA,EAAG,OAAO,MAAM,CAAA;AAAA,IACpF,iBAAiB,CAAC,MAAA,KAAW,OAAO,eAAA,CAAgB,EAAA,CAAG,MAAM,CAAC,CAAA;AAAA,IAC9D,OAAA,EAAS,CAAC,MAAA,EAAQ,MAAA,GAAS,OAAA,KAAY,MAAA,CAAO,OAAA,CAAQ,EAAA,CAAG,MAAM,CAAA,EAAG,MAAA,KAAW,QAAQ,CAAA;AAAA,IACrF,QAAA,EAAU,CAAC,MAAA,EAAQ,KAAA,KAAU,OAAO,QAAA,CAAS,EAAA,CAAG,MAAM,CAAA,EAAG,KAAK,CAAA;AAAA,IAC9D,UAAA,EAAY,CAAC,EAAA,KAAO,MAAA,CAAO,WAAW,EAAE,CAAA;AAAA,IACxC,uBAAA,EAAyB,MAAM,MAAA,CAAO,uBAAA,EAAwB;AAAA,IAC9D,UAAU,QAAA,EAAU;AAClB,MAAA,MAAM,YAAA,GAAe,MAAA,CAAO,WAAA,CAAY,aAAA,EAAe,CAAC,GAAA,KAAQ;AAC9D,QAAA,MAAM,KAAA,GAAQ,qBAAqB,GAAG,CAAA;AACtC,QAAA,IAAI,KAAA,WAAgB,KAAK,CAAA;AAAA,MAC3B,CAAC,CAAA;AACD,MAAA,OAAO,MAAM,aAAa,MAAA,EAAO;AAAA,IACnC;AAAA,GACF;AACF;;;ACfA,SAAS,eAAe,KAAA,EAAwD;AAC9E,EAAA,IAAI,KAAA,KAAU,UAAU,OAAO,QAAA;AAC/B,EAAA,IAAI,KAAA,KAAU,cAAc,OAAO,YAAA;AACnC,EAAA,OAAO,UAAA;AACT;AAEA,SAAS,WAAW,KAAA,EAA2B;AAC7C,EAAA,OAAO,CAAC,GAAG,KAAK,CAAA,CAAE,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,QAAA,CAAS,EAAE,EAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA,CAAE,KAAK,EAAE,CAAA;AAC7E;AAEA,SAAS,cAAc,MAAA,EAA4B;AACjD,EAAA,MAAM,MAAA,GAAS,UAAA,CAAW,IAAA,CAAK,MAAM,CAAA;AACrC,EAAA,MAAM,KAAA,GAAQ,IAAI,UAAA,CAAW,MAAA,CAAO,MAAM,CAAA;AAC1C,EAAA,KAAA,IAAS,KAAA,GAAQ,CAAA,EAAG,KAAA,GAAQ,MAAA,CAAO,MAAA,EAAQ,KAAA,IAAS,CAAA,EAAG,KAAA,CAAM,KAAK,CAAA,GAAI,MAAA,CAAO,UAAA,CAAW,KAAK,CAAA;AAC7F,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,gBAAA,CAAiB,KAAa,WAAA,EAA6B;AAClE,EAAA,MAAM,GAAA,GAAM,GAAA,CAAI,KAAA,CAAM,GAAG,CAAA,CAAE,EAAA,CAAG,EAAE,CAAA,EAAG,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA;AAC/C,EAAA,IAAI,GAAA,EAAK;AACP,IAAA,IAAI;AACF,MAAA,OAAO,mBAAmB,GAAG,CAAA;AAAA,IAC/B,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,GAAA;AAAA,IACT;AAAA,EACF;AACA,EAAA,OAAO,WAAA,CAAY,UAAA,CAAW,QAAQ,CAAA,GAAI,OAAA,GAAU,UAAA;AACtD;AAEA,SAAS,uBAAuB,KAAA,EAAmC;AACjE,EAAA,OACE,OAAO,KAAA,KAAU,QAAA,IACjB,UAAU,IAAA,IACV,QAAA,IAAY,SACZ,OAAO,KAAA,CAAM,WAAW,QAAA,IACxB,SAAA,IAAa,SACb,OAAO,KAAA,CAAM,YAAY,QAAA,IACzB,KAAA,CAAM,YAAY,IAAA,IAClB,MAAA,IAAU,KAAA,IACV,OAAO,MAAM,IAAA,KAAS,UAAA,IACtB,UAAU,KAAA,IACV,OAAO,MAAM,IAAA,KAAS,UAAA,IACtB,iBAAiB,KAAA,IACjB,OAAO,MAAM,WAAA,KAAgB,UAAA,IAC7B,WAAW,KAAA,IACX,OAAO,MAAM,KAAA,KAAU,UAAA;AAE3B;AAGO,IAAM,kBAAA,GAAgC,OAAO,KAAA,EAAO,IAAA,KAAS;AAClE,EAAA,MAAM,QAAA,GAAW,MAAMA,KAAA,CAAU,KAAA,EAAiB,IAAa,CAAA;AAE/D,EAAA,IAAI,CAAC,sBAAA,CAAuB,QAAQ,CAAA,EAAG;AACrC,IAAA,MAAM,IAAI,UAAU,8CAA8C,CAAA;AAAA,EACpE;AACA,EAAA,OAAO,QAAA;AACT;AAEO,IAAM,oBAAA,GAAiE;AAAA,EAC5E,YAAA,EAAc,MAAM,cAAA,CAAe,QAAA,CAAS,YAAY,CAAA;AAAA,EACxD,SAAA,EAAW,CAAC,QAAA,KAAa;AACvB,IAAA,MAAM,eAAe,QAAA,CAAS,gBAAA;AAAA,MAAiB,QAAA;AAAA,MAAU,CAAC,KAAA,KACxD,QAAA,CAAS,cAAA,CAAe,KAAK,CAAC;AAAA,KAChC;AACA,IAAA,OAAO,MAAM,aAAa,MAAA,EAAO;AAAA,EACnC;AACF;AAEO,IAAM,iBAAA,GAA2D;AAAA,EACtE,UAAA,EAAmB,MAAA,CAAA,UAAA;AAAA,EACnB,SAAA,EAAW,OAAO,KAAA,KAAU;AAC1B,IAAA,MAAM,WAAA,GACJ,KAAA,CAAM,MAAA,YAAkB,WAAA,GACpB,IAAI,UAAA,CAAW,KAAA,CAAM,MAAA,EAAQ,KAAA,CAAM,YAAY,KAAA,CAAM,UAAU,CAAA,GAC/D,UAAA,CAAW,KAAK,KAAK,CAAA;AAC3B,IAAA,MAAMC,OAAAA,GAAS,MAAa,MAAA,CAAA,MAAA,CAAc,MAAA,CAAA,qBAAA,CAAsB,QAAQ,WAAW,CAAA;AACnF,IAAA,OAAO,UAAA,CAAW,IAAI,UAAA,CAAWA,OAAM,CAAC,CAAA;AAAA,EAC1C;AACF;AAEO,IAAM,eAAA,GAAwD;AAAA,EACnE,eAAe,YAAY;AACzB,IAAA,MAAM,MAAA,GAAS,MAAqB,cAAA,CAAA,gBAAA,CAAiB;AAAA,MACnD,oBAAA,EAAsB,IAAA;AAAA,MACtB,QAAA,EAAU;AAAA,KACX,CAAA;AACD,IAAA,IAAI,MAAA,CAAO,QAAA,EAAU,OAAO,EAAC;AAC7B,IAAA,OAAO,OAAO,MAAA,CAAO,GAAA;AAAA,MACnB,CAAC,KAAA,MAA6B;AAAA,QAC5B,IAAW,MAAA,CAAA,UAAA,EAAW;AAAA,QACtB,KAAK,KAAA,CAAM,GAAA;AAAA,QACX,MAAM,KAAA,CAAM,IAAA;AAAA,QACZ,WAAA,EAAa,MAAM,QAAA,IAAY,0BAAA;AAAA,QAC/B,SAAA,EAAW,MAAM,IAAA,IAAQ,IAAA;AAAA,QACzB,IAAA,EAAM;AAAA,OACR;AAAA,KACF;AAAA,EACF,CAAA;AAAA,EACA,YAAY,YAAY;AACtB,IAAA,MAAM,MAAA,GAAS,MAAkB,WAAA,CAAA,uBAAA,CAAwB;AAAA,MACvD,uBAAA,EAAyB,IAAA;AAAA,MACzB,UAAA,EAAY,CAAC,QAAQ,CAAA;AAAA,MACrB,OAAA,EAAS;AAAA,KACV,CAAA;AACD,IAAA,IAAI,MAAA,CAAO,QAAA,EAAU,OAAO,EAAC;AAC7B,IAAA,OAAO,MAAA,CAAO,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAA4B;AACpD,MAAA,MAAM,WAAA,GAAc,MAAM,QAAA,IAAY,YAAA;AACtC,MAAA,OAAO;AAAA,QACL,IAAW,MAAA,CAAA,UAAA,EAAW;AAAA,QACtB,KAAK,KAAA,CAAM,GAAA;AAAA,QACX,MAAM,KAAA,CAAM,QAAA,IAAY,gBAAA,CAAiB,KAAA,CAAM,KAAK,WAAW,CAAA;AAAA,QAC/D,WAAA;AAAA,QACA,SAAA,EAAW,MAAM,QAAA,IAAY,IAAA;AAAA,QAC7B,IAAA,EAAM,OAAA;AAAA,QACN,YAAY,KAAA,CAAM;AAAA,OACpB;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAA;AAAA;AAAA;AAAA,EAGA,SAAA,EAAW,OAAO,MAAA,KAAW,aAAA,CAAc,MAAM,IAAI,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA,CAAE,MAAA,EAAQ;AAChF;AAGO,SAAS,2BAA2B,KAAA,EAEX;AAC9B,EAAA,OAAO;AAAA,IACL,SAAA,EAAW,oBAAA;AAAA,IACX,MAAA,EAAQ,iBAAA;AAAA,IACR,KAAA,EAAO,eAAA;AAAA,IACP,KAAA,EAAO,kBAAA;AAAA,IACP,aAAa,KAAA,CAAM;AAAA,GACrB;AACF;AAGA,IAAM,mBAAA,GAAsB;AAAA,EAC1B,GAAG,gBAAA,CAAiB,YAAA;AAAA,EACpB,gBAAA,EAAkB,CAAA;AAAA,EAClB,OAAA,EAAS,IAAA;AAAA,EACT,iBAAA,EAAmB;AACrB,CAAA;AAEA,SAAS,qBAAqB,GAAA,EAAoB;AAChD,EAAA,IAAI,CAAC,GAAA,EAAK;AACV,EAAA,IAAI;AACF,IAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,GAAG,CAAA;AACzB,IAAA,IAAI,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,MAAA,EAAO;AAAA,EAC/B,CAAA,CAAA,MAAQ;AAAA,EAER;AACF;AAGA,eAAe,kBAAkB,GAAA,EAA8B;AAC7D,EAAA,IAAI;AACF,IAAA,MAAM,SAAA,GAAY,IAAI,SAAA,CAAU,KAAA,CAAM,UAAU,oBAAoB,CAAA;AACpE,IAAA,IAAI,CAAC,SAAA,CAAU,MAAA,EAAQ,SAAA,CAAU,MAAA,CAAO,EAAE,aAAA,EAAe,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,CAAA;AACjF,IAAA,MAAM,OAAO,IAAI,IAAA,CAAK,WAAW,CAAA,EAAU,MAAA,CAAA,UAAA,EAAY,CAAA,IAAA,CAAM,CAAA;AAC7D,IAAA,MAAM,IAAI,IAAA,CAAK,GAAG,CAAA,CAAE,KAAK,IAAI,CAAA;AAC7B,IAAA,oBAAA,CAAqB,GAAG,CAAA;AACxB,IAAA,OAAO,IAAA,CAAK,GAAA;AAAA,EACd,CAAA,CAAA,MAAQ;AAEN,IAAA,OAAO,GAAA;AAAA,EACT;AACF;AAGO,SAAS,oBAAA,GAA4C;AAC1D,EAAA,MAAM,QAAA,GAAW,iBAAiB,mBAAmB,CAAA;AACrD,EAAA,OAAO,OAAA;AAAA,IACL,OAAO;AAAA,MACL,MAAM,iBAAA,GAAoB;AACxB,QAAA,MAAM,UAAA,GAAa,MAAM,gCAAA,EAAiC;AAC1D,QAAA,OAAO,UAAA,CAAW,OAAA;AAAA,MACpB,CAAA;AAAA,MACA,MAAM,KAAA,GAAQ;AACZ,QAAA,MAAM,kBAAkB,EAAE,eAAA,EAAiB,IAAA,EAAM,iBAAA,EAAmB,MAAM,CAAA;AAC1E,QAAA,MAAM,SAAS,oBAAA,EAAqB;AACpC,QAAA,QAAA,CAAS,MAAA,EAAO;AAAA,MAClB,CAAA;AAAA,MACA,MAAM,IAAA,GAAO;AACX,QAAA,MAAM,eAAA,GAAkB,QAAA,CAAS,SAAA,EAAU,CAAE,cAAA,GAAiB,GAAA;AAC9D,QAAA,MAAM,SAAS,IAAA,EAAK;AACpB,QAAA,MAAM,iBAAA,CAAkB,EAAE,eAAA,EAAiB,KAAA,EAAO,CAAA,CAAE,KAAA,CAAM,MAAM,MAAS,CAAA;AACzE,QAAA,MAAM,MAAM,QAAA,CAAS,GAAA;AACrB,QAAA,IAAI,CAAC,KAAK,OAAO,IAAA;AAGjB,QAAA,OAAO,EAAE,KAAK,MAAM,iBAAA,CAAkB,GAAG,CAAA,EAAG,QAAA,EAAU,aAAa,eAAA,EAAgB;AAAA,MACrF,CAAA;AAAA,MACA,MAAM,MAAA,GAAS;AACb,QAAA,IAAI,QAAA,CAAS,WAAA,EAAa,MAAM,QAAA,CAAS,IAAA,EAAK;AAC9C,QAAA,MAAM,iBAAA,CAAkB,EAAE,eAAA,EAAiB,KAAA,EAAO,CAAA,CAAE,KAAA,CAAM,MAAM,MAAS,CAAA;AACzE,QAAA,oBAAA,CAAqB,SAAS,GAAG,CAAA;AAAA,MACnC,CAAA;AAAA,MACA,QAAQ,SAAA,EAAW;AACjB,QAAA,oBAAA,CAAqB,UAAU,GAAG,CAAA;AAAA,MACpC,CAAA;AAAA,MACA,eAAA,GAAkB;AAChB,QAAA,OAAO,QAAA,CAAS,SAAA,EAAU,CAAE,cAAA,GAAiB,GAAA;AAAA,MAC/C,CAAA;AAAA,MACA,KAAA,GAAQ;AAEN,QAAA,MAAM,QAAA,GAAW,QAAA,CAAS,SAAA,EAAU,CAAE,QAAA;AACtC,QAAA,IAAI,OAAO,QAAA,KAAa,QAAA,EAAU,OAAO,IAAA;AACzC,QAAA,OAAO,IAAA,CAAK,IAAI,CAAA,EAAG,IAAA,CAAK,IAAI,CAAA,EAAA,CAAI,QAAA,GAAW,EAAA,IAAM,EAAE,CAAC,CAAA;AAAA,MACtD;AAAA,KACF,CAAA;AAAA,IACA,CAAC,QAAQ;AAAA,GACX;AACF;AAOA,eAAsB,wBAAwB,KAAA,EAI1B;AAClB,EAAA,MAAM,IAAA,GAAO,IAAI,QAAA,EAAS;AAE1B,EAAA,IAAA,CAAK,MAAA,CAAO,SAAS,IAAI,IAAA,CAAK,MAAM,SAAA,CAAU,GAAG,GAAsB,eAAe,CAAA;AACtF,EAAA,IAAA,CAAK,MAAA,CAAO,UAAA,EAAY,KAAA,CAAM,SAAA,CAAU,QAAQ,CAAA;AAChD,EAAA,IAAA,CAAK,OAAO,iBAAA,EAAmB,KAAA,CAAM,UAAU,eAAA,CAAgB,OAAA,CAAQ,CAAC,CAAC,CAAA;AACzE,EAAA,IAAI;AACF,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,MAAA,CAAO,QAAA;AAAA,MAClC,CAAA,eAAA,EAAkB,kBAAA,CAAmB,KAAA,CAAM,WAAW,CAAC,CAAA,eAAA,CAAA;AAAA,MACvD,EAAE,MAAA,EAAQ,MAAA,EAAQ,IAAA,EAAM,IAAA;AAAK,KAC/B;AACA,IAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AACjC,IAAA,IAAI,OAA6E,EAAC;AAClF,IAAA,IAAI;AACF,MAAA,IAAA,GAAO,IAAA,CAAK,MAAM,IAAI,CAAA;AAAA,IACxB,CAAA,CAAA,MAAQ;AAAA,IAER;AACA,IAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,MAAA,MAAM,UACJ,OAAO,IAAA,CAAK,KAAA,EAAO,OAAA,KAAY,WAC3B,IAAA,CAAK,KAAA,CAAM,OAAA,GACX,OAAO,KAAK,OAAA,KAAY,QAAA,GACtB,KAAK,OAAA,GACL,CAAA,sBAAA,EAAyB,SAAS,MAAM,CAAA,EAAA,CAAA;AAChD,MAAA,MAAM,IAAI,wBAAA,CAAyB,OAAA,EAAS,QAAA,CAAS,MAAM,CAAA;AAAA,IAC7D;AACA,IAAA,OAAO,OAAO,IAAA,CAAK,IAAA,KAAS,QAAA,GAAW,KAAK,IAAA,GAAO,EAAA;AAAA,EACrD,SAAS,KAAA,EAAO;AACd,IAAA,IAAI,KAAA,YAAiB,0BAA0B,MAAM,KAAA;AAErD,IAAA,MAAM,IAAI,wBAAA;AAAA,MACR,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,wBAAA;AAAA,MACzC;AAAA,KACF;AAAA,EACF;AACF","file":"expo.js","sourcesContent":["import type { NativeCallAudioRoute, NativeCallEvent } from \"./native-call\";\n\n/** A call event as the native module sends it. */\nexport type RawNativeCallEvent = {\n type: string;\n callId?: string;\n muted?: boolean;\n route?: string;\n target?: string | null;\n};\n\nconst ROUTES = new Set<NativeCallAudioRoute>([\n \"receiver\",\n \"speaker\",\n \"bluetooth\",\n \"headphones\",\n \"other\",\n]);\n\n/** Map a raw native event onto the typed call event, dropping anything unknown. */\nexport function parseNativeCallEvent(raw: RawNativeCallEvent): NativeCallEvent | null {\n switch (raw.type) {\n case \"ended\":\n return raw.callId ? { type: \"ended\", callId: raw.callId } : null;\n case \"muteChanged\":\n return raw.callId\n ? { type: \"muteChanged\", callId: raw.callId, muted: Boolean(raw.muted) }\n : null;\n case \"routeChanged\": {\n const route = raw.route as NativeCallAudioRoute;\n return { type: \"routeChanged\", route: ROUTES.has(route) ? route : \"other\" };\n }\n case \"audioSessionActivated\":\n case \"audioSessionDeactivated\":\n return { type: raw.type };\n case \"startRequested\":\n return { type: \"startRequested\", target: raw.target ?? null };\n default:\n return null;\n }\n}\n","import { requireOptionalNativeModule } from \"expo-modules-core\";\nimport { parseNativeCallEvent, type RawNativeCallEvent } from \"./call-events\";\nimport type { NativeCallAdapter } from \"./native-call\";\n\ntype OpenGeniCallNativeModule = {\n configure(includeInRecents: boolean): void;\n startCall(callId: string, title: string, target: string | null): Promise<void>;\n reportConnected(callId: string): void;\n endCall(callId: string, failed: boolean): Promise<void>;\n setMuted(callId: string, muted: boolean): Promise<void>;\n setSpeaker(on: boolean): Promise<void>;\n takePendingStartRequest(): Promise<{ target: string | null } | null>;\n addListener(\n eventName: \"onCallEvent\",\n listener: (event: RawNativeCallEvent) => void,\n ): { remove(): void };\n};\n\nexport { parseNativeCallEvent };\n\n/**\n * CallKit for Expo hosts, from the native module this package ships (linked by\n * Expo autolinking). Returns null where it is unavailable (Android, web, or a\n * build without the module), so voice still works without a system call.\n */\nexport function createExpoCallAdapter(\n options: { includeInRecents?: boolean } = {},\n): NativeCallAdapter | null {\n const native = requireOptionalNativeModule<OpenGeniCallNativeModule>(\"OpenGeniCall\");\n if (!native) return null;\n native.configure(options.includeInRecents ?? true);\n // Call ids are UUIDs; CallKit reports them upper-case, the hook compares lower-case.\n const id = (callId: string) => callId.toLowerCase();\n return {\n startCall: ({ callId, title, target }) => native.startCall(id(callId), title, target),\n reportConnected: (callId) => native.reportConnected(id(callId)),\n endCall: (callId, reason = \"ended\") => native.endCall(id(callId), reason === \"failed\"),\n setMuted: (callId, muted) => native.setMuted(id(callId), muted),\n setSpeaker: (on) => native.setSpeaker(on),\n takePendingStartRequest: () => native.takePendingStartRequest(),\n subscribe(listener) {\n const subscription = native.addListener(\"onCallEvent\", (raw) => {\n const event = parseNativeCallEvent(raw);\n if (event) listener(event);\n });\n return () => subscription.remove();\n },\n };\n}\n","// @opengeni/react-native/expo: ready-made adapters for Expo hosts.\n//\n// Hosts own persistence (where drafts and pending operations live, and how they are\n// namespaced per signed-in principal); everything else here is the standard Expo\n// implementation of the adapter contract.\nimport { AppState } from \"react-native\";\nimport { useMemo } from \"react\";\nimport * as Crypto from \"expo-crypto\";\nimport * as DocumentPicker from \"expo-document-picker\";\nimport { fetch as expoFetch } from \"expo/fetch\";\nimport {\n RecordingPresets,\n requestRecordingPermissionsAsync,\n setAudioModeAsync,\n useAudioRecorder,\n} from \"expo-audio\";\nimport { Directory, File, Paths } from \"expo-file-system\";\nimport * as ImagePicker from \"expo-image-picker\";\nimport type { FetchLike, OpenGeniClient } from \"@opengeni/sdk\";\nimport type {\n NativeLifecycleState,\n NativePersistenceAdapter,\n NativePickedFile,\n OpenGeniReactNativeAdapters,\n} from \"./adapters\";\nimport {\n NativeTranscriptionError,\n type NativeVoiceRecorder,\n type NativeVoiceRecording,\n} from \"./voice-input\";\n\nexport { createExpoCallAdapter, parseNativeCallEvent } from \"./realtime/expo-call\";\n\nfunction lifecycleState(value: string | null | undefined): NativeLifecycleState {\n if (value === \"active\") return \"active\";\n if (value === \"background\") return \"background\";\n return \"inactive\";\n}\n\nfunction bytesToHex(bytes: Uint8Array): string {\n return [...bytes].map((byte) => byte.toString(16).padStart(2, \"0\")).join(\"\");\n}\n\nfunction base64ToBytes(base64: string): Uint8Array {\n const binary = globalThis.atob(base64);\n const bytes = new Uint8Array(binary.length);\n for (let index = 0; index < binary.length; index += 1) bytes[index] = binary.charCodeAt(index);\n return bytes;\n}\n\nfunction fallbackFilename(uri: string, contentType: string): string {\n const raw = uri.split(\"/\").at(-1)?.split(\"?\")[0];\n if (raw) {\n try {\n return decodeURIComponent(raw);\n } catch {\n return raw;\n }\n }\n return contentType.startsWith(\"image/\") ? \"image\" : \"document\";\n}\n\nfunction isRuntimeFetchResponse(value: unknown): value is Response {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"status\" in value &&\n typeof value.status === \"number\" &&\n \"headers\" in value &&\n typeof value.headers === \"object\" &&\n value.headers !== null &&\n \"json\" in value &&\n typeof value.json === \"function\" &&\n \"text\" in value &&\n typeof value.text === \"function\" &&\n \"arrayBuffer\" in value &&\n typeof value.arrayBuffer === \"function\" &&\n \"clone\" in value &&\n typeof value.clone === \"function\"\n );\n}\n\n/** Streaming fetch backed by Expo's native implementation (required for live event streams). */\nexport const expoStreamingFetch: FetchLike = async (input, init) => {\n const response = await expoFetch(input as string, init as never);\n // Preserve Expo's native response object: re-wrapping its body corrupts JSON reads on iOS.\n if (!isRuntimeFetchResponse(response)) {\n throw new TypeError(\"Expo fetch returned an incompatible response\");\n }\n return response;\n};\n\nexport const expoLifecycleAdapter: OpenGeniReactNativeAdapters[\"lifecycle\"] = {\n currentState: () => lifecycleState(AppState.currentState),\n subscribe: (listener) => {\n const subscription = AppState.addEventListener(\"change\", (state) =>\n listener(lifecycleState(state)),\n );\n return () => subscription.remove();\n },\n};\n\nexport const expoCryptoAdapter: OpenGeniReactNativeAdapters[\"crypto\"] = {\n randomUUID: Crypto.randomUUID,\n sha256Hex: async (bytes) => {\n const digestInput: Uint8Array<ArrayBuffer> =\n bytes.buffer instanceof ArrayBuffer\n ? new Uint8Array(bytes.buffer, bytes.byteOffset, bytes.byteLength)\n : Uint8Array.from(bytes);\n const digest = await Crypto.digest(Crypto.CryptoDigestAlgorithm.SHA256, digestInput);\n return bytesToHex(new Uint8Array(digest));\n },\n};\n\nexport const expoFileAdapter: OpenGeniReactNativeAdapters[\"files\"] = {\n pickDocuments: async () => {\n const result = await DocumentPicker.getDocumentAsync({\n copyToCacheDirectory: true,\n multiple: true,\n });\n if (result.canceled) return [];\n return result.assets.map(\n (asset): NativePickedFile => ({\n id: Crypto.randomUUID(),\n uri: asset.uri,\n name: asset.name,\n contentType: asset.mimeType ?? \"application/octet-stream\",\n sizeBytes: asset.size ?? null,\n kind: \"document\",\n }),\n );\n },\n pickImages: async () => {\n const result = await ImagePicker.launchImageLibraryAsync({\n allowsMultipleSelection: true,\n mediaTypes: [\"images\"],\n quality: 1,\n });\n if (result.canceled) return [];\n return result.assets.map((asset): NativePickedFile => {\n const contentType = asset.mimeType ?? \"image/jpeg\";\n return {\n id: Crypto.randomUUID(),\n uri: asset.uri,\n name: asset.fileName ?? fallbackFilename(asset.uri, contentType),\n contentType,\n sizeBytes: asset.fileSize ?? null,\n kind: \"image\",\n previewUri: asset.uri,\n };\n });\n },\n // Expo FileSystem's iOS `bytes()` requests write authority that read-only photo-picker\n // exports do not grant; `base64()` uses read authority, so decode once here.\n readBytes: async (source) => base64ToBytes(await new File(source.uri).base64()),\n};\n\n/** Standard Expo adapters; the host supplies persistence. */\nexport function createExpoOpenGeniAdapters(input: {\n persistence: NativePersistenceAdapter;\n}): OpenGeniReactNativeAdapters {\n return {\n lifecycle: expoLifecycleAdapter,\n crypto: expoCryptoAdapter,\n files: expoFileAdapter,\n fetch: expoStreamingFetch,\n persistence: input.persistence,\n };\n}\n\n// Mono AAC in an MPEG-4 container: small uploads, accepted by every transcription provider.\nconst DICTATION_RECORDING = {\n ...RecordingPresets.HIGH_QUALITY,\n numberOfChannels: 1,\n bitRate: 64_000,\n isMeteringEnabled: true,\n};\n\nfunction discardRecordingFile(uri: string | null) {\n if (!uri) return;\n try {\n const file = new File(uri);\n if (file.exists) file.delete();\n } catch {\n // A leftover cache file is harmless; the system clears the cache directory.\n }\n}\n\n/** Move a finished recording out of the recorder's scratch path into its own file. */\nasync function keepRecordingFile(uri: string): Promise<string> {\n try {\n const directory = new Directory(Paths.document, \"opengeni-dictation\");\n if (!directory.exists) directory.create({ intermediates: true, idempotent: true });\n const kept = new File(directory, `${Crypto.randomUUID()}.m4a`);\n await new File(uri).copy(kept);\n discardRecordingFile(uri);\n return kept.uri;\n } catch {\n // Keeping the original path is still better than losing the recording.\n return uri;\n }\n}\n\n/** Dictation recorder backed by expo-audio. */\nexport function useExpoVoiceRecorder(): NativeVoiceRecorder {\n const recorder = useAudioRecorder(DICTATION_RECORDING);\n return useMemo<NativeVoiceRecorder>(\n () => ({\n async requestPermission() {\n const permission = await requestRecordingPermissionsAsync();\n return permission.granted;\n },\n async start() {\n await setAudioModeAsync({ allowsRecording: true, playsInSilentMode: true });\n await recorder.prepareToRecordAsync();\n recorder.record();\n },\n async stop() {\n const durationSeconds = recorder.getStatus().durationMillis / 1000;\n await recorder.stop();\n await setAudioModeAsync({ allowsRecording: false }).catch(() => undefined);\n const uri = recorder.uri;\n if (!uri) return null;\n // Kept until its text is in the draft: a following segment or a retry\n // must never find the recorder has reused or cleared this file.\n return { uri: await keepRecordingFile(uri), mimeType: \"audio/mp4\", durationSeconds };\n },\n async cancel() {\n if (recorder.isRecording) await recorder.stop();\n await setAudioModeAsync({ allowsRecording: false }).catch(() => undefined);\n discardRecordingFile(recorder.uri);\n },\n discard(recording) {\n discardRecordingFile(recording.uri);\n },\n durationSeconds() {\n return recorder.getStatus().durationMillis / 1000;\n },\n level() {\n // Metering is in decibels (silence is about -160); map the useful -55…0 range.\n const decibels = recorder.getStatus().metering;\n if (typeof decibels !== \"number\") return null;\n return Math.max(0, Math.min(1, (decibels + 55) / 55));\n },\n }),\n [recorder],\n );\n}\n\n/**\n * Send a recording to the deployment's transcription API. The device file is\n * streamed as multipart form data and kept: dictation deletes it only once its\n * text is in the draft. Failures carry the HTTP status (null when offline).\n */\nexport async function transcribeExpoRecording(input: {\n client: Pick<OpenGeniClient, \"fetchApi\">;\n workspaceId: string;\n recording: NativeVoiceRecording;\n}): Promise<string> {\n const form = new FormData();\n // expo-file-system's File is a Blob, which Expo's fetch uploads from disk.\n form.append(\"audio\", new File(input.recording.uri) as unknown as Blob, \"dictation.m4a\");\n form.append(\"mimeType\", input.recording.mimeType);\n form.append(\"durationSeconds\", input.recording.durationSeconds.toFixed(3));\n try {\n const response = await input.client.fetchApi(\n `/v1/workspaces/${encodeURIComponent(input.workspaceId)}/transcriptions`,\n { method: \"POST\", body: form },\n );\n const text = await response.text();\n let body: { text?: unknown; error?: { message?: unknown }; message?: unknown } = {};\n try {\n body = JSON.parse(text) as typeof body;\n } catch {\n // A non-JSON body is reported by status below.\n }\n if (!response.ok) {\n const message =\n typeof body.error?.message === \"string\"\n ? body.error.message\n : typeof body.message === \"string\"\n ? body.message\n : `Transcription failed (${response.status}).`;\n throw new NativeTranscriptionError(message, response.status);\n }\n return typeof body.text === \"string\" ? body.text : \"\";\n } catch (cause) {\n if (cause instanceof NativeTranscriptionError) throw cause;\n // No response at all: offline, timed out or dropped. The recording is kept.\n throw new NativeTranscriptionError(\n cause instanceof Error ? cause.message : \"Network request failed\",\n null,\n );\n }\n}\n"]}
@@ -0,0 +1,13 @@
1
+ export type { AsyncKeyValueStorage, NativeCryptoAdapter, NativeFileAdapter, NativeLifecycleAdapter, NativeLifecycleState, NativePersistenceAdapter, NativePickedFile, OpenGeniReactNativeAdapters, } from "./adapters.js";
2
+ export { createHydratedPersistenceAdapter, sha256HexToArrayBuffer } from "./adapters.js";
3
+ export { installOpenGeniReactNativeEnvironment, OpenGeniReactNativeProvider, useOpenGeniReactNativeEnvironment, type NativeEnvironmentContextValue, type OpenGeniReactNativeProviderProps, } from "./environment.js";
4
+ export { NATIVE_ATTACHMENT_PREPARATION_TIMEOUT_MS, prepareNativeAttachmentUpload, useNativeFileAttachments, type NativeAttachment, type NativeAttachmentStatus, type NativeFileAttachmentsResult, } from "./attachments.js";
5
+ export { useOpenGeniNativeSession, type OpenGeniNativeSessionClient, type OpenGeniNativeSessionController, } from "./use-native-session.js";
6
+ export { appendDictation, isRetryableTranscriptionError, NativeTranscriptionError, useNativeVoiceInput, type NativeVoiceInput, type NativeVoiceInputStatus, type NativeVoiceRecorder, type NativeVoiceRecording, } from "./voice-input.js";
7
+ export { boundedJson, formatNativeRelativeTime, nativeHumanInputRequestPreview, nativeSessionStatusTone, timelineAccessibilityLabel, validateHumanInputAnswers, type NativeSessionStatusTone, } from "./view-model.js";
8
+ export { DEFAULT_OPENGENI_NATIVE_LABELS, DEFAULT_OPENGENI_NATIVE_THEME, type OpenGeniNativeLabels, type OpenGeniNativeTheme, } from "./presentation.js";
9
+ export { OpenGeniNativeAttachmentStrip, OpenGeniNativeSessionView, type NativeComposerActionContext, type NativeComposerActionRenderer, type NativeComposerRenderContext, type NativeComposerRenderer, type NativeComposerSurfaceContext, type NativeComposerSurfaceRenderer, type NativeMessageRenderer, type NativeToolRenderer, type NativeTurnSummaryContext, type NativeTurnSummaryRenderer, type NativeTurnSummaryResult, type OpenGeniNativeSessionViewProps, } from "./session-view.js";
10
+ export { createMemoryRealtimeOwnerStorage, createNativeRealtimeControllerFactory, createNativeRemoteAudio, type NativeRealtimeControllerFactoryOptions, type NativeWebRtcAdapter, } from "./realtime/native-realtime.js";
11
+ export { useNativeSessionRealtime, type UseNativeSessionRealtimeOptions, } from "./realtime/use-native-session-realtime.js";
12
+ export { nativeRealtimeModelSupported, useNativeRealtimeCall, type NativeCallAdapter, type NativeCallAudioRoute, type NativeCallEvent, type NativeCallPhase, type NativeCallRealtime, type NativeRealtimeCall, } from "./realtime/native-call.js";
13
+ export { DEFAULT_OPENGENI_NATIVE_CALL_LABELS, OpenGeniNativeCallView, type OpenGeniNativeCallLabels, } from "./realtime/call-view.js";