|
11 | 11 | let btnText = $state("pause scrolling"); |
12 | 12 | let searchTerm = $state(""); |
13 | 13 | let searchTermLC = ""; |
14 | | - let element = $state(); |
| 14 | + /** @type {HTMLElement} */ |
| 15 | + let logAreaEl; |
15 | 16 |
|
16 | 17 | /** |
17 | 18 | * @param {string} s |
|
47 | 48 | } |
48 | 49 |
|
49 | 50 | if (searchTermLC === "") { |
50 | | - logs = logs; |
51 | 51 | filteredLogs = logs; |
| 52 | + if (!autoScrollPaused) { |
| 53 | + scrollToBottom(logAreaEl); |
| 54 | + } |
52 | 55 | return; |
53 | 56 | } |
54 | 57 |
|
55 | 58 | if (didMatch) { |
56 | 59 | filteredLogs = filteredLogs; |
| 60 | + if (!autoScrollPaused) { |
| 61 | + scrollToBottom(logAreaEl); |
| 62 | + } |
57 | 63 | } |
58 | 64 | } |
59 | 65 |
|
|
84 | 90 | node.scroll({ top: node.scrollHeight }); |
85 | 91 | } |
86 | 92 |
|
87 | | - // TODO(port): run on changes to logs |
88 | | - // afterUpdate(() => { |
89 | | - // if (autoScrollPaused) { |
90 | | - // return; |
91 | | - // } |
92 | | - // scrollToBottom(element); |
93 | | - // }); |
94 | | -
|
95 | 93 | let windowTitle = "Logview " + version; |
96 | 94 | // @ts-ignore |
97 | 95 | window.runtime.WindowSetTitle(windowTitle); |
|
134 | 132 | <button onclick={clearLogs}>clear</button> |
135 | 133 | <div>{len(logs)} line, {len(filteredLogs)} shown</div> |
136 | 134 | <div style="flex-grow: 1"></div> |
137 | | - <button onclick={preventDefault(aboutClicked)}>about</button> |
| 135 | + <button onclick={aboutClicked}>about</button> |
138 | 136 | </div> |
139 | | - <div bind:this={element} class="log"> |
| 137 | + <div bind:this={logAreaEl} class="log-area"> |
140 | 138 | {#if len(filteredLogs) == 0} |
141 | 139 | <div class="no-results">No results matching '<b>{searchTerm}</b>'</div> |
142 | 140 | {:else} |
143 | 141 | {#each filteredLogs as log (log[1])} |
144 | | - <span>{log[0]}</span><br /> |
| 142 | + <span class="log-line">{log[0]}</span><br /> |
145 | 143 | {/each} |
146 | 144 | {/if} |
147 | 145 | </div> |
|
172 | 170 | column-gap: 0.5rem; |
173 | 171 | } |
174 | 172 |
|
175 | | - .log { |
| 173 | + .log-area { |
176 | 174 | overflow: auto; |
177 | 175 | margin-top: 0.5rem; |
178 | 176 | /* background: rgb(239, 250, 254); */ |
179 | 177 | height: 100%; |
180 | 178 | background-color: rgb(255, 255, 255); |
181 | 179 | } |
182 | | - span { |
| 180 | + .log-line { |
183 | 181 | font-family: monospace; |
| 182 | + content-visibility: auto; |
| 183 | + /* contain-intrinsic-size: 1rem; */ |
184 | 184 | } |
185 | 185 | </style> |
0 commit comments