|
14 | 14 | let wrapperCallstackType = $state(DEFAULT_SETTINGS.wrapperCallstackType);
|
15 | 15 | let reloadMessageEl: Alert | null = null;
|
16 | 16 | let selfEl: HTMLElement | null = null;
|
| 17 | + let keepAwake = $state.raw(false); |
17 | 18 |
|
18 | 19 | getSettings().then((state) => {
|
19 | 20 | panels = state.panels;
|
20 | 21 | wrapperCallstackType = state.wrapperCallstackType;
|
| 22 | + keepAwake = state.keepAwake; |
| 23 | +
|
| 24 | + if (keepAwake) { |
| 25 | + chrome.power.requestKeepAwake('display'); |
| 26 | + } |
21 | 27 | });
|
22 | 28 |
|
23 | 29 | runtimeListen(async (o) => {
|
|
48 | 54 | });
|
49 | 55 | reloadMessageEl?.show();
|
50 | 56 | }
|
| 57 | +
|
| 58 | + function onToggleKeepAwake() { |
| 59 | + keepAwake = !keepAwake; |
| 60 | +
|
| 61 | + if (keepAwake) { |
| 62 | + chrome.power.requestKeepAwake('display'); |
| 63 | + } else { |
| 64 | + chrome.power.releaseKeepAwake(); |
| 65 | + } |
| 66 | +
|
| 67 | + setSettings({ keepAwake }); |
| 68 | + } |
51 | 69 | </script>
|
52 | 70 |
|
53 | 71 | <button
|
|
62 | 80 | <div bind:this={selfEl} popover="auto" id="toggle-panels-menu" role="menu">
|
63 | 81 | <table class="menu-content">
|
64 | 82 | <tbody>
|
65 |
| - <tr class="menu-item -dash"> |
66 |
| - <td>Callstack Type</td> |
67 |
| - <td> |
| 83 | + <tr class="menu-item -dash-bottom"> |
| 84 | + <td class="-left">Callstack Type</td> |
| 85 | + <td class="-right"> |
68 | 86 | <button
|
69 | 87 | class="btn-toggle"
|
70 | 88 | title="Toggle callstack type: full/short"
|
|
84 | 102 |
|
85 | 103 | {#each panels as panel, index (panel.key)}
|
86 | 104 | <tr class="menu-item">
|
87 |
| - <td> |
| 105 | + <td class="-left"> |
88 | 106 | <a
|
89 | 107 | href="void(0)"
|
90 | 108 | class="toggle-visibility"
|
|
98 | 116 | </td>
|
99 | 117 |
|
100 | 118 | {#if !NON_WRAPPABLE.includes(panel.key)}
|
101 |
| - <td> |
| 119 | + <td class="-right"> |
102 | 120 | <button
|
103 | 121 | class="btn-toggle"
|
104 |
| - title="wrap/unwrap function to start/stop collect it's metrics" |
| 122 | + title="Wrap/unwrap function to start/stop collect it's metrics" |
105 | 123 | onclick={() => void onTogglePanelWrap(index)}
|
106 | 124 | >
|
107 | 125 | {`${panel.wrap ? 'wrapped' : 'unwrapped'}`}
|
|
110 | 128 | {/if}
|
111 | 129 | </tr>
|
112 | 130 | {/each}
|
| 131 | + |
| 132 | + <tr class="menu-item -dash-top"> |
| 133 | + <td class="-left"> |
| 134 | + Prevent the system from sleeping in response to user inactivity |
| 135 | + </td> |
| 136 | + <td class="-right"> |
| 137 | + <button |
| 138 | + class="btn-toggle" |
| 139 | + onclick={onToggleKeepAwake} |
| 140 | + > |
| 141 | + {`${keepAwake ? 'on' : 'off'}`} |
| 142 | + </button> |
| 143 | + </td> |
| 144 | + </tr> |
113 | 145 | </tbody>
|
114 | 146 | </table>
|
115 | 147 | </div>
|
|
134 | 166 | padding: 0 0.375rem;
|
135 | 167 |
|
136 | 168 | .menu-content {
|
| 169 | + margin: 0.2rem 0; |
| 170 | +
|
137 | 171 | .menu-item {
|
138 |
| - line-height: 1.4rem; |
| 172 | + td { |
| 173 | + line-height: 1rem; |
| 174 | + padding: 0.1rem 0 0.1rem 0; |
139 | 175 |
|
140 |
| - &.-dash { |
| 176 | + &.-left { |
| 177 | + max-width: 12rem; |
| 178 | + } |
| 179 | + &.-right { |
| 180 | + display: flex; |
| 181 | + align-items: center; |
| 182 | + justify-content: center; |
| 183 | + } |
| 184 | + } |
| 185 | +
|
| 186 | + &.-dash-bottom { |
141 | 187 | border-bottom: 1px solid var(--border);
|
142 | 188 | }
|
143 | 189 |
|
| 190 | + &.-dash-top { |
| 191 | + border-top: 1px solid var(--border); |
| 192 | + } |
| 193 | +
|
144 | 194 | .toggle-visibility {
|
145 | 195 | color: var(--text);
|
146 | 196 | text-wrap: nowrap;
|
|
152 | 202 |
|
153 | 203 | .btn-toggle {
|
154 | 204 | color: var(--text);
|
155 |
| - border-left: 1px solid var(--border); |
156 |
| - border-right: none; |
157 | 205 | margin-left: 0.375rem;
|
| 206 | + font-weight: bold; |
158 | 207 | }
|
159 | 208 | }
|
160 | 209 | }
|
|
0 commit comments