@buoy-gg/ask-buoy 7.0.34 → 7.0.35

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 (239) hide show
  1. package/README.md +1 -1
  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 +250 -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 +688 -1
  9. package/lib/commonjs/blocks/DataBlocks.js.map +1 -0
  10. package/lib/commonjs/blocks/ExtraBlocks.js +1854 -1
  11. package/lib/commonjs/blocks/ExtraBlocks.js.map +1 -0
  12. package/lib/commonjs/blocks/MediaBlocks.js +140 -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/context.js +42 -1
  17. package/lib/commonjs/blocks/context.js.map +1 -0
  18. package/lib/commonjs/blocks/icons.js +96 -1
  19. package/lib/commonjs/blocks/icons.js.map +1 -0
  20. package/lib/commonjs/blocks/index.js +95 -1
  21. package/lib/commonjs/blocks/index.js.map +1 -0
  22. package/lib/commonjs/blocks/listRow.test.js +55 -0
  23. package/lib/commonjs/blocks/listRow.test.js.map +1 -0
  24. package/lib/commonjs/blocks/pageState.js +34 -0
  25. package/lib/commonjs/blocks/pageState.js.map +1 -0
  26. package/lib/commonjs/blocks/pageState.test.js +57 -0
  27. package/lib/commonjs/blocks/pageState.test.js.map +1 -0
  28. package/lib/commonjs/blocks/primitives.js +401 -1
  29. package/lib/commonjs/blocks/primitives.js.map +1 -0
  30. package/lib/commonjs/blocks/primitivesIndex.js +62 -1
  31. package/lib/commonjs/blocks/primitivesIndex.js.map +1 -0
  32. package/lib/commonjs/components/ApprovalCard.js +140 -1
  33. package/lib/commonjs/components/ApprovalCard.js.map +1 -0
  34. package/lib/commonjs/components/AskBuoyHeader.js +164 -1
  35. package/lib/commonjs/components/AskBuoyHeader.js.map +1 -0
  36. package/lib/commonjs/components/AskBuoyIcon.js +19 -1
  37. package/lib/commonjs/components/AskBuoyIcon.js.map +1 -0
  38. package/lib/commonjs/components/AskBuoyModal.js +353 -1
  39. package/lib/commonjs/components/AskBuoyModal.js.map +1 -0
  40. package/lib/commonjs/components/AskBuoySettings.js +69 -0
  41. package/lib/commonjs/components/AskBuoySettings.js.map +1 -0
  42. package/lib/commonjs/components/ChangesBar.js +211 -1
  43. package/lib/commonjs/components/ChangesBar.js.map +1 -0
  44. package/lib/commonjs/components/Composer.js +175 -1
  45. package/lib/commonjs/components/Composer.js.map +1 -0
  46. package/lib/commonjs/components/EmptyState.js +154 -1
  47. package/lib/commonjs/components/EmptyState.js.map +1 -0
  48. package/lib/commonjs/components/Markdown.js +252 -1
  49. package/lib/commonjs/components/Markdown.js.map +1 -0
  50. package/lib/commonjs/components/MessageList.js +683 -1
  51. package/lib/commonjs/components/MessageList.js.map +1 -0
  52. package/lib/commonjs/components/ThinkingStrip.js +223 -0
  53. package/lib/commonjs/components/ThinkingStrip.js.map +1 -0
  54. package/lib/commonjs/components/TypingDots.js +63 -1
  55. package/lib/commonjs/components/TypingDots.js.map +1 -0
  56. package/lib/commonjs/components/useCopyAction.js +50 -0
  57. package/lib/commonjs/components/useCopyAction.js.map +1 -0
  58. package/lib/commonjs/index.js +252 -1
  59. package/lib/commonjs/index.js.map +1 -0
  60. package/lib/commonjs/preset.js +90 -1
  61. package/lib/commonjs/preset.js.map +1 -0
  62. package/lib/commonjs/store/askBuoySettings.js +67 -0
  63. package/lib/commonjs/store/askBuoySettings.js.map +1 -0
  64. package/lib/commonjs/store/askBuoyStore.js +365 -1
  65. package/lib/commonjs/store/askBuoyStore.js.map +1 -0
  66. package/lib/commonjs/store/restoredIds.test.js +47 -0
  67. package/lib/commonjs/store/restoredIds.test.js.map +1 -0
  68. package/lib/commonjs/store/traceText.js +81 -0
  69. package/lib/commonjs/store/traceText.js.map +1 -0
  70. package/lib/commonjs/store/traceText.test.js +112 -0
  71. package/lib/commonjs/store/traceText.test.js.map +1 -0
  72. package/lib/commonjs/store/transcriptPersistence.js +208 -0
  73. package/lib/commonjs/store/transcriptPersistence.js.map +1 -0
  74. package/lib/commonjs/store/transcriptPersistence.test.js +185 -0
  75. package/lib/commonjs/store/transcriptPersistence.test.js.map +1 -0
  76. package/lib/commonjs/store/useAskBuoy.js +400 -1
  77. package/lib/commonjs/store/useAskBuoy.js.map +1 -0
  78. package/lib/commonjs/store/useAskBuoySettings.js +14 -0
  79. package/lib/commonjs/store/useAskBuoySettings.js.map +1 -0
  80. package/lib/commonjs/sync/askBuoySyncAdapter.js +119 -1
  81. package/lib/commonjs/sync/askBuoySyncAdapter.js.map +1 -0
  82. package/lib/commonjs/sync/askBuoySyncAdapter.test.js +141 -1
  83. package/lib/commonjs/sync/askBuoySyncAdapter.test.js.map +1 -0
  84. package/lib/commonjs/sync/wire.js +58 -1
  85. package/lib/commonjs/sync/wire.js.map +1 -0
  86. package/lib/commonjs/types.js +6 -1
  87. package/lib/commonjs/types.js.map +1 -0
  88. package/lib/module/blocks/AskBlocks.js +331 -1
  89. package/lib/module/blocks/AskBlocks.js.map +1 -0
  90. package/lib/module/blocks/BlockRenderer.js +245 -1
  91. package/lib/module/blocks/BlockRenderer.js.map +1 -0
  92. package/lib/module/blocks/ChromePrototypes.js +503 -1
  93. package/lib/module/blocks/ChromePrototypes.js.map +1 -0
  94. package/lib/module/blocks/DataBlocks.js +674 -1
  95. package/lib/module/blocks/DataBlocks.js.map +1 -0
  96. package/lib/module/blocks/ExtraBlocks.js +1827 -1
  97. package/lib/module/blocks/ExtraBlocks.js.map +1 -0
  98. package/lib/module/blocks/MediaBlocks.js +135 -1
  99. package/lib/module/blocks/MediaBlocks.js.map +1 -0
  100. package/lib/module/blocks/ReceiptBlocks.js +574 -1
  101. package/lib/module/blocks/ReceiptBlocks.js.map +1 -0
  102. package/lib/module/blocks/context.js +35 -1
  103. package/lib/module/blocks/context.js.map +1 -0
  104. package/lib/module/blocks/icons.js +91 -1
  105. package/lib/module/blocks/icons.js.map +1 -0
  106. package/lib/module/blocks/index.js +8 -1
  107. package/lib/module/blocks/index.js.map +1 -0
  108. package/lib/module/blocks/listRow.test.js +56 -0
  109. package/lib/module/blocks/listRow.test.js.map +1 -0
  110. package/lib/module/blocks/pageState.js +30 -0
  111. package/lib/module/blocks/pageState.js.map +1 -0
  112. package/lib/module/blocks/pageState.test.js +56 -0
  113. package/lib/module/blocks/pageState.test.js.map +1 -0
  114. package/lib/module/blocks/primitives.js +389 -1
  115. package/lib/module/blocks/primitives.js.map +1 -0
  116. package/lib/module/blocks/primitivesIndex.js +5 -1
  117. package/lib/module/blocks/primitivesIndex.js.map +1 -0
  118. package/lib/module/components/ApprovalCard.js +135 -1
  119. package/lib/module/components/ApprovalCard.js.map +1 -0
  120. package/lib/module/components/AskBuoyHeader.js +161 -1
  121. package/lib/module/components/AskBuoyHeader.js.map +1 -0
  122. package/lib/module/components/AskBuoyIcon.js +8 -1
  123. package/lib/module/components/AskBuoyIcon.js.map +1 -0
  124. package/lib/module/components/AskBuoyModal.js +348 -1
  125. package/lib/module/components/AskBuoyModal.js.map +1 -0
  126. package/lib/module/components/AskBuoySettings.js +64 -0
  127. package/lib/module/components/AskBuoySettings.js.map +1 -0
  128. package/lib/module/components/ChangesBar.js +206 -1
  129. package/lib/module/components/ChangesBar.js.map +1 -0
  130. package/lib/module/components/Composer.js +170 -1
  131. package/lib/module/components/Composer.js.map +1 -0
  132. package/lib/module/components/EmptyState.js +149 -1
  133. package/lib/module/components/EmptyState.js.map +1 -0
  134. package/lib/module/components/Markdown.js +246 -1
  135. package/lib/module/components/Markdown.js.map +1 -0
  136. package/lib/module/components/MessageList.js +677 -1
  137. package/lib/module/components/MessageList.js.map +1 -0
  138. package/lib/module/components/ThinkingStrip.js +218 -0
  139. package/lib/module/components/ThinkingStrip.js.map +1 -0
  140. package/lib/module/components/TypingDots.js +58 -1
  141. package/lib/module/components/TypingDots.js.map +1 -0
  142. package/lib/module/components/useCopyAction.js +46 -0
  143. package/lib/module/components/useCopyAction.js.map +1 -0
  144. package/lib/module/index.js +34 -1
  145. package/lib/module/index.js.map +1 -0
  146. package/lib/module/preset.js +73 -1
  147. package/lib/module/preset.js.map +1 -0
  148. package/lib/module/store/askBuoySettings.js +62 -0
  149. package/lib/module/store/askBuoySettings.js.map +1 -0
  150. package/lib/module/store/askBuoyStore.js +361 -1
  151. package/lib/module/store/askBuoyStore.js.map +1 -0
  152. package/lib/module/store/restoredIds.test.js +46 -0
  153. package/lib/module/store/restoredIds.test.js.map +1 -0
  154. package/lib/module/store/traceText.js +75 -0
  155. package/lib/module/store/traceText.js.map +1 -0
  156. package/lib/module/store/traceText.test.js +111 -0
  157. package/lib/module/store/traceText.test.js.map +1 -0
  158. package/lib/module/store/transcriptPersistence.js +198 -0
  159. package/lib/module/store/transcriptPersistence.js.map +1 -0
  160. package/lib/module/store/transcriptPersistence.test.js +184 -0
  161. package/lib/module/store/transcriptPersistence.test.js.map +1 -0
  162. package/lib/module/store/useAskBuoy.js +394 -1
  163. package/lib/module/store/useAskBuoy.js.map +1 -0
  164. package/lib/module/store/useAskBuoySettings.js +9 -0
  165. package/lib/module/store/useAskBuoySettings.js.map +1 -0
  166. package/lib/module/sync/askBuoySyncAdapter.js +114 -1
  167. package/lib/module/sync/askBuoySyncAdapter.js.map +1 -0
  168. package/lib/module/sync/askBuoySyncAdapter.test.js +140 -1
  169. package/lib/module/sync/askBuoySyncAdapter.test.js.map +1 -0
  170. package/lib/module/sync/wire.js +47 -1
  171. package/lib/module/sync/wire.js.map +1 -0
  172. package/lib/module/types.js +4 -1
  173. package/lib/module/types.js.map +1 -0
  174. package/lib/typescript/blocks/AskBlocks.d.ts.map +1 -0
  175. package/lib/typescript/blocks/BlockRenderer.d.ts.map +1 -0
  176. package/lib/typescript/blocks/ChromePrototypes.d.ts.map +1 -0
  177. package/lib/typescript/blocks/DataBlocks.d.ts +31 -0
  178. package/lib/typescript/blocks/DataBlocks.d.ts.map +1 -0
  179. package/lib/typescript/blocks/ExtraBlocks.d.ts +11 -0
  180. package/lib/typescript/blocks/ExtraBlocks.d.ts.map +1 -0
  181. package/lib/typescript/blocks/MediaBlocks.d.ts.map +1 -0
  182. package/lib/typescript/blocks/ReceiptBlocks.d.ts.map +1 -0
  183. package/lib/typescript/blocks/context.d.ts.map +1 -0
  184. package/lib/typescript/blocks/icons.d.ts.map +1 -0
  185. package/lib/typescript/blocks/index.d.ts.map +1 -0
  186. package/lib/typescript/blocks/listRow.test.d.ts +2 -0
  187. package/lib/typescript/blocks/listRow.test.d.ts.map +1 -0
  188. package/lib/typescript/blocks/pageState.d.ts +23 -0
  189. package/lib/typescript/blocks/pageState.d.ts.map +1 -0
  190. package/lib/typescript/blocks/pageState.test.d.ts +2 -0
  191. package/lib/typescript/blocks/pageState.test.d.ts.map +1 -0
  192. package/lib/typescript/blocks/primitives.d.ts +39 -9
  193. package/lib/typescript/blocks/primitives.d.ts.map +1 -0
  194. package/lib/typescript/blocks/primitivesIndex.d.ts +2 -1
  195. package/lib/typescript/blocks/primitivesIndex.d.ts.map +1 -0
  196. package/lib/typescript/components/ApprovalCard.d.ts.map +1 -0
  197. package/lib/typescript/components/AskBuoyHeader.d.ts +11 -1
  198. package/lib/typescript/components/AskBuoyHeader.d.ts.map +1 -0
  199. package/lib/typescript/components/AskBuoyIcon.d.ts.map +1 -0
  200. package/lib/typescript/components/AskBuoyModal.d.ts.map +1 -0
  201. package/lib/typescript/components/AskBuoySettings.d.ts +2 -0
  202. package/lib/typescript/components/AskBuoySettings.d.ts.map +1 -0
  203. package/lib/typescript/components/ChangesBar.d.ts.map +1 -0
  204. package/lib/typescript/components/Composer.d.ts.map +1 -0
  205. package/lib/typescript/components/EmptyState.d.ts.map +1 -0
  206. package/lib/typescript/components/Markdown.d.ts.map +1 -0
  207. package/lib/typescript/components/MessageList.d.ts +12 -5
  208. package/lib/typescript/components/MessageList.d.ts.map +1 -0
  209. package/lib/typescript/components/ThinkingStrip.d.ts +5 -0
  210. package/lib/typescript/components/ThinkingStrip.d.ts.map +1 -0
  211. package/lib/typescript/components/TypingDots.d.ts.map +1 -0
  212. package/lib/typescript/components/useCopyAction.d.ts +5 -0
  213. package/lib/typescript/components/useCopyAction.d.ts.map +1 -0
  214. package/lib/typescript/index.d.ts +5 -0
  215. package/lib/typescript/index.d.ts.map +1 -0
  216. package/lib/typescript/preset.d.ts.map +1 -0
  217. package/lib/typescript/store/askBuoySettings.d.ts +22 -0
  218. package/lib/typescript/store/askBuoySettings.d.ts.map +1 -0
  219. package/lib/typescript/store/askBuoyStore.d.ts +74 -13
  220. package/lib/typescript/store/askBuoyStore.d.ts.map +1 -0
  221. package/lib/typescript/store/restoredIds.test.d.ts +2 -0
  222. package/lib/typescript/store/restoredIds.test.d.ts.map +1 -0
  223. package/lib/typescript/store/traceText.d.ts +33 -0
  224. package/lib/typescript/store/traceText.d.ts.map +1 -0
  225. package/lib/typescript/store/traceText.test.d.ts +2 -0
  226. package/lib/typescript/store/traceText.test.d.ts.map +1 -0
  227. package/lib/typescript/store/transcriptPersistence.d.ts +40 -0
  228. package/lib/typescript/store/transcriptPersistence.d.ts.map +1 -0
  229. package/lib/typescript/store/transcriptPersistence.test.d.ts +2 -0
  230. package/lib/typescript/store/transcriptPersistence.test.d.ts.map +1 -0
  231. package/lib/typescript/store/useAskBuoy.d.ts.map +1 -0
  232. package/lib/typescript/store/useAskBuoySettings.d.ts +3 -0
  233. package/lib/typescript/store/useAskBuoySettings.d.ts.map +1 -0
  234. package/lib/typescript/sync/askBuoySyncAdapter.d.ts.map +1 -0
  235. package/lib/typescript/sync/askBuoySyncAdapter.test.d.ts.map +1 -0
  236. package/lib/typescript/sync/wire.d.ts.map +1 -0
  237. package/lib/typescript/types.d.ts +24 -1
  238. package/lib/typescript/types.d.ts.map +1 -0
  239. package/package.json +8 -8
@@ -1 +1,42 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.BlockHandlersProvider=BlockHandlersProvider,exports.actionKey=actionKey,exports.useBlockHandlers=useBlockHandlers;var _react=require("react"),_jsxRuntime=require("react/jsx-runtime");const noop={answer:()=>{},runAction:()=>{},answered:{},supports:{}},Ctx=(0,_react.createContext)(noop);function BlockHandlersProvider({value:e,children:r}){return(0,_jsxRuntime.jsx)(Ctx.Provider,{value:e,children:r})}function useBlockHandlers(){return(0,_react.useContext)(Ctx)}function actionKey(e,r){return`${e}:${r.label}`}
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.BlockHandlersProvider = BlockHandlersProvider;
7
+ exports.actionKey = actionKey;
8
+ exports.useBlockHandlers = useBlockHandlers;
9
+ var _react = require("react");
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ /**
12
+ * How a block talks back to the sheet.
13
+ *
14
+ * Blocks are pure data; everything that happens when one is tapped goes
15
+ * through this context so the same renderers work inside the real transcript,
16
+ * on the example app's review page, and (later) on the desktop with a
17
+ * different set of handlers behind them.
18
+ */
19
+
20
+ const noop = {
21
+ answer: () => {},
22
+ runAction: () => {},
23
+ answered: {},
24
+ supports: {}
25
+ };
26
+ const Ctx = /*#__PURE__*/(0, _react.createContext)(noop);
27
+ function BlockHandlersProvider({
28
+ value,
29
+ children
30
+ }) {
31
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Ctx.Provider, {
32
+ value: value,
33
+ children: children
34
+ });
35
+ }
36
+ function useBlockHandlers() {
37
+ return (0, _react.useContext)(Ctx);
38
+ }
39
+ function actionKey(blockId, action) {
40
+ return `${blockId}:${action.label}`;
41
+ }
42
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_jsxRuntime","noop","answer","runAction","answered","supports","Ctx","createContext","BlockHandlersProvider","value","children","jsx","Provider","useBlockHandlers","useContext","actionKey","blockId","action","label"],"sourceRoot":"../../../src","sources":["blocks/context.tsx"],"mappings":";;;;;;;;AAQA,IAAAA,MAAA,GAAAC,OAAA;AAAkE,IAAAC,WAAA,GAAAD,OAAA;AARlE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAmBA,MAAME,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,gBAAG,IAAAC,oBAAa,EAAgBN,IAAI,CAAC;AAEvC,SAASO,qBAAqBA,CAAC;EACpCC,KAAK;EACLC;AAIF,CAAC,EAAE;EACD,oBAAO,IAAAV,WAAA,CAAAW,GAAA,EAACL,GAAG,CAACM,QAAQ;IAACH,KAAK,EAAEA,KAAM;IAAAC,QAAA,EAAEA;EAAQ,CAAe,CAAC;AAC9D;AAEO,SAASG,gBAAgBA,CAAA,EAAkB;EAChD,OAAO,IAAAC,iBAAU,EAACR,GAAG,CAAC;AACxB;AAEO,SAASS,SAASA,CAACC,OAAe,EAAEC,MAAmB,EAAU;EACtE,OAAO,GAAGD,OAAO,IAAIC,MAAM,CAACC,KAAK,EAAE;AACrC","ignoreList":[]}
@@ -1 +1,96 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.BlockIcon=BlockIcon;var _reactNative=require("react-native"),_sharedUi=require("@buoy-gg/shared-ui"),_jsxRuntime=require("react/jsx-runtime");function BlockIcon({name:e,size:r=14}){const s=_sharedUi.night.color.textSecondary,i=(()=>{switch(e){case"network":return(0,_jsxRuntime.jsx)(_sharedUi.Globe,{size:r,color:s});case"storage":return(0,_jsxRuntime.jsx)(_sharedUi.Database,{size:r,color:s});case"route":return(0,_jsxRuntime.jsx)(_sharedUi.Navigation,{size:r,color:s});case"screen":return(0,_jsxRuntime.jsx)(_sharedUi.Eye,{size:r,color:s});case"user":return(0,_jsxRuntime.jsx)(_sharedUi.User,{size:r,color:s});case"image":return(0,_jsxRuntime.jsx)(_sharedUi.Image,{size:r,color:s});case"check":return(0,_jsxRuntime.jsx)(_sharedUi.Check,{size:r,color:_sharedUi.night.color.accent});case"warn":return(0,_jsxRuntime.jsx)(_sharedUi.AlertTriangle,{size:r,color:_sharedUi.night.color.warning});case"info":return(0,_jsxRuntime.jsx)(_sharedUi.Info,{size:r,color:_sharedUi.night.color.info});case"store":case"query":return(0,_jsxRuntime.jsx)(_sharedUi.Layers,{size:r,color:s});case"clock":return(0,_jsxRuntime.jsx)(_sharedUi.Clock,{size:r,color:s})}})();return(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.wrap,children:i})}const styles=_reactNative.StyleSheet.create({wrap:{width:24,height:24,borderRadius:6,backgroundColor:_sharedUi.night.color.fill,alignItems:"center",justifyContent:"center"}});
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.BlockIcon = BlockIcon;
7
+ var _reactNative = require("react-native");
8
+ var _sharedUi = require("@buoy-gg/shared-ui");
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
+ /** The small named icons a block may ask for. One place, one size. */
11
+
12
+ function BlockIcon({
13
+ name,
14
+ size = 14
15
+ }) {
16
+ const c = _sharedUi.night.color.textSecondary;
17
+ const icon = (() => {
18
+ switch (name) {
19
+ case "network":
20
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Globe, {
21
+ size: size,
22
+ color: c
23
+ });
24
+ case "storage":
25
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Database, {
26
+ size: size,
27
+ color: c
28
+ });
29
+ case "route":
30
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Navigation, {
31
+ size: size,
32
+ color: c
33
+ });
34
+ case "screen":
35
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Eye, {
36
+ size: size,
37
+ color: c
38
+ });
39
+ case "user":
40
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.User, {
41
+ size: size,
42
+ color: c
43
+ });
44
+ case "image":
45
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Image, {
46
+ size: size,
47
+ color: c
48
+ });
49
+ case "check":
50
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Check, {
51
+ size: size,
52
+ color: _sharedUi.night.color.accent
53
+ });
54
+ case "warn":
55
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.AlertTriangle, {
56
+ size: size,
57
+ color: _sharedUi.night.color.warning
58
+ });
59
+ case "info":
60
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Info, {
61
+ size: size,
62
+ color: _sharedUi.night.color.info
63
+ });
64
+ case "store":
65
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Layers, {
66
+ size: size,
67
+ color: c
68
+ });
69
+ case "query":
70
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Layers, {
71
+ size: size,
72
+ color: c
73
+ });
74
+ case "clock":
75
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Clock, {
76
+ size: size,
77
+ color: c
78
+ });
79
+ }
80
+ })();
81
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
82
+ style: styles.wrap,
83
+ children: icon
84
+ });
85
+ }
86
+ const styles = _reactNative.StyleSheet.create({
87
+ wrap: {
88
+ width: 24,
89
+ height: 24,
90
+ borderRadius: 6,
91
+ backgroundColor: _sharedUi.night.color.fill,
92
+ alignItems: "center",
93
+ justifyContent: "center"
94
+ }
95
+ });
96
+ //# sourceMappingURL=icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_sharedUi","_jsxRuntime","BlockIcon","name","size","c","night","color","textSecondary","icon","jsx","Globe","Database","Navigation","Eye","User","Image","Check","accent","AlertTriangle","warning","Info","info","Layers","Clock","View","style","styles","wrap","children","StyleSheet","create","width","height","borderRadius","backgroundColor","fill","alignItems","justifyContent"],"sourceRoot":"../../../src","sources":["blocks/icons.tsx"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AAAkJ,IAAAE,WAAA,GAAAF,OAAA;AAFlJ;;AAKO,SAASG,SAASA,CAAC;EAAEC,IAAI;EAAEC,IAAI,GAAG;AAAsC,CAAC,EAAE;EAChF,MAAMC,CAAC,GAAGC,eAAK,CAACC,KAAK,CAACC,aAAa;EACnC,MAAMC,IAAI,GAAG,CAAC,MAAM;IAClB,QAAQN,IAAI;MACV,KAAK,SAAS;QAAE,oBAAO,IAAAF,WAAA,CAAAS,GAAA,EAACV,SAAA,CAAAW,KAAK;UAACP,IAAI,EAAEA,IAAK;UAACG,KAAK,EAAEF;QAAE,CAAE,CAAC;MACtD,KAAK,SAAS;QAAE,oBAAO,IAAAJ,WAAA,CAAAS,GAAA,EAACV,SAAA,CAAAY,QAAQ;UAACR,IAAI,EAAEA,IAAK;UAACG,KAAK,EAAEF;QAAE,CAAE,CAAC;MACzD,KAAK,OAAO;QAAE,oBAAO,IAAAJ,WAAA,CAAAS,GAAA,EAACV,SAAA,CAAAa,UAAU;UAACT,IAAI,EAAEA,IAAK;UAACG,KAAK,EAAEF;QAAE,CAAE,CAAC;MACzD,KAAK,QAAQ;QAAE,oBAAO,IAAAJ,WAAA,CAAAS,GAAA,EAACV,SAAA,CAAAc,GAAG;UAACV,IAAI,EAAEA,IAAK;UAACG,KAAK,EAAEF;QAAE,CAAE,CAAC;MACnD,KAAK,MAAM;QAAE,oBAAO,IAAAJ,WAAA,CAAAS,GAAA,EAACV,SAAA,CAAAe,IAAI;UAACX,IAAI,EAAEA,IAAK;UAACG,KAAK,EAAEF;QAAE,CAAE,CAAC;MAClD,KAAK,OAAO;QAAE,oBAAO,IAAAJ,WAAA,CAAAS,GAAA,EAACV,SAAA,CAAAgB,KAAS;UAACZ,IAAI,EAAEA,IAAK;UAACG,KAAK,EAAEF;QAAE,CAAE,CAAC;MACxD,KAAK,OAAO;QAAE,oBAAO,IAAAJ,WAAA,CAAAS,GAAA,EAACV,SAAA,CAAAiB,KAAK;UAACb,IAAI,EAAEA,IAAK;UAACG,KAAK,EAAED,eAAK,CAACC,KAAK,CAACW;QAAO,CAAE,CAAC;MACrE,KAAK,MAAM;QAAE,oBAAO,IAAAjB,WAAA,CAAAS,GAAA,EAACV,SAAA,CAAAmB,aAAa;UAACf,IAAI,EAAEA,IAAK;UAACG,KAAK,EAAED,eAAK,CAACC,KAAK,CAACa;QAAQ,CAAE,CAAC;MAC7E,KAAK,MAAM;QAAE,oBAAO,IAAAnB,WAAA,CAAAS,GAAA,EAACV,SAAA,CAAAqB,IAAI;UAACjB,IAAI,EAAEA,IAAK;UAACG,KAAK,EAAED,eAAK,CAACC,KAAK,CAACe;QAAK,CAAE,CAAC;MACjE,KAAK,OAAO;QAAE,oBAAO,IAAArB,WAAA,CAAAS,GAAA,EAACV,SAAA,CAAAuB,MAAM;UAACnB,IAAI,EAAEA,IAAK;UAACG,KAAK,EAAEF;QAAE,CAAE,CAAC;MACrD,KAAK,OAAO;QAAE,oBAAO,IAAAJ,WAAA,CAAAS,GAAA,EAACV,SAAA,CAAAuB,MAAM;UAACnB,IAAI,EAAEA,IAAK;UAACG,KAAK,EAAEF;QAAE,CAAE,CAAC;MACrD,KAAK,OAAO;QAAE,oBAAO,IAAAJ,WAAA,CAAAS,GAAA,EAACV,SAAA,CAAAwB,KAAK;UAACpB,IAAI,EAAEA,IAAK;UAACG,KAAK,EAAEF;QAAE,CAAE,CAAC;IACtD;EACF,CAAC,EAAE,CAAC;EACJ,oBAAO,IAAAJ,WAAA,CAAAS,GAAA,EAACZ,YAAA,CAAA2B,IAAI;IAACC,KAAK,EAAEC,MAAM,CAACC,IAAK;IAAAC,QAAA,EAAEpB;EAAI,CAAO,CAAC;AAChD;AAEA,MAAMkB,MAAM,GAAGG,uBAAU,CAACC,MAAM,CAAC;EAC/BH,IAAI,EAAE;IAAEI,KAAK,EAAE,EAAE;IAAEC,MAAM,EAAE,EAAE;IAAEC,YAAY,EAAE,CAAC;IAAEC,eAAe,EAAE7B,eAAK,CAACC,KAAK,CAAC6B,IAAI;IAAEC,UAAU,EAAE,QAAQ;IAAEC,cAAc,EAAE;EAAS;AACpI,CAAC,CAAC","ignoreList":[]}
@@ -1 +1,95 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"ActionRow",{enumerable:!0,get:function(){return _primitives.ActionRow}}),Object.defineProperty(exports,"BlockHandlersProvider",{enumerable:!0,get:function(){return _context.BlockHandlersProvider}}),Object.defineProperty(exports,"BlockRenderer",{enumerable:!0,get:function(){return _BlockRenderer.BlockRenderer}}),Object.defineProperty(exports,"Card",{enumerable:!0,get:function(){return _primitives.Card}}),Object.defineProperty(exports,"EditableUserBubble",{enumerable:!0,get:function(){return _ChromePrototypes.EditableUserBubble}}),Object.defineProperty(exports,"ElapsedRow",{enumerable:!0,get:function(){return _ChromePrototypes.ElapsedRow}}),Object.defineProperty(exports,"LivePill",{enumerable:!0,get:function(){return _ExtraBlocks.LivePill}}),Object.defineProperty(exports,"MessageActions",{enumerable:!0,get:function(){return _ChromePrototypes.MessageActions}}),Object.defineProperty(exports,"ProvenanceBadge",{enumerable:!0,get:function(){return _primitives.ProvenanceBadge}}),Object.defineProperty(exports,"QueuedComposer",{enumerable:!0,get:function(){return _ChromePrototypes.QueuedComposer}}),Object.defineProperty(exports,"ReasoningStrip",{enumerable:!0,get:function(){return _ChromePrototypes.ReasoningStrip}}),Object.defineProperty(exports,"ReloadDivider",{enumerable:!0,get:function(){return _ChromePrototypes.ReloadDivider}}),Object.defineProperty(exports,"Timestamp",{enumerable:!0,get:function(){return _ChromePrototypes.Timestamp}}),Object.defineProperty(exports,"useBlockHandlers",{enumerable:!0,get:function(){return _context.useBlockHandlers}});var _BlockRenderer=require("./BlockRenderer"),_context=require("./context"),_primitives=require("./primitives"),_ChromePrototypes=require("./ChromePrototypes"),_ExtraBlocks=require("./ExtraBlocks");
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "ActionRow", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _primitives.ActionRow;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "BlockHandlersProvider", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _context.BlockHandlersProvider;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "BlockRenderer", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _BlockRenderer.BlockRenderer;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "Card", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _primitives.Card;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "EditableUserBubble", {
31
+ enumerable: true,
32
+ get: function () {
33
+ return _ChromePrototypes.EditableUserBubble;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "ElapsedRow", {
37
+ enumerable: true,
38
+ get: function () {
39
+ return _ChromePrototypes.ElapsedRow;
40
+ }
41
+ });
42
+ Object.defineProperty(exports, "LivePill", {
43
+ enumerable: true,
44
+ get: function () {
45
+ return _ExtraBlocks.LivePill;
46
+ }
47
+ });
48
+ Object.defineProperty(exports, "MessageActions", {
49
+ enumerable: true,
50
+ get: function () {
51
+ return _ChromePrototypes.MessageActions;
52
+ }
53
+ });
54
+ Object.defineProperty(exports, "ProvenanceBadge", {
55
+ enumerable: true,
56
+ get: function () {
57
+ return _primitives.ProvenanceBadge;
58
+ }
59
+ });
60
+ Object.defineProperty(exports, "QueuedComposer", {
61
+ enumerable: true,
62
+ get: function () {
63
+ return _ChromePrototypes.QueuedComposer;
64
+ }
65
+ });
66
+ Object.defineProperty(exports, "ReasoningStrip", {
67
+ enumerable: true,
68
+ get: function () {
69
+ return _ChromePrototypes.ReasoningStrip;
70
+ }
71
+ });
72
+ Object.defineProperty(exports, "ReloadDivider", {
73
+ enumerable: true,
74
+ get: function () {
75
+ return _ChromePrototypes.ReloadDivider;
76
+ }
77
+ });
78
+ Object.defineProperty(exports, "Timestamp", {
79
+ enumerable: true,
80
+ get: function () {
81
+ return _ChromePrototypes.Timestamp;
82
+ }
83
+ });
84
+ Object.defineProperty(exports, "useBlockHandlers", {
85
+ enumerable: true,
86
+ get: function () {
87
+ return _context.useBlockHandlers;
88
+ }
89
+ });
90
+ var _BlockRenderer = require("./BlockRenderer");
91
+ var _context = require("./context");
92
+ var _primitives = require("./primitives");
93
+ var _ChromePrototypes = require("./ChromePrototypes");
94
+ var _ExtraBlocks = require("./ExtraBlocks");
95
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_BlockRenderer","require","_context","_primitives","_ChromePrototypes","_ExtraBlocks"],"sourceRoot":"../../../src","sources":["blocks/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,iBAAA,GAAAH,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA","ignoreList":[]}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ var _vitest = require("vitest");
4
+ var _DataBlocks = require("./DataBlocks");
5
+ /**
6
+ * A list row can carry a picture AND an action, and both want the tap. These
7
+ * are the rules that keep them apart — see `listRowBehaviour`.
8
+ */
9
+ (0, _vitest.describe)("listRowBehaviour", () => {
10
+ (0, _vitest.it)("a plain row does nothing on tap", () => {
11
+ (0, _vitest.expect)((0, _DataBlocks.listRowBehaviour)({})).toEqual({
12
+ canExpand: false,
13
+ rowRunsAction: false,
14
+ actionIsOwnControl: false
15
+ });
16
+ });
17
+ (0, _vitest.it)("a row with a picture opens it", () => {
18
+ (0, _vitest.expect)((0, _DataBlocks.listRowBehaviour)({
19
+ image: "https://x/1.png"
20
+ })).toEqual({
21
+ canExpand: true,
22
+ rowRunsAction: false,
23
+ actionIsOwnControl: false
24
+ });
25
+ });
26
+ (0, _vitest.it)("a row with only an action keeps running it from the whole row", () => {
27
+ (0, _vitest.expect)((0, _DataBlocks.listRowBehaviour)({
28
+ action: {
29
+ label: "Retry",
30
+ send: "retry"
31
+ }
32
+ })).toEqual({
33
+ canExpand: false,
34
+ rowRunsAction: true,
35
+ actionIsOwnControl: false
36
+ });
37
+ });
38
+ (0, _vitest.it)("with BOTH, the body opens the picture and the action gets its own control", () => {
39
+ const b = (0, _DataBlocks.listRowBehaviour)({
40
+ image: "https://x/1.png",
41
+ action: {
42
+ label: "Retry",
43
+ send: "retry"
44
+ }
45
+ });
46
+ (0, _vitest.expect)(b).toEqual({
47
+ canExpand: true,
48
+ rowRunsAction: false,
49
+ actionIsOwnControl: true
50
+ });
51
+ // The row body must never be the action's target — that is the whole point.
52
+ (0, _vitest.expect)(b.rowRunsAction).toBe(false);
53
+ });
54
+ });
55
+ //# sourceMappingURL=listRow.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_vitest","require","_DataBlocks","describe","it","expect","listRowBehaviour","toEqual","canExpand","rowRunsAction","actionIsOwnControl","image","action","label","send","b","toBe"],"sourceRoot":"../../../src","sources":["blocks/listRow.test.ts"],"mappings":";;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAD,OAAA;AAEA;AACA;AACA;AACA;AACA,IAAAE,gBAAQ,EAAC,kBAAkB,EAAE,MAAM;EACjC,IAAAC,UAAE,EAAC,iCAAiC,EAAE,MAAM;IAC1C,IAAAC,cAAM,EAAC,IAAAC,4BAAgB,EAAC,CAAC,CAAC,CAAC,CAAC,CAACC,OAAO,CAAC;MACnCC,SAAS,EAAE,KAAK;MAChBC,aAAa,EAAE,KAAK;MACpBC,kBAAkB,EAAE;IACtB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,IAAAN,UAAE,EAAC,+BAA+B,EAAE,MAAM;IACxC,IAAAC,cAAM,EAAC,IAAAC,4BAAgB,EAAC;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;EAEF,IAAAN,UAAE,EAAC,+DAA+D,EAAE,MAAM;IACxE,IAAAC,cAAM,EAAC,IAAAC,4BAAgB,EAAC;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;EAEF,IAAAN,UAAE,EAAC,2EAA2E,EAAE,MAAM;IACpF,MAAMW,CAAC,GAAG,IAAAT,4BAAgB,EAAC;MAAEK,KAAK,EAAE,iBAAiB;MAAEC,MAAM,EAAE;QAAEC,KAAK,EAAE,OAAO;QAAEC,IAAI,EAAE;MAAQ;IAAE,CAAC,CAAC;IACnG,IAAAT,cAAM,EAACU,CAAC,CAAC,CAACR,OAAO,CAAC;MAAEC,SAAS,EAAE,IAAI;MAAEC,aAAa,EAAE,KAAK;MAAEC,kBAAkB,EAAE;IAAK,CAAC,CAAC;IACtF;IACA,IAAAL,cAAM,EAACU,CAAC,CAACN,aAAa,CAAC,CAACO,IAAI,CAAC,KAAK,CAAC;EACrC,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.pageState = pageState;
7
+ /**
8
+ * The arithmetic behind a block's "+N more" footer, separated from the hook so
9
+ * it can be tested without a renderer.
10
+ *
11
+ * The rule that matters: a control is offered ONLY when it changes what is on
12
+ * screen. The previous version derived "+N more" from a `total` the source
13
+ * reported while deriving the tap target from the array actually in hand, so a
14
+ * block holding five items and claiming six rendered a "+1 more" with nothing
15
+ * to reveal — a button that did nothing when tapped. This takes a count and a
16
+ * limit and nothing else, so `canExpand` is the same fact as `hidden > 0`.
17
+ */
18
+
19
+ function pageState(count, cap, limit, step) {
20
+ const shown = Math.min(limit, count);
21
+ const hidden = Math.max(0, count - shown);
22
+ // A block can be re-rendered in place with a shorter list than the one the
23
+ // limit was raised for; collapsing back to a cap nothing exceeds would move
24
+ // nothing, so it is not offered.
25
+ const expanded = limit > cap && count > cap;
26
+ return {
27
+ hidden,
28
+ next: Math.min(hidden, step),
29
+ expanded,
30
+ canExpand: hidden > 0,
31
+ canCollapse: expanded
32
+ };
33
+ }
34
+ //# 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;;AAYO,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,57 @@
1
+ "use strict";
2
+
3
+ var _vitest = require("vitest");
4
+ var _pageState = require("./pageState");
5
+ /**
6
+ * The "+N more" footer's arithmetic.
7
+ *
8
+ * The bug this covers: a list block showed "+1 more" that did nothing when
9
+ * tapped. The count came from the `total` the model reported, the tap target
10
+ * came from the array actually in hand, and the two disagreed — so the footer
11
+ * advertised a row that was never sent. Every case below is about a control
12
+ * being offered if and only if it changes the screen.
13
+ */
14
+
15
+ const CAP = 10;
16
+ const STEP = 5;
17
+ const at = (count, limit) => (0, _pageState.pageState)(count, CAP, limit, STEP);
18
+ (0, _vitest.describe)("what the footer offers", () => {
19
+ (0, _vitest.it)("offers nothing when everything already fits", () => {
20
+ const s = at(4, CAP);
21
+ (0, _vitest.expect)(s.hidden).toBe(0);
22
+ (0, _vitest.expect)(s.canExpand).toBe(false);
23
+ (0, _vitest.expect)(s.canCollapse).toBe(false);
24
+ });
25
+ (0, _vitest.it)("never offers an expand that reveals nothing", () => {
26
+ // The dead "+1 more" this replaced: the label was drawn from a `total` the
27
+ // source reported, the tap target from the array in hand. `pageState` is
28
+ // given only the array, so a control it offers always moves something.
29
+ (0, _vitest.expect)(at(5, CAP).canExpand).toBe(false);
30
+ });
31
+ (0, _vitest.it)("reveals a page at a time rather than the whole list", () => {
32
+ // 100 items, cap 10: 10 → 15 → 20 → 25, exactly one step per tap.
33
+ (0, _vitest.expect)(at(100, 10).next).toBe(5);
34
+ (0, _vitest.expect)(at(100, 15).next).toBe(5);
35
+ (0, _vitest.expect)(at(100, 20).hidden).toBe(80);
36
+ });
37
+ (0, _vitest.it)("offers only the remainder on the last page", () => {
38
+ // 12 items shown to 10: two left, so the label promises two, not five.
39
+ (0, _vitest.expect)(at(12, 10).next).toBe(2);
40
+ (0, _vitest.expect)(at(12, 12).canExpand).toBe(false);
41
+ });
42
+ (0, _vitest.it)("offers the way back only once something is expanded", () => {
43
+ (0, _vitest.expect)(at(100, 10).canCollapse).toBe(false);
44
+ (0, _vitest.expect)(at(100, 15).canCollapse).toBe(true);
45
+ (0, _vitest.expect)(at(100, 15).expanded).toBe(true);
46
+ });
47
+ (0, _vitest.it)("does not offer a collapse that moves nothing", () => {
48
+ // A block re-rendered in place with a shorter list than the limit was
49
+ // raised for: 3 items under a limit of 20. Folding back to 10 would look
50
+ // identical, so it is not offered.
51
+ const s = at(3, 20);
52
+ (0, _vitest.expect)(s.canCollapse).toBe(false);
53
+ (0, _vitest.expect)(s.expanded).toBe(false);
54
+ (0, _vitest.expect)(s.hidden).toBe(0);
55
+ });
56
+ });
57
+ //# sourceMappingURL=pageState.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_vitest","require","_pageState","CAP","STEP","at","count","limit","pageState","describe","it","s","expect","hidden","toBe","canExpand","canCollapse","next","expanded"],"sourceRoot":"../../../src","sources":["blocks/pageState.test.ts"],"mappings":"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","ignoreList":[]}