@dxos/react-ui-feed 0.11.1

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 (230) hide show
  1. package/LICENSE +105 -0
  2. package/dist/lib/chunk-src.mjs +2228 -0
  3. package/dist/lib/chunk-src.mjs.map +1 -0
  4. package/dist/lib/index.mjs +2 -0
  5. package/dist/lib/testing.mjs +1923 -0
  6. package/dist/lib/testing.mjs.map +1 -0
  7. package/dist/types/src/components/Block/HtmlBlock.d.ts +14 -0
  8. package/dist/types/src/components/Block/HtmlBlock.d.ts.map +1 -0
  9. package/dist/types/src/components/Block/MarkdownBlock.d.ts +24 -0
  10. package/dist/types/src/components/Block/MarkdownBlock.d.ts.map +1 -0
  11. package/dist/types/src/components/Block/block.stories.d.ts +21 -0
  12. package/dist/types/src/components/Block/block.stories.d.ts.map +1 -0
  13. package/dist/types/src/components/Block/construction.d.ts +36 -0
  14. package/dist/types/src/components/Block/construction.d.ts.map +1 -0
  15. package/dist/types/src/components/Block/extensions.d.ts +23 -0
  16. package/dist/types/src/components/Block/extensions.d.ts.map +1 -0
  17. package/dist/types/src/components/Block/highlight.d.ts +14 -0
  18. package/dist/types/src/components/Block/highlight.d.ts.map +1 -0
  19. package/dist/types/src/components/Block/index.d.ts +6 -0
  20. package/dist/types/src/components/Block/index.d.ts.map +1 -0
  21. package/dist/types/src/components/Block/selection-group.d.ts +21 -0
  22. package/dist/types/src/components/Block/selection-group.d.ts.map +1 -0
  23. package/dist/types/src/components/Block/widget-state.d.ts +33 -0
  24. package/dist/types/src/components/Block/widget-state.d.ts.map +1 -0
  25. package/dist/types/src/components/MessageList/MessageList.d.ts +129 -0
  26. package/dist/types/src/components/MessageList/MessageList.d.ts.map +1 -0
  27. package/dist/types/src/components/MessageList/MessageList.stories.d.ts +47 -0
  28. package/dist/types/src/components/MessageList/MessageList.stories.d.ts.map +1 -0
  29. package/dist/types/src/components/MessageList/index.d.ts +3 -0
  30. package/dist/types/src/components/MessageList/index.d.ts.map +1 -0
  31. package/dist/types/src/components/MessageList/position-log.d.ts +73 -0
  32. package/dist/types/src/components/MessageList/position-log.d.ts.map +1 -0
  33. package/dist/types/src/components/Minimap/Minimap.d.ts +28 -0
  34. package/dist/types/src/components/Minimap/Minimap.d.ts.map +1 -0
  35. package/dist/types/src/components/Minimap/Minimap.stories.d.ts +21 -0
  36. package/dist/types/src/components/Minimap/Minimap.stories.d.ts.map +1 -0
  37. package/dist/types/src/components/Minimap/index.d.ts +2 -0
  38. package/dist/types/src/components/Minimap/index.d.ts.map +1 -0
  39. package/dist/types/src/components/Outline/Outline.d.ts +46 -0
  40. package/dist/types/src/components/Outline/Outline.d.ts.map +1 -0
  41. package/dist/types/src/components/Outline/Outline.stories.d.ts +37 -0
  42. package/dist/types/src/components/Outline/Outline.stories.d.ts.map +1 -0
  43. package/dist/types/src/components/Outline/index.d.ts +2 -0
  44. package/dist/types/src/components/Outline/index.d.ts.map +1 -0
  45. package/dist/types/src/components/index.d.ts +5 -0
  46. package/dist/types/src/components/index.d.ts.map +1 -0
  47. package/dist/types/src/debug/Debug.d.ts +17 -0
  48. package/dist/types/src/debug/Debug.d.ts.map +1 -0
  49. package/dist/types/src/debug/Stats.d.ts +30 -0
  50. package/dist/types/src/debug/Stats.d.ts.map +1 -0
  51. package/dist/types/src/debug/debug-model.d.ts +32 -0
  52. package/dist/types/src/debug/debug-model.d.ts.map +1 -0
  53. package/dist/types/src/debug/debug-model.test.d.ts +2 -0
  54. package/dist/types/src/debug/debug-model.test.d.ts.map +1 -0
  55. package/dist/types/src/debug/frame-meter.d.ts +48 -0
  56. package/dist/types/src/debug/frame-meter.d.ts.map +1 -0
  57. package/dist/types/src/debug/frame-meter.test.d.ts +2 -0
  58. package/dist/types/src/debug/frame-meter.test.d.ts.map +1 -0
  59. package/dist/types/src/debug/index.d.ts +6 -0
  60. package/dist/types/src/debug/index.d.ts.map +1 -0
  61. package/dist/types/src/debug/use-debug.d.ts +19 -0
  62. package/dist/types/src/debug/use-debug.d.ts.map +1 -0
  63. package/dist/types/src/hooks/follow.d.ts +89 -0
  64. package/dist/types/src/hooks/follow.d.ts.map +1 -0
  65. package/dist/types/src/hooks/follow.stories.d.ts +25 -0
  66. package/dist/types/src/hooks/follow.stories.d.ts.map +1 -0
  67. package/dist/types/src/hooks/follow.test.d.ts +2 -0
  68. package/dist/types/src/hooks/follow.test.d.ts.map +1 -0
  69. package/dist/types/src/hooks/index.d.ts +6 -0
  70. package/dist/types/src/hooks/index.d.ts.map +1 -0
  71. package/dist/types/src/hooks/useDecorations.d.ts +31 -0
  72. package/dist/types/src/hooks/useDecorations.d.ts.map +1 -0
  73. package/dist/types/src/hooks/useFeedNavigation.d.ts +44 -0
  74. package/dist/types/src/hooks/useFeedNavigation.d.ts.map +1 -0
  75. package/dist/types/src/hooks/useFollow.d.ts +46 -0
  76. package/dist/types/src/hooks/useFollow.d.ts.map +1 -0
  77. package/dist/types/src/hooks/useItemSelection.d.ts +34 -0
  78. package/dist/types/src/hooks/useItemSelection.d.ts.map +1 -0
  79. package/dist/types/src/index.d.ts +4 -0
  80. package/dist/types/src/index.d.ts.map +1 -0
  81. package/dist/types/src/model/feed-model.d.ts +67 -0
  82. package/dist/types/src/model/feed-model.d.ts.map +1 -0
  83. package/dist/types/src/model/feed-model.test.d.ts +2 -0
  84. package/dist/types/src/model/feed-model.test.d.ts.map +1 -0
  85. package/dist/types/src/model/feed.d.ts +66 -0
  86. package/dist/types/src/model/feed.d.ts.map +1 -0
  87. package/dist/types/src/model/feed.test.d.ts +2 -0
  88. package/dist/types/src/model/feed.test.d.ts.map +1 -0
  89. package/dist/types/src/model/index.d.ts +5 -0
  90. package/dist/types/src/model/index.d.ts.map +1 -0
  91. package/dist/types/src/model/list-model.d.ts +61 -0
  92. package/dist/types/src/model/list-model.d.ts.map +1 -0
  93. package/dist/types/src/model/list-model.test.d.ts +2 -0
  94. package/dist/types/src/model/list-model.test.d.ts.map +1 -0
  95. package/dist/types/src/model/useListModel.d.ts +22 -0
  96. package/dist/types/src/model/useListModel.d.ts.map +1 -0
  97. package/dist/types/src/stories/assistant.stories.d.ts +38 -0
  98. package/dist/types/src/stories/assistant.stories.d.ts.map +1 -0
  99. package/dist/types/src/stories/baseline.stories.d.ts +32 -0
  100. package/dist/types/src/stories/baseline.stories.d.ts.map +1 -0
  101. package/dist/types/src/stories/bridge.stories.d.ts +72 -0
  102. package/dist/types/src/stories/bridge.stories.d.ts.map +1 -0
  103. package/dist/types/src/stories/construction.stories.d.ts +17 -0
  104. package/dist/types/src/stories/construction.stories.d.ts.map +1 -0
  105. package/dist/types/src/stories/fill.stories.d.ts +51 -0
  106. package/dist/types/src/stories/fill.stories.d.ts.map +1 -0
  107. package/dist/types/src/stories/horizontal.stories.d.ts +17 -0
  108. package/dist/types/src/stories/horizontal.stories.d.ts.map +1 -0
  109. package/dist/types/src/stories/mount.stories.d.ts +19 -0
  110. package/dist/types/src/stories/mount.stories.d.ts.map +1 -0
  111. package/dist/types/src/stories/navigation.stories.d.ts +33 -0
  112. package/dist/types/src/stories/navigation.stories.d.ts.map +1 -0
  113. package/dist/types/src/stories/streaming.stories.d.ts +17 -0
  114. package/dist/types/src/stories/streaming.stories.d.ts.map +1 -0
  115. package/dist/types/src/stories/tail.stories.d.ts +47 -0
  116. package/dist/types/src/stories/tail.stories.d.ts.map +1 -0
  117. package/dist/types/src/stories/widget.stories.d.ts +16 -0
  118. package/dist/types/src/stories/widget.stories.d.ts.map +1 -0
  119. package/dist/types/src/testing/FeedStory.d.ts +30 -0
  120. package/dist/types/src/testing/FeedStory.d.ts.map +1 -0
  121. package/dist/types/src/testing/MessageWindow.d.ts +48 -0
  122. package/dist/types/src/testing/MessageWindow.d.ts.map +1 -0
  123. package/dist/types/src/testing/controls.d.ts +46 -0
  124. package/dist/types/src/testing/controls.d.ts.map +1 -0
  125. package/dist/types/src/testing/debug/FeedStats.d.ts +18 -0
  126. package/dist/types/src/testing/debug/FeedStats.d.ts.map +1 -0
  127. package/dist/types/src/testing/debug/index.d.ts +4 -0
  128. package/dist/types/src/testing/debug/index.d.ts.map +1 -0
  129. package/dist/types/src/testing/debug/sweep.d.ts +18 -0
  130. package/dist/types/src/testing/debug/sweep.d.ts.map +1 -0
  131. package/dist/types/src/testing/debug/use-feed-debug.d.ts +33 -0
  132. package/dist/types/src/testing/debug/use-feed-debug.d.ts.map +1 -0
  133. package/dist/types/src/testing/generator.d.ts +16 -0
  134. package/dist/types/src/testing/generator.d.ts.map +1 -0
  135. package/dist/types/src/testing/index.d.ts +10 -0
  136. package/dist/types/src/testing/index.d.ts.map +1 -0
  137. package/dist/types/src/testing/scenarios.d.ts +58 -0
  138. package/dist/types/src/testing/scenarios.d.ts.map +1 -0
  139. package/dist/types/src/testing/stream.d.ts +22 -0
  140. package/dist/types/src/testing/stream.d.ts.map +1 -0
  141. package/dist/types/src/testing/turn.d.ts +21 -0
  142. package/dist/types/src/testing/turn.d.ts.map +1 -0
  143. package/dist/types/src/testing/widgets.d.ts +3 -0
  144. package/dist/types/src/testing/widgets.d.ts.map +1 -0
  145. package/dist/types/src/virtualizer/Window.d.ts +137 -0
  146. package/dist/types/src/virtualizer/Window.d.ts.map +1 -0
  147. package/dist/types/src/virtualizer/Window.stories.d.ts +112 -0
  148. package/dist/types/src/virtualizer/Window.stories.d.ts.map +1 -0
  149. package/dist/types/src/virtualizer/index.d.ts +3 -0
  150. package/dist/types/src/virtualizer/index.d.ts.map +1 -0
  151. package/dist/types/src/virtualizer/placement.d.ts +188 -0
  152. package/dist/types/src/virtualizer/placement.d.ts.map +1 -0
  153. package/dist/types/src/virtualizer/placement.test.d.ts +2 -0
  154. package/dist/types/src/virtualizer/placement.test.d.ts.map +1 -0
  155. package/dist/types/tsconfig.tsbuildinfo +1 -0
  156. package/package.json +72 -0
  157. package/src/components/Block/HtmlBlock.tsx +26 -0
  158. package/src/components/Block/MarkdownBlock.tsx +157 -0
  159. package/src/components/Block/block.stories.tsx +140 -0
  160. package/src/components/Block/construction.ts +77 -0
  161. package/src/components/Block/extensions.ts +95 -0
  162. package/src/components/Block/highlight.ts +53 -0
  163. package/src/components/Block/index.ts +10 -0
  164. package/src/components/Block/selection-group.ts +53 -0
  165. package/src/components/Block/widget-state.tsx +75 -0
  166. package/src/components/MessageList/MessageList.stories.tsx +111 -0
  167. package/src/components/MessageList/MessageList.tsx +647 -0
  168. package/src/components/MessageList/index.ts +6 -0
  169. package/src/components/MessageList/position-log.ts +167 -0
  170. package/src/components/Minimap/Minimap.stories.tsx +129 -0
  171. package/src/components/Minimap/Minimap.tsx +84 -0
  172. package/src/components/Minimap/index.ts +5 -0
  173. package/src/components/Outline/Outline.stories.tsx +196 -0
  174. package/src/components/Outline/Outline.tsx +383 -0
  175. package/src/components/Outline/index.ts +5 -0
  176. package/src/components/index.ts +8 -0
  177. package/src/debug/Debug.tsx +90 -0
  178. package/src/debug/Stats.tsx +57 -0
  179. package/src/debug/debug-model.test.ts +36 -0
  180. package/src/debug/debug-model.ts +66 -0
  181. package/src/debug/frame-meter.test.ts +49 -0
  182. package/src/debug/frame-meter.ts +188 -0
  183. package/src/debug/index.ts +9 -0
  184. package/src/debug/use-debug.tsx +41 -0
  185. package/src/hooks/follow.stories.tsx +200 -0
  186. package/src/hooks/follow.test.ts +105 -0
  187. package/src/hooks/follow.ts +241 -0
  188. package/src/hooks/index.ts +9 -0
  189. package/src/hooks/useDecorations.tsx +54 -0
  190. package/src/hooks/useFeedNavigation.ts +90 -0
  191. package/src/hooks/useFollow.ts +258 -0
  192. package/src/hooks/useItemSelection.tsx +53 -0
  193. package/src/index.ts +7 -0
  194. package/src/model/feed-model.test.ts +84 -0
  195. package/src/model/feed-model.ts +214 -0
  196. package/src/model/feed.test.ts +65 -0
  197. package/src/model/feed.ts +157 -0
  198. package/src/model/index.ts +8 -0
  199. package/src/model/list-model.test.ts +71 -0
  200. package/src/model/list-model.ts +152 -0
  201. package/src/model/useListModel.ts +53 -0
  202. package/src/stories/assistant.stories.tsx +425 -0
  203. package/src/stories/baseline.stories.tsx +78 -0
  204. package/src/stories/bridge.stories.tsx +376 -0
  205. package/src/stories/construction.stories.tsx +147 -0
  206. package/src/stories/fill.stories.tsx +271 -0
  207. package/src/stories/horizontal.stories.tsx +129 -0
  208. package/src/stories/mount.stories.tsx +233 -0
  209. package/src/stories/navigation.stories.tsx +145 -0
  210. package/src/stories/streaming.stories.tsx +132 -0
  211. package/src/stories/tail.stories.tsx +149 -0
  212. package/src/stories/widget.stories.tsx +107 -0
  213. package/src/testing/FeedStory.tsx +452 -0
  214. package/src/testing/MessageWindow.tsx +139 -0
  215. package/src/testing/controls.tsx +96 -0
  216. package/src/testing/debug/FeedStats.tsx +182 -0
  217. package/src/testing/debug/index.ts +16 -0
  218. package/src/testing/debug/sweep.ts +85 -0
  219. package/src/testing/debug/use-feed-debug.ts +91 -0
  220. package/src/testing/generator.ts +90 -0
  221. package/src/testing/index.ts +13 -0
  222. package/src/testing/scenarios.tsx +552 -0
  223. package/src/testing/stream.ts +70 -0
  224. package/src/testing/turn.ts +91 -0
  225. package/src/testing/widgets.tsx +183 -0
  226. package/src/virtualizer/Window.stories.tsx +683 -0
  227. package/src/virtualizer/Window.tsx +435 -0
  228. package/src/virtualizer/index.ts +6 -0
  229. package/src/virtualizer/placement.test.ts +312 -0
  230. package/src/virtualizer/placement.ts +403 -0
@@ -0,0 +1,188 @@
1
+ /**
2
+ * Where the rows go, in one number each.
3
+ *
4
+ * Scalars only — `start`, `extent`, `viewport` — never `top` or `height`, so the axis is the DOM
5
+ * binding's business and never gets baked in here (§9). No DOM, no React, no CodeMirror: everything
6
+ * this decides can be decided from arithmetic, and everything it cannot decide is a measurement
7
+ * somebody hands it.
8
+ *
9
+ * The model is one authoritative fact and derivations from it: an **anchor**, identified by message
10
+ * id, whose absolute position in content space is known. Every other row's position is that position
11
+ * plus or minus the extents in between. Prepending rows does not move the anchor, so it does not move
12
+ * anything at or after it — which is the property §7 needs and the reason this is not a prefix sum
13
+ * from index 0.
14
+ */
15
+ export type Extents = {
16
+ /**
17
+ * Extent along the scroll axis of the row at `index`, when nothing has been measured for it.
18
+ */
19
+ of: (index: number) => number;
20
+ /**
21
+ * Never revised by measurement.
22
+ *
23
+ * The layout constrains the extent — a horizontal feed of declared-width items, a list of
24
+ * fixed-height rows — so offsets are an exact prefix sum and there is nothing to correct. It does
25
+ * **not** mean unchecked: the binding still measures in dev and reports a mismatch (§8).
26
+ */
27
+ exact?: boolean;
28
+ };
29
+ export type PlacementOptions = {
30
+ count: number;
31
+ /** Identity of the row at `index`. Extents are stored against this, so a prepend cannot shift them. */
32
+ getId: (index: number) => string;
33
+ extents: Extents;
34
+ /** Extent of the visible region along the scroll axis. */
35
+ viewport: number;
36
+ /** Rows to mount beyond the visible region, each side. */
37
+ overscan?: number;
38
+ /**
39
+ * Empty extent after the last row, so the reader can scroll it up to the start of the viewport.
40
+ *
41
+ * A number the host supplies, not a mode the list has. On the old design this was a flag that
42
+ * special-cased the tail everywhere it was consulted, and it could not be made stable; here it is
43
+ * added to the sizer and nothing else knows about it (§7).
44
+ */
45
+ reserve?: number;
46
+ };
47
+ /** The mounted range and where its parent goes. */
48
+ export type Layout = {
49
+ /** First and last mounted row, inclusive — the visible rows plus overscan. */
50
+ first: number;
51
+ last: number;
52
+ /**
53
+ * First and last row the reader can actually see.
54
+ *
55
+ * Reported separately because it is what a readout means by "where am I": the mounted range
56
+ * includes rows deliberately kept off screen, and naming one of those would be describing the
57
+ * overscan rather than the reader.
58
+ */
59
+ visible: {
60
+ first: number;
61
+ last: number;
62
+ };
63
+ /** Absolute position of the first mounted row: what the parent is translated by (§7). */
64
+ offset: number;
65
+ /** Total extent of the scrollable content, which is what the thumb is computed from. */
66
+ sizerExtent: number;
67
+ };
68
+ /** What reaching an edge revealed about the estimates, when it revealed anything. */
69
+ export type EdgeDrift = {
70
+ edge: 'start' | 'end';
71
+ /** How far out the estimate was. Positive means the region was shorter than assumed. */
72
+ delta: number;
73
+ };
74
+ /**
75
+ *
76
+ */
77
+ export declare class Placement {
78
+ #private;
79
+ constructor({ count, getId, extents, viewport, overscan, reserve }: PlacementOptions);
80
+ get scroll(): number;
81
+ get count(): number;
82
+ /** The viewport is the binding's to know: it is the one thing here that comes from the DOM. */
83
+ setViewport(viewport: number): void;
84
+ /**
85
+ * The host's answer about extents can change — a row is edited, a panel opens, a story flips a
86
+ * fixture — and it is a *function*, so keeping the one handed over at construction quietly pins
87
+ * the layout to whatever was true then. Measured extents survive: they are keyed by id and this
88
+ * only replaces what the host would say about a row nobody has measured.
89
+ */
90
+ setExtents(extents: Extents): void;
91
+ setReserve(reserve: number): void;
92
+ /**
93
+ * The host's identity function, which is a closure over the host's own list.
94
+ *
95
+ * Appending a message gives a *new* `getId`, and a placement holding the one it was constructed
96
+ * with resolves the new row's index to an id nobody will ever measure. The binding then stores
97
+ * that row's measurement under the id the DOM carries and reads it back under the stale one, so
98
+ * the row is measured, found to disagree, measured again — every commit, for ever. It presents as
99
+ * a render loop rather than as a wrong size, which is what made `bridge/Tail` look like a tail
100
+ * defect (§8: measurement is only a correction if it can be read back).
101
+ */
102
+ setGetId(getId: (index: number) => string): void;
103
+ get anchor(): Readonly<{
104
+ id: string;
105
+ index: number;
106
+ start: number;
107
+ }>;
108
+ /** Extent of one row: what was measured, or what the host says. */
109
+ extentOf(index: number): number;
110
+ /**
111
+ * Absolute position of a row, derived from the anchor rather than summed from the start.
112
+ *
113
+ * Rows between here and the anchor are the only ones whose extents matter (§5): everything before
114
+ * the window is described by the anchor's position, not by adding up guesses about it.
115
+ */
116
+ positionOf(index: number): number;
117
+ /** The reader moved. Nothing is corrected here — only the mounted range changes. */
118
+ scrollTo(offset: number): void;
119
+ /**
120
+ * A row turned out to be a different size than assumed.
121
+ *
122
+ * Rows at or after the anchor push the ones after them and leave the anchor alone. A row *before*
123
+ * the anchor moves the rows between it and the anchor, which is correct and unavoidable: the
124
+ * anchor is the thing being held still, and it is still being held.
125
+ */
126
+ measure(id: string, extent: number): void;
127
+ /** The model changed length. `prepended` rows arrived before the anchor and shift its index. */
128
+ setCount(count: number, { prepended }?: {
129
+ prepended?: number;
130
+ }): void;
131
+ /**
132
+ * Move to a row that may be nowhere near the window.
133
+ *
134
+ * The only operation that positions from estimates rather than from measurement, because there is
135
+ * no measured path to somewhere the reader has never been. A jump is a discontinuity the reader
136
+ * asked for, so being approximately right is what it can be.
137
+ */
138
+ jumpTo(index: number, align?: 'start' | 'end'): void;
139
+ /**
140
+ * Where the reader has to be for `index` to sit at the start (or end) of the viewport.
141
+ *
142
+ * Reports; does not move. `jumpTo` re-anchors as well, which is right for a discontinuity and
143
+ * wrong for a glide: the anchor would arrive at the destination while the element was still
144
+ * travelling, so the reader would watch the rows they were scrolling *through* unmount and the
145
+ * journey happen over nothing.
146
+ */
147
+ offsetOf(index: number, align?: 'start' | 'end'): number;
148
+ /**
149
+ * Where the reader has to be for the last row to rest against the end of the viewport.
150
+ *
151
+ * Derived from the anchor, like every other position, and deliberately **not** from a sum over the
152
+ * model: a follow asks this again on every commit, and each answer mounts rows whose measurement
153
+ * replaces the estimates that sum is over — so a sum-based end moves every time it is consulted,
154
+ * and consulting it is what moves it. That is not slow convergence, it is a feedback loop, and in
155
+ * React it terminates by exceeding the update limit rather than by settling (`bridge/Tail`).
156
+ *
157
+ * Anchor-relative, the answer only changes as the rows *between the anchor and the last row* are
158
+ * measured — each of them once — so a follow settles in a couple of commits and rows the reader
159
+ * has already passed cannot disturb it.
160
+ */
161
+ endOffset(): number;
162
+ /** The mounted range, the parent's offset, and the extent the thumb is computed from. */
163
+ layout(): Layout;
164
+ /**
165
+ * Repay the start edge's drift: shift every position so row 0 starts at exactly zero, and move
166
+ * the scroll by the same amount so nothing the reader sees moves.
167
+ *
168
+ * The first row starting at zero is the one absolute fact of content space, and estimates being
169
+ * replaced above the anchor break it: a feed opened at its tail whose rows measure taller than
170
+ * assumed pushes row 0 *negative*, where no scroll can reach it — the reader arrives at the top
171
+ * and the first messages simply are not there. This is the single correction that must touch the
172
+ * scroll (§7's rule is about corrections and readers sharing a channel; here both the content and
173
+ * the offset move by the same delta in the same commit, so the reader sees nothing at all).
174
+ * Returns the shift for the binding to apply to the element.
175
+ */
176
+ rebaseStart(): number;
177
+ /**
178
+ * What an edge revealed, if the window has reached one.
179
+ *
180
+ * The edges are where estimate meets ground truth: the first row starts at zero and the last one
181
+ * ends at the content's end, by definition, so a computed position that says otherwise is the
182
+ * measure of how wrong the estimates were. Reported rather than silently applied — absorbing it
183
+ * into the anchor would move what the reader is looking at, and at an edge they are looking at
184
+ * exactly the thing that would move.
185
+ */
186
+ drift(): EdgeDrift | undefined;
187
+ }
188
+ //# sourceMappingURL=placement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"placement.d.ts","sourceRoot":"","sources":["../../../../src/virtualizer/placement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=placement.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"placement.test.d.ts","sourceRoot":"","sources":["../../../../src/virtualizer/placement.test.ts"],"names":[],"mappings":""}