@buoy-gg/ask-buoy 7.0.34 → 7.0.36

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 (352) hide show
  1. package/README.md +35 -8
  2. package/lib/commonjs/blocks/AskBlocks.js +338 -1
  3. package/lib/commonjs/blocks/AskBlocks.js.map +1 -0
  4. package/lib/commonjs/blocks/BlockRenderer.js +262 -1
  5. package/lib/commonjs/blocks/BlockRenderer.js.map +1 -0
  6. package/lib/commonjs/blocks/ChromePrototypes.js +514 -1
  7. package/lib/commonjs/blocks/ChromePrototypes.js.map +1 -0
  8. package/lib/commonjs/blocks/DataBlocks.js +781 -1
  9. package/lib/commonjs/blocks/DataBlocks.js.map +1 -0
  10. package/lib/commonjs/blocks/ExtraBlocks.js +1860 -1
  11. package/lib/commonjs/blocks/ExtraBlocks.js.map +1 -0
  12. package/lib/commonjs/blocks/MediaBlocks.js +156 -1
  13. package/lib/commonjs/blocks/MediaBlocks.js.map +1 -0
  14. package/lib/commonjs/blocks/ReceiptBlocks.js +586 -1
  15. package/lib/commonjs/blocks/ReceiptBlocks.js.map +1 -0
  16. package/lib/commonjs/blocks/blockText.js +60 -0
  17. package/lib/commonjs/blocks/blockText.js.map +1 -0
  18. package/lib/commonjs/blocks/blockText.test.js +53 -0
  19. package/lib/commonjs/blocks/blockText.test.js.map +1 -0
  20. package/lib/commonjs/blocks/context.js +42 -1
  21. package/lib/commonjs/blocks/context.js.map +1 -0
  22. package/lib/commonjs/blocks/icons.js +96 -1
  23. package/lib/commonjs/blocks/icons.js.map +1 -0
  24. package/lib/commonjs/blocks/index.js +95 -1
  25. package/lib/commonjs/blocks/index.js.map +1 -0
  26. package/lib/commonjs/blocks/listRow.test.js +55 -0
  27. package/lib/commonjs/blocks/listRow.test.js.map +1 -0
  28. package/lib/commonjs/blocks/pageState.js +34 -0
  29. package/lib/commonjs/blocks/pageState.js.map +1 -0
  30. package/lib/commonjs/blocks/pageState.test.js +57 -0
  31. package/lib/commonjs/blocks/pageState.test.js.map +1 -0
  32. package/lib/commonjs/blocks/primitives.js +457 -1
  33. package/lib/commonjs/blocks/primitives.js.map +1 -0
  34. package/lib/commonjs/blocks/primitivesIndex.js +62 -1
  35. package/lib/commonjs/blocks/primitivesIndex.js.map +1 -0
  36. package/lib/commonjs/components/ApprovalCard.js +244 -1
  37. package/lib/commonjs/components/ApprovalCard.js.map +1 -0
  38. package/lib/commonjs/components/AskBuoyHeader.js +196 -1
  39. package/lib/commonjs/components/AskBuoyHeader.js.map +1 -0
  40. package/lib/commonjs/components/AskBuoyIcon.js +19 -1
  41. package/lib/commonjs/components/AskBuoyIcon.js.map +1 -0
  42. package/lib/commonjs/components/AskBuoyModal.js +479 -1
  43. package/lib/commonjs/components/AskBuoyModal.js.map +1 -0
  44. package/lib/commonjs/components/AskBuoySettings.js +119 -0
  45. package/lib/commonjs/components/AskBuoySettings.js.map +1 -0
  46. package/lib/commonjs/components/ChangesBar.js +211 -1
  47. package/lib/commonjs/components/ChangesBar.js.map +1 -0
  48. package/lib/commonjs/components/Composer.js +255 -1
  49. package/lib/commonjs/components/Composer.js.map +1 -0
  50. package/lib/commonjs/components/EmptyState.js +161 -1
  51. package/lib/commonjs/components/EmptyState.js.map +1 -0
  52. package/lib/commonjs/components/KeyboardPad.js +80 -0
  53. package/lib/commonjs/components/KeyboardPad.js.map +1 -0
  54. package/lib/commonjs/components/Markdown.js +310 -1
  55. package/lib/commonjs/components/Markdown.js.map +1 -0
  56. package/lib/commonjs/components/MessageList.js +930 -1
  57. package/lib/commonjs/components/MessageList.js.map +1 -0
  58. package/lib/commonjs/components/QueuedMessages.js +145 -0
  59. package/lib/commonjs/components/QueuedMessages.js.map +1 -0
  60. package/lib/commonjs/components/ThinkingStrip.js +223 -0
  61. package/lib/commonjs/components/ThinkingStrip.js.map +1 -0
  62. package/lib/commonjs/components/TypingDots.js +63 -1
  63. package/lib/commonjs/components/TypingDots.js.map +1 -0
  64. package/lib/commonjs/components/markdownParse.js +131 -0
  65. package/lib/commonjs/components/markdownParse.js.map +1 -0
  66. package/lib/commonjs/components/markdownParse.test.js +99 -0
  67. package/lib/commonjs/components/markdownParse.test.js.map +1 -0
  68. package/lib/commonjs/components/useCopyAction.js +50 -0
  69. package/lib/commonjs/components/useCopyAction.js.map +1 -0
  70. package/lib/commonjs/index.js +252 -1
  71. package/lib/commonjs/index.js.map +1 -0
  72. package/lib/commonjs/preset.js +90 -1
  73. package/lib/commonjs/preset.js.map +1 -0
  74. package/lib/commonjs/store/activityGroups.js +110 -0
  75. package/lib/commonjs/store/activityGroups.js.map +1 -0
  76. package/lib/commonjs/store/activityGroups.test.js +78 -0
  77. package/lib/commonjs/store/activityGroups.test.js.map +1 -0
  78. package/lib/commonjs/store/askBuoySettings.js +72 -0
  79. package/lib/commonjs/store/askBuoySettings.js.map +1 -0
  80. package/lib/commonjs/store/askBuoyStore.js +547 -1
  81. package/lib/commonjs/store/askBuoyStore.js.map +1 -0
  82. package/lib/commonjs/store/blockPlacement.js +64 -0
  83. package/lib/commonjs/store/blockPlacement.js.map +1 -0
  84. package/lib/commonjs/store/blockPlacement.test.js +123 -0
  85. package/lib/commonjs/store/blockPlacement.test.js.map +1 -0
  86. package/lib/commonjs/store/queue.test.js +150 -0
  87. package/lib/commonjs/store/queue.test.js.map +1 -0
  88. package/lib/commonjs/store/resetConversation.js +77 -0
  89. package/lib/commonjs/store/resetConversation.js.map +1 -0
  90. package/lib/commonjs/store/restorePending.test.js +63 -0
  91. package/lib/commonjs/store/restorePending.test.js.map +1 -0
  92. package/lib/commonjs/store/restoredIds.test.js +47 -0
  93. package/lib/commonjs/store/restoredIds.test.js.map +1 -0
  94. package/lib/commonjs/store/suggestions.js +54 -0
  95. package/lib/commonjs/store/suggestions.js.map +1 -0
  96. package/lib/commonjs/store/suggestions.test.js +58 -0
  97. package/lib/commonjs/store/suggestions.test.js.map +1 -0
  98. package/lib/commonjs/store/systemLine.test.js +77 -0
  99. package/lib/commonjs/store/systemLine.test.js.map +1 -0
  100. package/lib/commonjs/store/ticketPrompt.js +17 -0
  101. package/lib/commonjs/store/ticketPrompt.js.map +1 -0
  102. package/lib/commonjs/store/traceText.js +81 -0
  103. package/lib/commonjs/store/traceText.js.map +1 -0
  104. package/lib/commonjs/store/traceText.test.js +112 -0
  105. package/lib/commonjs/store/traceText.test.js.map +1 -0
  106. package/lib/commonjs/store/transcriptPersistence.js +297 -0
  107. package/lib/commonjs/store/transcriptPersistence.js.map +1 -0
  108. package/lib/commonjs/store/transcriptPersistence.test.js +333 -0
  109. package/lib/commonjs/store/transcriptPersistence.test.js.map +1 -0
  110. package/lib/commonjs/store/turnRendering.test.js +151 -0
  111. package/lib/commonjs/store/turnRendering.test.js.map +1 -0
  112. package/lib/commonjs/store/useAskBuoy.js +622 -1
  113. package/lib/commonjs/store/useAskBuoy.js.map +1 -0
  114. package/lib/commonjs/store/useAskBuoySettings.js +14 -0
  115. package/lib/commonjs/store/useAskBuoySettings.js.map +1 -0
  116. package/lib/commonjs/sync/askBuoySyncAdapter.js +140 -1
  117. package/lib/commonjs/sync/askBuoySyncAdapter.js.map +1 -0
  118. package/lib/commonjs/sync/askBuoySyncAdapter.test.js +141 -1
  119. package/lib/commonjs/sync/askBuoySyncAdapter.test.js.map +1 -0
  120. package/lib/commonjs/sync/wire.js +58 -1
  121. package/lib/commonjs/sync/wire.js.map +1 -0
  122. package/lib/commonjs/types.js +6 -1
  123. package/lib/commonjs/types.js.map +1 -0
  124. package/lib/module/blocks/AskBlocks.js +331 -1
  125. package/lib/module/blocks/AskBlocks.js.map +1 -0
  126. package/lib/module/blocks/BlockRenderer.js +257 -1
  127. package/lib/module/blocks/BlockRenderer.js.map +1 -0
  128. package/lib/module/blocks/ChromePrototypes.js +503 -1
  129. package/lib/module/blocks/ChromePrototypes.js.map +1 -0
  130. package/lib/module/blocks/DataBlocks.js +767 -1
  131. package/lib/module/blocks/DataBlocks.js.map +1 -0
  132. package/lib/module/blocks/ExtraBlocks.js +1833 -1
  133. package/lib/module/blocks/ExtraBlocks.js.map +1 -0
  134. package/lib/module/blocks/MediaBlocks.js +151 -1
  135. package/lib/module/blocks/MediaBlocks.js.map +1 -0
  136. package/lib/module/blocks/ReceiptBlocks.js +574 -1
  137. package/lib/module/blocks/ReceiptBlocks.js.map +1 -0
  138. package/lib/module/blocks/blockText.js +55 -0
  139. package/lib/module/blocks/blockText.js.map +1 -0
  140. package/lib/module/blocks/blockText.test.js +53 -0
  141. package/lib/module/blocks/blockText.test.js.map +1 -0
  142. package/lib/module/blocks/context.js +35 -1
  143. package/lib/module/blocks/context.js.map +1 -0
  144. package/lib/module/blocks/icons.js +91 -1
  145. package/lib/module/blocks/icons.js.map +1 -0
  146. package/lib/module/blocks/index.js +8 -1
  147. package/lib/module/blocks/index.js.map +1 -0
  148. package/lib/module/blocks/listRow.test.js +56 -0
  149. package/lib/module/blocks/listRow.test.js.map +1 -0
  150. package/lib/module/blocks/pageState.js +30 -0
  151. package/lib/module/blocks/pageState.js.map +1 -0
  152. package/lib/module/blocks/pageState.test.js +56 -0
  153. package/lib/module/blocks/pageState.test.js.map +1 -0
  154. package/lib/module/blocks/primitives.js +445 -1
  155. package/lib/module/blocks/primitives.js.map +1 -0
  156. package/lib/module/blocks/primitivesIndex.js +5 -1
  157. package/lib/module/blocks/primitivesIndex.js.map +1 -0
  158. package/lib/module/components/ApprovalCard.js +239 -1
  159. package/lib/module/components/ApprovalCard.js.map +1 -0
  160. package/lib/module/components/AskBuoyHeader.js +193 -1
  161. package/lib/module/components/AskBuoyHeader.js.map +1 -0
  162. package/lib/module/components/AskBuoyIcon.js +8 -1
  163. package/lib/module/components/AskBuoyIcon.js.map +1 -0
  164. package/lib/module/components/AskBuoyModal.js +474 -1
  165. package/lib/module/components/AskBuoyModal.js.map +1 -0
  166. package/lib/module/components/AskBuoySettings.js +114 -0
  167. package/lib/module/components/AskBuoySettings.js.map +1 -0
  168. package/lib/module/components/ChangesBar.js +206 -1
  169. package/lib/module/components/ChangesBar.js.map +1 -0
  170. package/lib/module/components/Composer.js +250 -1
  171. package/lib/module/components/Composer.js.map +1 -0
  172. package/lib/module/components/EmptyState.js +156 -1
  173. package/lib/module/components/EmptyState.js.map +1 -0
  174. package/lib/module/components/KeyboardPad.js +75 -0
  175. package/lib/module/components/KeyboardPad.js.map +1 -0
  176. package/lib/module/components/Markdown.js +305 -1
  177. package/lib/module/components/Markdown.js.map +1 -0
  178. package/lib/module/components/MessageList.js +924 -1
  179. package/lib/module/components/MessageList.js.map +1 -0
  180. package/lib/module/components/QueuedMessages.js +140 -0
  181. package/lib/module/components/QueuedMessages.js.map +1 -0
  182. package/lib/module/components/ThinkingStrip.js +218 -0
  183. package/lib/module/components/ThinkingStrip.js.map +1 -0
  184. package/lib/module/components/TypingDots.js +58 -1
  185. package/lib/module/components/TypingDots.js.map +1 -0
  186. package/lib/module/components/markdownParse.js +125 -0
  187. package/lib/module/components/markdownParse.js.map +1 -0
  188. package/lib/module/components/markdownParse.test.js +98 -0
  189. package/lib/module/components/markdownParse.test.js.map +1 -0
  190. package/lib/module/components/useCopyAction.js +46 -0
  191. package/lib/module/components/useCopyAction.js.map +1 -0
  192. package/lib/module/index.js +34 -1
  193. package/lib/module/index.js.map +1 -0
  194. package/lib/module/preset.js +73 -1
  195. package/lib/module/preset.js.map +1 -0
  196. package/lib/module/store/activityGroups.js +103 -0
  197. package/lib/module/store/activityGroups.js.map +1 -0
  198. package/lib/module/store/activityGroups.test.js +77 -0
  199. package/lib/module/store/activityGroups.test.js.map +1 -0
  200. package/lib/module/store/askBuoySettings.js +67 -0
  201. package/lib/module/store/askBuoySettings.js.map +1 -0
  202. package/lib/module/store/askBuoyStore.js +541 -1
  203. package/lib/module/store/askBuoyStore.js.map +1 -0
  204. package/lib/module/store/blockPlacement.js +59 -0
  205. package/lib/module/store/blockPlacement.js.map +1 -0
  206. package/lib/module/store/blockPlacement.test.js +122 -0
  207. package/lib/module/store/blockPlacement.test.js.map +1 -0
  208. package/lib/module/store/queue.test.js +149 -0
  209. package/lib/module/store/queue.test.js.map +1 -0
  210. package/lib/module/store/resetConversation.js +72 -0
  211. package/lib/module/store/resetConversation.js.map +1 -0
  212. package/lib/module/store/restorePending.test.js +62 -0
  213. package/lib/module/store/restorePending.test.js.map +1 -0
  214. package/lib/module/store/restoredIds.test.js +46 -0
  215. package/lib/module/store/restoredIds.test.js.map +1 -0
  216. package/lib/module/store/suggestions.js +49 -0
  217. package/lib/module/store/suggestions.js.map +1 -0
  218. package/lib/module/store/suggestions.test.js +57 -0
  219. package/lib/module/store/suggestions.test.js.map +1 -0
  220. package/lib/module/store/systemLine.test.js +76 -0
  221. package/lib/module/store/systemLine.test.js.map +1 -0
  222. package/lib/module/store/ticketPrompt.js +13 -0
  223. package/lib/module/store/ticketPrompt.js.map +1 -0
  224. package/lib/module/store/traceText.js +75 -0
  225. package/lib/module/store/traceText.js.map +1 -0
  226. package/lib/module/store/traceText.test.js +111 -0
  227. package/lib/module/store/traceText.test.js.map +1 -0
  228. package/lib/module/store/transcriptPersistence.js +287 -0
  229. package/lib/module/store/transcriptPersistence.js.map +1 -0
  230. package/lib/module/store/transcriptPersistence.test.js +332 -0
  231. package/lib/module/store/transcriptPersistence.test.js.map +1 -0
  232. package/lib/module/store/turnRendering.test.js +150 -0
  233. package/lib/module/store/turnRendering.test.js.map +1 -0
  234. package/lib/module/store/useAskBuoy.js +616 -1
  235. package/lib/module/store/useAskBuoy.js.map +1 -0
  236. package/lib/module/store/useAskBuoySettings.js +9 -0
  237. package/lib/module/store/useAskBuoySettings.js.map +1 -0
  238. package/lib/module/sync/askBuoySyncAdapter.js +135 -1
  239. package/lib/module/sync/askBuoySyncAdapter.js.map +1 -0
  240. package/lib/module/sync/askBuoySyncAdapter.test.js +140 -1
  241. package/lib/module/sync/askBuoySyncAdapter.test.js.map +1 -0
  242. package/lib/module/sync/wire.js +47 -1
  243. package/lib/module/sync/wire.js.map +1 -0
  244. package/lib/module/types.js +4 -1
  245. package/lib/module/types.js.map +1 -0
  246. package/lib/typescript/blocks/AskBlocks.d.ts.map +1 -0
  247. package/lib/typescript/blocks/BlockRenderer.d.ts.map +1 -0
  248. package/lib/typescript/blocks/ChromePrototypes.d.ts.map +1 -0
  249. package/lib/typescript/blocks/DataBlocks.d.ts +42 -0
  250. package/lib/typescript/blocks/DataBlocks.d.ts.map +1 -0
  251. package/lib/typescript/blocks/ExtraBlocks.d.ts +29 -2
  252. package/lib/typescript/blocks/ExtraBlocks.d.ts.map +1 -0
  253. package/lib/typescript/blocks/MediaBlocks.d.ts.map +1 -0
  254. package/lib/typescript/blocks/ReceiptBlocks.d.ts.map +1 -0
  255. package/lib/typescript/blocks/blockText.d.ts +14 -0
  256. package/lib/typescript/blocks/blockText.d.ts.map +1 -0
  257. package/lib/typescript/blocks/blockText.test.d.ts +2 -0
  258. package/lib/typescript/blocks/blockText.test.d.ts.map +1 -0
  259. package/lib/typescript/blocks/context.d.ts.map +1 -0
  260. package/lib/typescript/blocks/icons.d.ts.map +1 -0
  261. package/lib/typescript/blocks/index.d.ts.map +1 -0
  262. package/lib/typescript/blocks/listRow.test.d.ts +2 -0
  263. package/lib/typescript/blocks/listRow.test.d.ts.map +1 -0
  264. package/lib/typescript/blocks/pageState.d.ts +23 -0
  265. package/lib/typescript/blocks/pageState.d.ts.map +1 -0
  266. package/lib/typescript/blocks/pageState.test.d.ts +2 -0
  267. package/lib/typescript/blocks/pageState.test.d.ts.map +1 -0
  268. package/lib/typescript/blocks/primitives.d.ts +55 -10
  269. package/lib/typescript/blocks/primitives.d.ts.map +1 -0
  270. package/lib/typescript/blocks/primitivesIndex.d.ts +2 -1
  271. package/lib/typescript/blocks/primitivesIndex.d.ts.map +1 -0
  272. package/lib/typescript/components/ApprovalCard.d.ts.map +1 -0
  273. package/lib/typescript/components/AskBuoyHeader.d.ts +41 -1
  274. package/lib/typescript/components/AskBuoyHeader.d.ts.map +1 -0
  275. package/lib/typescript/components/AskBuoyIcon.d.ts.map +1 -0
  276. package/lib/typescript/components/AskBuoyModal.d.ts.map +1 -0
  277. package/lib/typescript/components/AskBuoySettings.d.ts +2 -0
  278. package/lib/typescript/components/AskBuoySettings.d.ts.map +1 -0
  279. package/lib/typescript/components/ChangesBar.d.ts.map +1 -0
  280. package/lib/typescript/components/Composer.d.ts +16 -1
  281. package/lib/typescript/components/Composer.d.ts.map +1 -0
  282. package/lib/typescript/components/EmptyState.d.ts +5 -1
  283. package/lib/typescript/components/EmptyState.d.ts.map +1 -0
  284. package/lib/typescript/components/KeyboardPad.d.ts +33 -0
  285. package/lib/typescript/components/KeyboardPad.d.ts.map +1 -0
  286. package/lib/typescript/components/Markdown.d.ts +0 -10
  287. package/lib/typescript/components/Markdown.d.ts.map +1 -0
  288. package/lib/typescript/components/MessageList.d.ts +19 -7
  289. package/lib/typescript/components/MessageList.d.ts.map +1 -0
  290. package/lib/typescript/components/QueuedMessages.d.ts +10 -0
  291. package/lib/typescript/components/QueuedMessages.d.ts.map +1 -0
  292. package/lib/typescript/components/ThinkingStrip.d.ts +5 -0
  293. package/lib/typescript/components/ThinkingStrip.d.ts.map +1 -0
  294. package/lib/typescript/components/TypingDots.d.ts.map +1 -0
  295. package/lib/typescript/components/markdownParse.d.ts +49 -0
  296. package/lib/typescript/components/markdownParse.d.ts.map +1 -0
  297. package/lib/typescript/components/markdownParse.test.d.ts +2 -0
  298. package/lib/typescript/components/markdownParse.test.d.ts.map +1 -0
  299. package/lib/typescript/components/useCopyAction.d.ts +5 -0
  300. package/lib/typescript/components/useCopyAction.d.ts.map +1 -0
  301. package/lib/typescript/index.d.ts +5 -0
  302. package/lib/typescript/index.d.ts.map +1 -0
  303. package/lib/typescript/preset.d.ts.map +1 -0
  304. package/lib/typescript/store/activityGroups.d.ts +29 -0
  305. package/lib/typescript/store/activityGroups.d.ts.map +1 -0
  306. package/lib/typescript/store/activityGroups.test.d.ts +2 -0
  307. package/lib/typescript/store/activityGroups.test.d.ts.map +1 -0
  308. package/lib/typescript/store/askBuoySettings.d.ts +44 -0
  309. package/lib/typescript/store/askBuoySettings.d.ts.map +1 -0
  310. package/lib/typescript/store/askBuoyStore.d.ts +216 -18
  311. package/lib/typescript/store/askBuoyStore.d.ts.map +1 -0
  312. package/lib/typescript/store/blockPlacement.d.ts +30 -0
  313. package/lib/typescript/store/blockPlacement.d.ts.map +1 -0
  314. package/lib/typescript/store/blockPlacement.test.d.ts +2 -0
  315. package/lib/typescript/store/blockPlacement.test.d.ts.map +1 -0
  316. package/lib/typescript/store/queue.test.d.ts +2 -0
  317. package/lib/typescript/store/queue.test.d.ts.map +1 -0
  318. package/lib/typescript/store/resetConversation.d.ts +38 -0
  319. package/lib/typescript/store/resetConversation.d.ts.map +1 -0
  320. package/lib/typescript/store/restorePending.test.d.ts +2 -0
  321. package/lib/typescript/store/restorePending.test.d.ts.map +1 -0
  322. package/lib/typescript/store/restoredIds.test.d.ts +2 -0
  323. package/lib/typescript/store/restoredIds.test.d.ts.map +1 -0
  324. package/lib/typescript/store/suggestions.d.ts +32 -0
  325. package/lib/typescript/store/suggestions.d.ts.map +1 -0
  326. package/lib/typescript/store/suggestions.test.d.ts +2 -0
  327. package/lib/typescript/store/suggestions.test.d.ts.map +1 -0
  328. package/lib/typescript/store/systemLine.test.d.ts +2 -0
  329. package/lib/typescript/store/systemLine.test.d.ts.map +1 -0
  330. package/lib/typescript/store/ticketPrompt.d.ts +11 -0
  331. package/lib/typescript/store/ticketPrompt.d.ts.map +1 -0
  332. package/lib/typescript/store/traceText.d.ts +33 -0
  333. package/lib/typescript/store/traceText.d.ts.map +1 -0
  334. package/lib/typescript/store/traceText.test.d.ts +2 -0
  335. package/lib/typescript/store/traceText.test.d.ts.map +1 -0
  336. package/lib/typescript/store/transcriptPersistence.d.ts +79 -0
  337. package/lib/typescript/store/transcriptPersistence.d.ts.map +1 -0
  338. package/lib/typescript/store/transcriptPersistence.test.d.ts +2 -0
  339. package/lib/typescript/store/transcriptPersistence.test.d.ts.map +1 -0
  340. package/lib/typescript/store/turnRendering.test.d.ts +2 -0
  341. package/lib/typescript/store/turnRendering.test.d.ts.map +1 -0
  342. package/lib/typescript/store/useAskBuoy.d.ts +23 -1
  343. package/lib/typescript/store/useAskBuoy.d.ts.map +1 -0
  344. package/lib/typescript/store/useAskBuoySettings.d.ts +3 -0
  345. package/lib/typescript/store/useAskBuoySettings.d.ts.map +1 -0
  346. package/lib/typescript/sync/askBuoySyncAdapter.d.ts +26 -6
  347. package/lib/typescript/sync/askBuoySyncAdapter.d.ts.map +1 -0
  348. package/lib/typescript/sync/askBuoySyncAdapter.test.d.ts.map +1 -0
  349. package/lib/typescript/sync/wire.d.ts.map +1 -0
  350. package/lib/typescript/types.d.ts +24 -1
  351. package/lib/typescript/types.d.ts.map +1 -0
  352. package/package.json +9 -9
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Blocks as plain text — for Copy, and for the ticket draft's own Copy.
5
+ *
6
+ * `transcriptToText` used to serialise prose and tool rows only, so a
7
+ * conversation whose whole point was the finding card at the end pasted into
8
+ * Jira WITHOUT the finding. Covers the kinds that carry facts a person would
9
+ * paste; everything else becomes one line naming what was on screen, so the
10
+ * paste says a card existed rather than silently skipping it.
11
+ */
12
+
13
+ const cellText = c => typeof c === "string" ? c : c.text;
14
+ export function blockToText(block) {
15
+ switch (block.kind) {
16
+ case "finding":
17
+ return [block.title, ...block.evidence.map(e => `${e.label}: ${e.value}`)].join("\n");
18
+ case "keyValue":
19
+ return [block.title, ...block.pairs.map(p => `${p.key}: ${typeof p.value === "string" ? p.value : JSON.stringify(p.value)}`)].filter(Boolean).join("\n");
20
+ case "table":
21
+ {
22
+ const head = block.columns.join(" | ");
23
+ const rows = block.rows.map(r => r.map(cellText).join(" | "));
24
+ const more = block.total && block.total > block.rows.length ? `… ${block.total - block.rows.length} more rows` : null;
25
+ return [block.title, head, ...rows, more].filter(Boolean).join("\n");
26
+ }
27
+ case "list":
28
+ {
29
+ const rows = block.items.map(i => `- ${i.title}${i.subtitle ? ` — ${i.subtitle}` : ""}${i.trailing ? ` (${i.trailing})` : ""}`);
30
+ const more = block.total && block.total > block.items.length ? `… ${block.total - block.items.length} more` : null;
31
+ return [block.title, ...rows, more].filter(Boolean).join("\n");
32
+ }
33
+ case "notice":
34
+ return block.text;
35
+ case "claim":
36
+ return block.text;
37
+ case "diff":
38
+ case "chart":
39
+ case "imageGrid":
40
+ case "requestList":
41
+ case "requestCard":
42
+ case "logList":
43
+ case "crash":
44
+ case "screenElements":
45
+ return `[${block.kind} card${"title" in block && typeof block.title === "string" ? `: ${block.title}` : ""}]`;
46
+ default:
47
+ return null;
48
+ }
49
+ }
50
+
51
+ /** Several blocks, blank-line separated, skipping the ones with nothing to say. */
52
+ export function blocksToText(blocks) {
53
+ return blocks.map(blockToText).filter(t => !!t);
54
+ }
55
+ //# sourceMappingURL=blockText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["cellText","c","text","blockToText","block","kind","title","evidence","map","e","label","value","join","pairs","p","key","JSON","stringify","filter","Boolean","head","columns","rows","r","more","total","length","items","i","subtitle","trailing","blocksToText","blocks","t"],"sourceRoot":"../../../src","sources":["blocks/blockText.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ import { describe, expect, it } from "vitest";
4
+ import { blockToText, blocksToText } from "./blockText";
5
+ describe("blockToText", () => {
6
+ it("writes a finding as title and evidence rows", () => {
7
+ expect(blockToText({
8
+ id: "f1",
9
+ kind: "finding",
10
+ title: "Bag screen empty after /api/bag 500",
11
+ evidence: [{
12
+ label: "Steps",
13
+ value: "Open Bag as user 4412"
14
+ }, {
15
+ label: "Observed",
16
+ value: "empty state, no error shown",
17
+ tone: "danger"
18
+ }]
19
+ })).toBe("Bag screen empty after /api/bag 500\nSteps: Open Bag as user 4412\nObserved: empty state, no error shown");
20
+ });
21
+ it("writes a table with its cut noted", () => {
22
+ expect(blockToText({
23
+ id: "t1",
24
+ kind: "table",
25
+ columns: ["Item", "Qty"],
26
+ rows: [["Charizard", {
27
+ text: "14"
28
+ }]],
29
+ total: 30
30
+ })).toBe("Item | Qty\nCharizard | 14\n… 29 more rows");
31
+ });
32
+ it("names a card it cannot flatten instead of skipping it", () => {
33
+ expect(blockToText({
34
+ id: "d1",
35
+ kind: "diff",
36
+ title: "Bag store",
37
+ before: {},
38
+ after: {}
39
+ })).toBe("[diff card: Bag store]");
40
+ });
41
+ it("drops blocks with nothing to say", () => {
42
+ expect(blocksToText([{
43
+ id: "p",
44
+ kind: "peek"
45
+ }, {
46
+ id: "n",
47
+ kind: "notice",
48
+ tone: "info",
49
+ text: "hi"
50
+ }])).toEqual(["hi"]);
51
+ });
52
+ });
53
+ //# sourceMappingURL=blockText.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["describe","expect","it","blockToText","blocksToText","id","kind","title","evidence","label","value","tone","toBe","columns","rows","text","total","before","after","toEqual"],"sourceRoot":"../../../src","sources":["blocks/blockText.test.ts"],"mappings":";;AAAA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AAE7C,SAASC,WAAW,EAAEC,YAAY,QAAQ,aAAa;AAEvDJ,QAAQ,CAAC,aAAa,EAAE,MAAM;EAC5BE,EAAE,CAAC,6CAA6C,EAAE,MAAM;IACtDD,MAAM,CACJE,WAAW,CAAC;MACVE,EAAE,EAAE,IAAI;MACRC,IAAI,EAAE,SAAS;MACfC,KAAK,EAAE,qCAAqC;MAC5CC,QAAQ,EAAE,CACR;QAAEC,KAAK,EAAE,OAAO;QAAEC,KAAK,EAAE;MAAwB,CAAC,EAClD;QAAED,KAAK,EAAE,UAAU;QAAEC,KAAK,EAAE,6BAA6B;QAAEC,IAAI,EAAE;MAAS,CAAC;IAE/E,CAAC,CACH,CAAC,CAACC,IAAI,CAAC,0GAA0G,CAAC;EACpH,CAAC,CAAC;EAEFV,EAAE,CAAC,mCAAmC,EAAE,MAAM;IAC5CD,MAAM,CACJE,WAAW,CAAC;MACVE,EAAE,EAAE,IAAI;MACRC,IAAI,EAAE,OAAO;MACbO,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;MACxBC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE;QAAEC,IAAI,EAAE;MAAK,CAAC,CAAC,CAAC;MACrCC,KAAK,EAAE;IACT,CAAC,CACH,CAAC,CAACJ,IAAI,CAAC,4CAA4C,CAAC;EACtD,CAAC,CAAC;EAEFV,EAAE,CAAC,uDAAuD,EAAE,MAAM;IAChED,MAAM,CAACE,WAAW,CAAC;MAAEE,EAAE,EAAE,IAAI;MAAEC,IAAI,EAAE,MAAM;MAAEC,KAAK,EAAE,WAAW;MAAEU,MAAM,EAAE,CAAC,CAAC;MAAEC,KAAK,EAAE,CAAC;IAAE,CAAU,CAAC,CAAC,CAACN,IAAI,CACtG,wBACF,CAAC;EACH,CAAC,CAAC;EAEFV,EAAE,CAAC,kCAAkC,EAAE,MAAM;IAC3CD,MAAM,CAACG,YAAY,CAAC,CAAC;MAAEC,EAAE,EAAE,GAAG;MAAEC,IAAI,EAAE;IAAO,CAAC,EAAW;MAAED,EAAE,EAAE,GAAG;MAAEC,IAAI,EAAE,QAAQ;MAAEK,IAAI,EAAE,MAAM;MAAEI,IAAI,EAAE;IAAK,CAAC,CAAC,CAAC,CAAC,CAACI,OAAO,CAAC,CACxH,IAAI,CACL,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -1 +1,35 @@
1
- "use strict";import{createContext,useContext}from"react";import{jsx as _jsx}from"react/jsx-runtime";const noop={answer:()=>{},runAction:()=>{},answered:{},supports:{}},Ctx=createContext(noop);export function BlockHandlersProvider({value:e,children:t}){return _jsx(Ctx.Provider,{value:e,children:t})}export function useBlockHandlers(){return useContext(Ctx)}export function actionKey(e,t){return`${e}:${t.label}`}
1
+ "use strict";
2
+
3
+ /**
4
+ * How a block talks back to the sheet.
5
+ *
6
+ * Blocks are pure data; everything that happens when one is tapped goes
7
+ * through this context so the same renderers work inside the real transcript,
8
+ * on the example app's review page, and (later) on the desktop with a
9
+ * different set of handlers behind them.
10
+ */
11
+ import { createContext, useContext } from "react";
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ const noop = {
14
+ answer: () => {},
15
+ runAction: () => {},
16
+ answered: {},
17
+ supports: {}
18
+ };
19
+ const Ctx = /*#__PURE__*/createContext(noop);
20
+ export function BlockHandlersProvider({
21
+ value,
22
+ children
23
+ }) {
24
+ return /*#__PURE__*/_jsx(Ctx.Provider, {
25
+ value: value,
26
+ children: children
27
+ });
28
+ }
29
+ export function useBlockHandlers() {
30
+ return useContext(Ctx);
31
+ }
32
+ export function actionKey(blockId, action) {
33
+ return `${blockId}:${action.label}`;
34
+ }
35
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createContext","useContext","jsx","_jsx","noop","answer","runAction","answered","supports","Ctx","BlockHandlersProvider","value","children","Provider","useBlockHandlers","actionKey","blockId","action","label"],"sourceRoot":"../../../src","sources":["blocks/context.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,aAAa,EAAEC,UAAU,QAAwB,OAAO;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAkBlE,MAAMC,IAAmB,GAAG;EAC1BC,MAAM,EAAEA,CAAA,KAAM,CAAC,CAAC;EAChBC,SAAS,EAAEA,CAAA,KAAM,CAAC,CAAC;EACnBC,QAAQ,EAAE,CAAC,CAAC;EACZC,QAAQ,EAAE,CAAC;AACb,CAAC;AAED,MAAMC,GAAG,gBAAGT,aAAa,CAAgBI,IAAI,CAAC;AAE9C,OAAO,SAASM,qBAAqBA,CAAC;EACpCC,KAAK;EACLC;AAIF,CAAC,EAAE;EACD,oBAAOT,IAAA,CAACM,GAAG,CAACI,QAAQ;IAACF,KAAK,EAAEA,KAAM;IAAAC,QAAA,EAAEA;EAAQ,CAAe,CAAC;AAC9D;AAEA,OAAO,SAASE,gBAAgBA,CAAA,EAAkB;EAChD,OAAOb,UAAU,CAACQ,GAAG,CAAC;AACxB;AAEA,OAAO,SAASM,SAASA,CAACC,OAAe,EAAEC,MAAmB,EAAU;EACtE,OAAO,GAAGD,OAAO,IAAIC,MAAM,CAACC,KAAK,EAAE;AACrC","ignoreList":[]}
@@ -1 +1,91 @@
1
- "use strict";import{View,StyleSheet}from"react-native";import{AlertTriangle,Check,Clock,Database,Eye,Globe,Image as ImageIcon,Info,Layers,Navigation,night,User}from"@buoy-gg/shared-ui";import{jsx as _jsx}from"react/jsx-runtime";export function BlockIcon({name:e,size:r=14}){const o=night.color.textSecondary,s=(()=>{switch(e){case"network":return _jsx(Globe,{size:r,color:o});case"storage":return _jsx(Database,{size:r,color:o});case"route":return _jsx(Navigation,{size:r,color:o});case"screen":return _jsx(Eye,{size:r,color:o});case"user":return _jsx(User,{size:r,color:o});case"image":return _jsx(ImageIcon,{size:r,color:o});case"check":return _jsx(Check,{size:r,color:night.color.accent});case"warn":return _jsx(AlertTriangle,{size:r,color:night.color.warning});case"info":return _jsx(Info,{size:r,color:night.color.info});case"store":case"query":return _jsx(Layers,{size:r,color:o});case"clock":return _jsx(Clock,{size:r,color:o})}})();return _jsx(View,{style:styles.wrap,children:s})}const styles=StyleSheet.create({wrap:{width:24,height:24,borderRadius:6,backgroundColor:night.color.fill,alignItems:"center",justifyContent:"center"}});
1
+ "use strict";
2
+
3
+ /** The small named icons a block may ask for. One place, one size. */
4
+ import { View, StyleSheet } from "react-native";
5
+ import { AlertTriangle, Check, Clock, Database, Eye, Globe, Image as ImageIcon, Info, Layers, Navigation, night, User } from "@buoy-gg/shared-ui";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ export function BlockIcon({
8
+ name,
9
+ size = 14
10
+ }) {
11
+ const c = night.color.textSecondary;
12
+ const icon = (() => {
13
+ switch (name) {
14
+ case "network":
15
+ return /*#__PURE__*/_jsx(Globe, {
16
+ size: size,
17
+ color: c
18
+ });
19
+ case "storage":
20
+ return /*#__PURE__*/_jsx(Database, {
21
+ size: size,
22
+ color: c
23
+ });
24
+ case "route":
25
+ return /*#__PURE__*/_jsx(Navigation, {
26
+ size: size,
27
+ color: c
28
+ });
29
+ case "screen":
30
+ return /*#__PURE__*/_jsx(Eye, {
31
+ size: size,
32
+ color: c
33
+ });
34
+ case "user":
35
+ return /*#__PURE__*/_jsx(User, {
36
+ size: size,
37
+ color: c
38
+ });
39
+ case "image":
40
+ return /*#__PURE__*/_jsx(ImageIcon, {
41
+ size: size,
42
+ color: c
43
+ });
44
+ case "check":
45
+ return /*#__PURE__*/_jsx(Check, {
46
+ size: size,
47
+ color: night.color.accent
48
+ });
49
+ case "warn":
50
+ return /*#__PURE__*/_jsx(AlertTriangle, {
51
+ size: size,
52
+ color: night.color.warning
53
+ });
54
+ case "info":
55
+ return /*#__PURE__*/_jsx(Info, {
56
+ size: size,
57
+ color: night.color.info
58
+ });
59
+ case "store":
60
+ return /*#__PURE__*/_jsx(Layers, {
61
+ size: size,
62
+ color: c
63
+ });
64
+ case "query":
65
+ return /*#__PURE__*/_jsx(Layers, {
66
+ size: size,
67
+ color: c
68
+ });
69
+ case "clock":
70
+ return /*#__PURE__*/_jsx(Clock, {
71
+ size: size,
72
+ color: c
73
+ });
74
+ }
75
+ })();
76
+ return /*#__PURE__*/_jsx(View, {
77
+ style: styles.wrap,
78
+ children: icon
79
+ });
80
+ }
81
+ const styles = StyleSheet.create({
82
+ wrap: {
83
+ width: 24,
84
+ height: 24,
85
+ borderRadius: 6,
86
+ backgroundColor: night.color.fill,
87
+ alignItems: "center",
88
+ justifyContent: "center"
89
+ }
90
+ });
91
+ //# sourceMappingURL=icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["View","StyleSheet","AlertTriangle","Check","Clock","Database","Eye","Globe","Image","ImageIcon","Info","Layers","Navigation","night","User","jsx","_jsx","BlockIcon","name","size","c","color","textSecondary","icon","accent","warning","info","style","styles","wrap","children","create","width","height","borderRadius","backgroundColor","fill","alignItems","justifyContent"],"sourceRoot":"../../../src","sources":["blocks/icons.tsx"],"mappings":";;AAAA;AACA,SAASA,IAAI,EAAEC,UAAU,QAAQ,cAAc;AAC/C,SAASC,aAAa,EAAEC,KAAK,EAAEC,KAAK,EAAEC,QAAQ,EAAEC,GAAG,EAAEC,KAAK,EAAEC,KAAK,IAAIC,SAAS,EAAEC,IAAI,EAAEC,MAAM,EAAEC,UAAU,EAAEC,KAAK,EAAEC,IAAI,QAAQ,oBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGlJ,OAAO,SAASC,SAASA,CAAC;EAAEC,IAAI;EAAEC,IAAI,GAAG;AAAsC,CAAC,EAAE;EAChF,MAAMC,CAAC,GAAGP,KAAK,CAACQ,KAAK,CAACC,aAAa;EACnC,MAAMC,IAAI,GAAG,CAAC,MAAM;IAClB,QAAQL,IAAI;MACV,KAAK,SAAS;QAAE,oBAAOF,IAAA,CAACT,KAAK;UAACY,IAAI,EAAEA,IAAK;UAACE,KAAK,EAAED;QAAE,CAAE,CAAC;MACtD,KAAK,SAAS;QAAE,oBAAOJ,IAAA,CAACX,QAAQ;UAACc,IAAI,EAAEA,IAAK;UAACE,KAAK,EAAED;QAAE,CAAE,CAAC;MACzD,KAAK,OAAO;QAAE,oBAAOJ,IAAA,CAACJ,UAAU;UAACO,IAAI,EAAEA,IAAK;UAACE,KAAK,EAAED;QAAE,CAAE,CAAC;MACzD,KAAK,QAAQ;QAAE,oBAAOJ,IAAA,CAACV,GAAG;UAACa,IAAI,EAAEA,IAAK;UAACE,KAAK,EAAED;QAAE,CAAE,CAAC;MACnD,KAAK,MAAM;QAAE,oBAAOJ,IAAA,CAACF,IAAI;UAACK,IAAI,EAAEA,IAAK;UAACE,KAAK,EAAED;QAAE,CAAE,CAAC;MAClD,KAAK,OAAO;QAAE,oBAAOJ,IAAA,CAACP,SAAS;UAACU,IAAI,EAAEA,IAAK;UAACE,KAAK,EAAED;QAAE,CAAE,CAAC;MACxD,KAAK,OAAO;QAAE,oBAAOJ,IAAA,CAACb,KAAK;UAACgB,IAAI,EAAEA,IAAK;UAACE,KAAK,EAAER,KAAK,CAACQ,KAAK,CAACG;QAAO,CAAE,CAAC;MACrE,KAAK,MAAM;QAAE,oBAAOR,IAAA,CAACd,aAAa;UAACiB,IAAI,EAAEA,IAAK;UAACE,KAAK,EAAER,KAAK,CAACQ,KAAK,CAACI;QAAQ,CAAE,CAAC;MAC7E,KAAK,MAAM;QAAE,oBAAOT,IAAA,CAACN,IAAI;UAACS,IAAI,EAAEA,IAAK;UAACE,KAAK,EAAER,KAAK,CAACQ,KAAK,CAACK;QAAK,CAAE,CAAC;MACjE,KAAK,OAAO;QAAE,oBAAOV,IAAA,CAACL,MAAM;UAACQ,IAAI,EAAEA,IAAK;UAACE,KAAK,EAAED;QAAE,CAAE,CAAC;MACrD,KAAK,OAAO;QAAE,oBAAOJ,IAAA,CAACL,MAAM;UAACQ,IAAI,EAAEA,IAAK;UAACE,KAAK,EAAED;QAAE,CAAE,CAAC;MACrD,KAAK,OAAO;QAAE,oBAAOJ,IAAA,CAACZ,KAAK;UAACe,IAAI,EAAEA,IAAK;UAACE,KAAK,EAAED;QAAE,CAAE,CAAC;IACtD;EACF,CAAC,EAAE,CAAC;EACJ,oBAAOJ,IAAA,CAAChB,IAAI;IAAC2B,KAAK,EAAEC,MAAM,CAACC,IAAK;IAAAC,QAAA,EAAEP;EAAI,CAAO,CAAC;AAChD;AAEA,MAAMK,MAAM,GAAG3B,UAAU,CAAC8B,MAAM,CAAC;EAC/BF,IAAI,EAAE;IAAEG,KAAK,EAAE,EAAE;IAAEC,MAAM,EAAE,EAAE;IAAEC,YAAY,EAAE,CAAC;IAAEC,eAAe,EAAEtB,KAAK,CAACQ,KAAK,CAACe,IAAI;IAAEC,UAAU,EAAE,QAAQ;IAAEC,cAAc,EAAE;EAAS;AACpI,CAAC,CAAC","ignoreList":[]}
@@ -1 +1,8 @@
1
- "use strict";export{BlockRenderer}from"./BlockRenderer";export{BlockHandlersProvider,useBlockHandlers}from"./context";export{Card,ActionRow,ProvenanceBadge}from"./primitives";export{MessageActions,ReasoningStrip,ElapsedRow,QueuedComposer,ReloadDivider,Timestamp,EditableUserBubble}from"./ChromePrototypes";export{LivePill}from"./ExtraBlocks";
1
+ "use strict";
2
+
3
+ export { BlockRenderer } from "./BlockRenderer";
4
+ export { BlockHandlersProvider, useBlockHandlers } from "./context";
5
+ export { Card, ActionRow, ProvenanceBadge } from "./primitives";
6
+ export { MessageActions, ReasoningStrip, ElapsedRow, QueuedComposer, ReloadDivider, Timestamp, EditableUserBubble } from "./ChromePrototypes";
7
+ export { LivePill } from "./ExtraBlocks";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BlockRenderer","BlockHandlersProvider","useBlockHandlers","Card","ActionRow","ProvenanceBadge","MessageActions","ReasoningStrip","ElapsedRow","QueuedComposer","ReloadDivider","Timestamp","EditableUserBubble","LivePill"],"sourceRoot":"../../../src","sources":["blocks/index.ts"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,qBAAqB,EAAEC,gBAAgB,QAA4B,WAAW;AACvF,SAASC,IAAI,EAAEC,SAAS,EAAEC,eAAe,QAAQ,cAAc;AAC/D,SAASC,cAAc,EAAEC,cAAc,EAAEC,UAAU,EAAEC,cAAc,EAAEC,aAAa,EAAEC,SAAS,EAAEC,kBAAkB,QAAQ,oBAAoB;AAC7I,SAASC,QAAQ,QAAQ,eAAe","ignoreList":[]}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ import { describe, expect, it } from "vitest";
4
+ import { listRowBehaviour } from "./DataBlocks";
5
+
6
+ /**
7
+ * A list row can carry a picture AND an action, and both want the tap. These
8
+ * are the rules that keep them apart — see `listRowBehaviour`.
9
+ */
10
+ describe("listRowBehaviour", () => {
11
+ it("a plain row does nothing on tap", () => {
12
+ expect(listRowBehaviour({})).toEqual({
13
+ canExpand: false,
14
+ rowRunsAction: false,
15
+ actionIsOwnControl: false
16
+ });
17
+ });
18
+ it("a row with a picture opens it", () => {
19
+ expect(listRowBehaviour({
20
+ image: "https://x/1.png"
21
+ })).toEqual({
22
+ canExpand: true,
23
+ rowRunsAction: false,
24
+ actionIsOwnControl: false
25
+ });
26
+ });
27
+ it("a row with only an action keeps running it from the whole row", () => {
28
+ expect(listRowBehaviour({
29
+ action: {
30
+ label: "Retry",
31
+ send: "retry"
32
+ }
33
+ })).toEqual({
34
+ canExpand: false,
35
+ rowRunsAction: true,
36
+ actionIsOwnControl: false
37
+ });
38
+ });
39
+ it("with BOTH, the body opens the picture and the action gets its own control", () => {
40
+ const b = listRowBehaviour({
41
+ image: "https://x/1.png",
42
+ action: {
43
+ label: "Retry",
44
+ send: "retry"
45
+ }
46
+ });
47
+ expect(b).toEqual({
48
+ canExpand: true,
49
+ rowRunsAction: false,
50
+ actionIsOwnControl: true
51
+ });
52
+ // The row body must never be the action's target — that is the whole point.
53
+ expect(b.rowRunsAction).toBe(false);
54
+ });
55
+ });
56
+ //# sourceMappingURL=listRow.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["describe","expect","it","listRowBehaviour","toEqual","canExpand","rowRunsAction","actionIsOwnControl","image","action","label","send","b","toBe"],"sourceRoot":"../../../src","sources":["blocks/listRow.test.ts"],"mappings":";;AAAA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AAE7C,SAASC,gBAAgB,QAAQ,cAAc;;AAE/C;AACA;AACA;AACA;AACAH,QAAQ,CAAC,kBAAkB,EAAE,MAAM;EACjCE,EAAE,CAAC,iCAAiC,EAAE,MAAM;IAC1CD,MAAM,CAACE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAACC,OAAO,CAAC;MACnCC,SAAS,EAAE,KAAK;MAChBC,aAAa,EAAE,KAAK;MACpBC,kBAAkB,EAAE;IACtB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFL,EAAE,CAAC,+BAA+B,EAAE,MAAM;IACxCD,MAAM,CAACE,gBAAgB,CAAC;MAAEK,KAAK,EAAE;IAAkB,CAAC,CAAC,CAAC,CAACJ,OAAO,CAAC;MAC7DC,SAAS,EAAE,IAAI;MACfC,aAAa,EAAE,KAAK;MACpBC,kBAAkB,EAAE;IACtB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFL,EAAE,CAAC,+DAA+D,EAAE,MAAM;IACxED,MAAM,CAACE,gBAAgB,CAAC;MAAEM,MAAM,EAAE;QAAEC,KAAK,EAAE,OAAO;QAAEC,IAAI,EAAE;MAAQ;IAAE,CAAC,CAAC,CAAC,CAACP,OAAO,CAAC;MAC9EC,SAAS,EAAE,KAAK;MAChBC,aAAa,EAAE,IAAI;MACnBC,kBAAkB,EAAE;IACtB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFL,EAAE,CAAC,2EAA2E,EAAE,MAAM;IACpF,MAAMU,CAAC,GAAGT,gBAAgB,CAAC;MAAEK,KAAK,EAAE,iBAAiB;MAAEC,MAAM,EAAE;QAAEC,KAAK,EAAE,OAAO;QAAEC,IAAI,EAAE;MAAQ;IAAE,CAAC,CAAC;IACnGV,MAAM,CAACW,CAAC,CAAC,CAACR,OAAO,CAAC;MAAEC,SAAS,EAAE,IAAI;MAAEC,aAAa,EAAE,KAAK;MAAEC,kBAAkB,EAAE;IAAK,CAAC,CAAC;IACtF;IACAN,MAAM,CAACW,CAAC,CAACN,aAAa,CAAC,CAACO,IAAI,CAAC,KAAK,CAAC;EACrC,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * The arithmetic behind a block's "+N more" footer, separated from the hook so
5
+ * it can be tested without a renderer.
6
+ *
7
+ * The rule that matters: a control is offered ONLY when it changes what is on
8
+ * screen. The previous version derived "+N more" from a `total` the source
9
+ * reported while deriving the tap target from the array actually in hand, so a
10
+ * block holding five items and claiming six rendered a "+1 more" with nothing
11
+ * to reveal — a button that did nothing when tapped. This takes a count and a
12
+ * limit and nothing else, so `canExpand` is the same fact as `hidden > 0`.
13
+ */
14
+
15
+ export function pageState(count, cap, limit, step) {
16
+ const shown = Math.min(limit, count);
17
+ const hidden = Math.max(0, count - shown);
18
+ // A block can be re-rendered in place with a shorter list than the one the
19
+ // limit was raised for; collapsing back to a cap nothing exceeds would move
20
+ // nothing, so it is not offered.
21
+ const expanded = limit > cap && count > cap;
22
+ return {
23
+ hidden,
24
+ next: Math.min(hidden, step),
25
+ expanded,
26
+ canExpand: hidden > 0,
27
+ canCollapse: expanded
28
+ };
29
+ }
30
+ //# sourceMappingURL=pageState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["pageState","count","cap","limit","step","shown","Math","min","hidden","max","expanded","next","canExpand","canCollapse"],"sourceRoot":"../../../src","sources":["blocks/pageState.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAYA,OAAO,SAASA,SAASA,CAACC,KAAa,EAAEC,GAAW,EAAEC,KAAa,EAAEC,IAAY,EAAa;EAC5F,MAAMC,KAAK,GAAGC,IAAI,CAACC,GAAG,CAACJ,KAAK,EAAEF,KAAK,CAAC;EACpC,MAAMO,MAAM,GAAGF,IAAI,CAACG,GAAG,CAAC,CAAC,EAAER,KAAK,GAAGI,KAAK,CAAC;EACzC;EACA;EACA;EACA,MAAMK,QAAQ,GAAGP,KAAK,GAAGD,GAAG,IAAID,KAAK,GAAGC,GAAG;EAC3C,OAAO;IACLM,MAAM;IACNG,IAAI,EAAEL,IAAI,CAACC,GAAG,CAACC,MAAM,EAAEJ,IAAI,CAAC;IAC5BM,QAAQ;IACRE,SAAS,EAAEJ,MAAM,GAAG,CAAC;IACrBK,WAAW,EAAEH;EACf,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * The "+N more" footer's arithmetic.
5
+ *
6
+ * The bug this covers: a list block showed "+1 more" that did nothing when
7
+ * tapped. The count came from the `total` the model reported, the tap target
8
+ * came from the array actually in hand, and the two disagreed — so the footer
9
+ * advertised a row that was never sent. Every case below is about a control
10
+ * being offered if and only if it changes the screen.
11
+ */
12
+ import { describe, expect, it } from "vitest";
13
+ import { pageState } from "./pageState";
14
+ const CAP = 10;
15
+ const STEP = 5;
16
+ const at = (count, limit) => pageState(count, CAP, limit, STEP);
17
+ describe("what the footer offers", () => {
18
+ it("offers nothing when everything already fits", () => {
19
+ const s = at(4, CAP);
20
+ expect(s.hidden).toBe(0);
21
+ expect(s.canExpand).toBe(false);
22
+ expect(s.canCollapse).toBe(false);
23
+ });
24
+ it("never offers an expand that reveals nothing", () => {
25
+ // The dead "+1 more" this replaced: the label was drawn from a `total` the
26
+ // source reported, the tap target from the array in hand. `pageState` is
27
+ // given only the array, so a control it offers always moves something.
28
+ expect(at(5, CAP).canExpand).toBe(false);
29
+ });
30
+ it("reveals a page at a time rather than the whole list", () => {
31
+ // 100 items, cap 10: 10 → 15 → 20 → 25, exactly one step per tap.
32
+ expect(at(100, 10).next).toBe(5);
33
+ expect(at(100, 15).next).toBe(5);
34
+ expect(at(100, 20).hidden).toBe(80);
35
+ });
36
+ it("offers only the remainder on the last page", () => {
37
+ // 12 items shown to 10: two left, so the label promises two, not five.
38
+ expect(at(12, 10).next).toBe(2);
39
+ expect(at(12, 12).canExpand).toBe(false);
40
+ });
41
+ it("offers the way back only once something is expanded", () => {
42
+ expect(at(100, 10).canCollapse).toBe(false);
43
+ expect(at(100, 15).canCollapse).toBe(true);
44
+ expect(at(100, 15).expanded).toBe(true);
45
+ });
46
+ it("does not offer a collapse that moves nothing", () => {
47
+ // A block re-rendered in place with a shorter list than the limit was
48
+ // raised for: 3 items under a limit of 20. Folding back to 10 would look
49
+ // identical, so it is not offered.
50
+ const s = at(3, 20);
51
+ expect(s.canCollapse).toBe(false);
52
+ expect(s.expanded).toBe(false);
53
+ expect(s.hidden).toBe(0);
54
+ });
55
+ });
56
+ //# sourceMappingURL=pageState.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["describe","expect","it","pageState","CAP","STEP","at","count","limit","s","hidden","toBe","canExpand","canCollapse","next","expanded"],"sourceRoot":"../../../src","sources":["blocks/pageState.test.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AAE7C,SAASC,SAAS,QAAQ,aAAa;AAEvC,MAAMC,GAAG,GAAG,EAAE;AACd,MAAMC,IAAI,GAAG,CAAC;AACd,MAAMC,EAAE,GAAGA,CAACC,KAAa,EAAEC,KAAa,KAAKL,SAAS,CAACI,KAAK,EAAEH,GAAG,EAAEI,KAAK,EAAEH,IAAI,CAAC;AAE/EL,QAAQ,CAAC,wBAAwB,EAAE,MAAM;EACvCE,EAAE,CAAC,6CAA6C,EAAE,MAAM;IACtD,MAAMO,CAAC,GAAGH,EAAE,CAAC,CAAC,EAAEF,GAAG,CAAC;IACpBH,MAAM,CAACQ,CAAC,CAACC,MAAM,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC;IACxBV,MAAM,CAACQ,CAAC,CAACG,SAAS,CAAC,CAACD,IAAI,CAAC,KAAK,CAAC;IAC/BV,MAAM,CAACQ,CAAC,CAACI,WAAW,CAAC,CAACF,IAAI,CAAC,KAAK,CAAC;EACnC,CAAC,CAAC;EAEFT,EAAE,CAAC,6CAA6C,EAAE,MAAM;IACtD;IACA;IACA;IACAD,MAAM,CAACK,EAAE,CAAC,CAAC,EAAEF,GAAG,CAAC,CAACQ,SAAS,CAAC,CAACD,IAAI,CAAC,KAAK,CAAC;EAC1C,CAAC,CAAC;EAEFT,EAAE,CAAC,qDAAqD,EAAE,MAAM;IAC9D;IACAD,MAAM,CAACK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAACQ,IAAI,CAAC,CAACH,IAAI,CAAC,CAAC,CAAC;IAChCV,MAAM,CAACK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAACQ,IAAI,CAAC,CAACH,IAAI,CAAC,CAAC,CAAC;IAChCV,MAAM,CAACK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAACI,MAAM,CAAC,CAACC,IAAI,CAAC,EAAE,CAAC;EACrC,CAAC,CAAC;EAEFT,EAAE,CAAC,4CAA4C,EAAE,MAAM;IACrD;IACAD,MAAM,CAACK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAACQ,IAAI,CAAC,CAACH,IAAI,CAAC,CAAC,CAAC;IAC/BV,MAAM,CAACK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAACM,SAAS,CAAC,CAACD,IAAI,CAAC,KAAK,CAAC;EAC1C,CAAC,CAAC;EAEFT,EAAE,CAAC,qDAAqD,EAAE,MAAM;IAC9DD,MAAM,CAACK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAACO,WAAW,CAAC,CAACF,IAAI,CAAC,KAAK,CAAC;IAC3CV,MAAM,CAACK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAACO,WAAW,CAAC,CAACF,IAAI,CAAC,IAAI,CAAC;IAC1CV,MAAM,CAACK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAACS,QAAQ,CAAC,CAACJ,IAAI,CAAC,IAAI,CAAC;EACzC,CAAC,CAAC;EAEFT,EAAE,CAAC,8CAA8C,EAAE,MAAM;IACvD;IACA;IACA;IACA,MAAMO,CAAC,GAAGH,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IACnBL,MAAM,CAACQ,CAAC,CAACI,WAAW,CAAC,CAACF,IAAI,CAAC,KAAK,CAAC;IACjCV,MAAM,CAACQ,CAAC,CAACM,QAAQ,CAAC,CAACJ,IAAI,CAAC,KAAK,CAAC;IAC9BV,MAAM,CAACQ,CAAC,CAACC,MAAM,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC;EAC1B,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}