koneck 2.128.60 → 2.128.62
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.
- package/dist/web/ui-client.d.ts.map +1 -1
- package/dist/web/ui-client.js +114 -2
- package/dist/web/ui-client.js.map +1 -1
- package/dist/web/ui-css.d.ts.map +1 -1
- package/dist/web/ui-css.js +69 -5
- package/dist/web/ui-css.js.map +1 -1
- package/dist/web/ui.d.ts.map +1 -1
- package/dist/web/ui.js +5 -0
- package/dist/web/ui.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-client.d.ts","sourceRoot":"","sources":["../../src/web/ui-client.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"ui-client.d.ts","sourceRoot":"","sources":["../../src/web/ui-client.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,IAAI,MAAM,CA4uOrC"}
|
package/dist/web/ui-client.js
CHANGED
|
@@ -2930,6 +2930,15 @@ function openPalette() {
|
|
|
2930
2930
|
$('pq').focus();
|
|
2931
2931
|
}
|
|
2932
2932
|
function closePalette() { $('palette').hidden = true; $('ta').focus(); }
|
|
2933
|
+
/*
|
|
2934
|
+
* A "/" on its own opens the palette, as it does in the terminal.
|
|
2935
|
+
*
|
|
2936
|
+
* Ctrl+K was the only way in, and a phone has no Ctrl — so on a phone every action the palette
|
|
2937
|
+
* holds was out of reach. A slash typed into an empty box is unambiguous: nobody sends "/".
|
|
2938
|
+
*/
|
|
2939
|
+
$('ta').addEventListener('input', () => {
|
|
2940
|
+
if ($('ta').value === '/') { $('ta').value = ''; openPalette(); }
|
|
2941
|
+
});
|
|
2933
2942
|
|
|
2934
2943
|
$('pq').addEventListener('input', () => { pIndex = 0; drawPalette(); });
|
|
2935
2944
|
$('pq').addEventListener('keydown', (ev) => {
|
|
@@ -3777,7 +3786,107 @@ async function cycleMode() {
|
|
|
3777
3786
|
}
|
|
3778
3787
|
$('modeline').onclick = () => { void cycleMode(); };
|
|
3779
3788
|
$('new').onclick = newSession;
|
|
3780
|
-
|
|
3789
|
+
/*
|
|
3790
|
+
* On a narrow screen the sidebar is an overlay, closed until asked for.
|
|
3791
|
+
*
|
|
3792
|
+
* It was open by default at every width, so on a phone the session list covered three quarters of
|
|
3793
|
+
* the screen and the conversation sat behind it. Below 820px it starts closed, opens over the chat
|
|
3794
|
+
* with a shade behind it, and closes on a tap outside it or once a session is chosen.
|
|
3795
|
+
*/
|
|
3796
|
+
const narrow = () => matchMedia('(max-width:820px)').matches;
|
|
3797
|
+
function setSide(open) {
|
|
3798
|
+
$('side').classList.toggle('hide', !open);
|
|
3799
|
+
$('sideshade').hidden = !(open && narrow());
|
|
3800
|
+
}
|
|
3801
|
+
if (narrow()) setSide(false);
|
|
3802
|
+
matchMedia('(max-width:820px)').addEventListener('change', (ev) => setSide(!ev.matches));
|
|
3803
|
+
$('sidebtn').onclick = () => setSide($('side').classList.contains('hide'));
|
|
3804
|
+
$('sideshade').onclick = () => setSide(false);
|
|
3805
|
+
$('slist').addEventListener('click', (ev) => {
|
|
3806
|
+
if (narrow() && ev.target.closest && ev.target.closest('.srow') && !ev.target.closest('.srowx')) setSide(false);
|
|
3807
|
+
});
|
|
3808
|
+
$('new').addEventListener('click', () => { if (narrow()) setSide(false); });
|
|
3809
|
+
|
|
3810
|
+
/*
|
|
3811
|
+
* On a tablet or a phone the watch panel is a sheet over the chat.
|
|
3812
|
+
*
|
|
3813
|
+
* Below 1100px it was switched off altogether, so a phone had no browser at all. It opens from the
|
|
3814
|
+
* header, fills the screen, and closes with × or Escape. It does not jump over the conversation on
|
|
3815
|
+
* its own: when the agent starts on something, the button says so and the sheet waits to be asked.
|
|
3816
|
+
*/
|
|
3817
|
+
const sheetWidth = () => matchMedia('(max-width:1100px)').matches;
|
|
3818
|
+
function setSheet(open) {
|
|
3819
|
+
document.body.classList.toggle('sheet', open);
|
|
3820
|
+
if (open) {
|
|
3821
|
+
$('sheetbtn').classList.remove('busy');
|
|
3822
|
+
// The button is the browser's: it opens on the page, whatever the panel last showed.
|
|
3823
|
+
$('watch').hidden = false;
|
|
3824
|
+
if (typeof setPanelMode === 'function') setPanelMode('page');
|
|
3825
|
+
void loadPreview();
|
|
3826
|
+
}
|
|
3827
|
+
}
|
|
3828
|
+
$('sheetbtn').onclick = () => setSheet(!document.body.classList.contains('sheet'));
|
|
3829
|
+
new MutationObserver(() => {
|
|
3830
|
+
if ($('watch').hidden) document.body.classList.remove('sheet');
|
|
3831
|
+
}).observe($('watch'), { attributes: true, attributeFilter: ['hidden'] });
|
|
3832
|
+
|
|
3833
|
+
/*
|
|
3834
|
+
* The header's pills wrap when they do not fit, so none of them is ever off the edge.
|
|
3835
|
+
*
|
|
3836
|
+
* Measured rather than guessed from the width: what fits depends on the sidebar, the workspace's
|
|
3837
|
+
* name and the model's, not on the window alone. Checked again whenever the header resizes or a
|
|
3838
|
+
* pill's value changes.
|
|
3839
|
+
*/
|
|
3840
|
+
function fitPills() {
|
|
3841
|
+
const head = document.querySelector('header');
|
|
3842
|
+
const row = document.querySelector('.hpills');
|
|
3843
|
+
if (!head || !row) return;
|
|
3844
|
+
// The counter with nothing to count yet is a dash, and was taking a row of its own.
|
|
3845
|
+
// Written only when it changes: this runs from an observer that sees its own writes, and setting
|
|
3846
|
+
// an attribute to the value it already has still counts as a change — an endless loop otherwise.
|
|
3847
|
+
const stat = $('stat');
|
|
3848
|
+
const empty = !!stat && /^[\s—-]*$/.test(stat.textContent || '');
|
|
3849
|
+
if (stat && stat.hidden !== empty) stat.hidden = empty;
|
|
3850
|
+
const was = head.classList.contains('hwrap');
|
|
3851
|
+
head.classList.remove('hwrap');
|
|
3852
|
+
const cut = [...row.querySelectorAll('.pill b')].some((b) => b.scrollWidth > b.clientWidth + 1);
|
|
3853
|
+
const wrap = row.scrollWidth > row.clientWidth + 1 || cut;
|
|
3854
|
+
if (wrap) head.classList.add('hwrap');
|
|
3855
|
+
}
|
|
3856
|
+
if (typeof ResizeObserver !== 'undefined') new ResizeObserver(() => fitPills()).observe(document.querySelector('main'));
|
|
3857
|
+
new MutationObserver(() => fitPills()).observe(document.querySelector('.hpills'), { subtree: true, childList: true, characterData: true, attributes: true, attributeFilter: ['hidden'] });
|
|
3858
|
+
fitPills();
|
|
3859
|
+
document.addEventListener('keydown', (ev) => {
|
|
3860
|
+
if (ev.key === 'Escape' && document.body.classList.contains('sheet') && !preview.picking
|
|
3861
|
+
&& !(ev.target.closest && ev.target.closest('.pvnote'))) setSheet(false);
|
|
3862
|
+
});
|
|
3863
|
+
|
|
3864
|
+
/*
|
|
3865
|
+
* Swiping the page, on a touch screen.
|
|
3866
|
+
*
|
|
3867
|
+
* The page scrolled by wheel and keys only, and a phone has neither. A vertical swipe over the
|
|
3868
|
+
* picture scrolls the page the same way the wheel does, gathered into one movement per burst; a tap
|
|
3869
|
+
* is still a click (or a pick, while pointing).
|
|
3870
|
+
*/
|
|
3871
|
+
(() => {
|
|
3872
|
+
let lastY = null;
|
|
3873
|
+
$('pvbody').addEventListener('touchstart', (ev) => {
|
|
3874
|
+
lastY = ev.touches.length === 1 ? ev.touches[0].clientY : null;
|
|
3875
|
+
}, { passive: true });
|
|
3876
|
+
$('pvbody').addEventListener('touchmove', (ev) => {
|
|
3877
|
+
if (lastY === null || !preview.img || ev.touches.length !== 1) return;
|
|
3878
|
+
const y = ev.touches[0].clientY;
|
|
3879
|
+
const img = preview.img;
|
|
3880
|
+
const scale = img.naturalWidth ? img.naturalWidth / img.getBoundingClientRect().width : 1;
|
|
3881
|
+
const by = (lastY - y) * scale;
|
|
3882
|
+
lastY = y;
|
|
3883
|
+
if (Math.abs(by) < 1) return;
|
|
3884
|
+
ev.preventDefault();
|
|
3885
|
+
if (guardDriving()) return;
|
|
3886
|
+
queueScroll(by);
|
|
3887
|
+
}, { passive: false });
|
|
3888
|
+
$('pvbody').addEventListener('touchend', () => { lastY = null; }, { passive: true });
|
|
3889
|
+
})();
|
|
3781
3890
|
const abort = () => api('/api/abort', { method: 'POST',
|
|
3782
3891
|
body: JSON.stringify({ session: state.session }) }).catch(() => {});
|
|
3783
3892
|
$('stop').onclick = abort;
|
|
@@ -6017,6 +6126,8 @@ function drawTrail(activeLabel) {
|
|
|
6017
6126
|
|
|
6018
6127
|
/** Points the panel at whatever a tool call is about. Cheap to call on every event. */
|
|
6019
6128
|
function watchTool(e, done) {
|
|
6129
|
+
// On a narrow screen with the sheet shut, the browser button says something is happening.
|
|
6130
|
+
if (sheetWidth() && !document.body.classList.contains('sheet')) $('sheetbtn').classList.add('busy');
|
|
6020
6131
|
if (!follow.on) return;
|
|
6021
6132
|
const t = targetOf(e);
|
|
6022
6133
|
const verb = verbFor(e.name);
|
|
@@ -6585,7 +6696,8 @@ async function showWatched(path, asDiff) {
|
|
|
6585
6696
|
}
|
|
6586
6697
|
|
|
6587
6698
|
$('pfollow').onclick = () => setFollow(!follow.on);
|
|
6588
|
-
|
|
6699
|
+
// On a narrow screen × closes the sheet and leaves following as it was; see setSheet.
|
|
6700
|
+
$('wclose').onclick = () => { if (document.body.classList.contains('sheet')) { setSheet(false); return; } setFollow(false); };
|
|
6589
6701
|
$('rcontinue').onclick = () => { if (state.past) void continuePast(state.past); };
|
|
6590
6702
|
// Escape closes it too, unless something modal is open — a dialog owns Escape while it is up.
|
|
6591
6703
|
addEventListener('keydown', (ev) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-client.js","sourceRoot":"","sources":["../../src/web/ui-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY;IAC1B,qFAAqF;IACrF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACjG,OAAO,qBAAqB,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"ui-client.js","sourceRoot":"","sources":["../../src/web/ui-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY;IAC1B,qFAAqF;IACrF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACjG,OAAO,qBAAqB,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwuO3D,CAAC;AACF,CAAC"}
|
package/dist/web/ui-css.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-css.d.ts","sourceRoot":"","sources":["../../src/web/ui-css.ts"],"names":[],"mappings":"AA+CA,wBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"ui-css.d.ts","sourceRoot":"","sources":["../../src/web/ui-css.ts"],"names":[],"mappings":"AA+CA,wBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAwuD3C"}
|
package/dist/web/ui-css.js
CHANGED
|
@@ -919,7 +919,7 @@ textarea::placeholder{color:var(--dim)}
|
|
|
919
919
|
.send{width:31px;height:31px;flex:0 0 31px;border-radius:50%;
|
|
920
920
|
background:var(--cyan);color:var(--cyan-ink);font-size:calc(var(--ui) * 1.0714);display:grid;place-items:center}
|
|
921
921
|
.send:disabled{background:var(--line);color:var(--dim);cursor:not-allowed}
|
|
922
|
-
.chint{display:flex;gap:13px;margin-top:7px;font-size:calc(var(--ui) * 0.75);color:var(--dim)}
|
|
922
|
+
.chint{display:flex;flex-wrap:wrap;gap:4px 13px;margin-top:7px;font-size:calc(var(--ui) * 0.75);color:var(--dim);min-width:0}
|
|
923
923
|
.chint kbd{border:1px solid var(--line);border-radius:4px;padding:0 4px;font-family:var(--mono)}
|
|
924
924
|
.tinybtn{border:1px solid var(--line);border-radius:5px;padding:1px 7px;font-size:calc(var(--ui) * 0.75);
|
|
925
925
|
color:var(--muted)}
|
|
@@ -1459,7 +1459,39 @@ body.theater .whead .wp{opacity:.7}
|
|
|
1459
1459
|
.agtask{margin-top:8px;font-family:var(--mono);font-size:calc(var(--ui) * 0.8214);line-height:1.55;
|
|
1460
1460
|
color:var(--muted);white-space:pre-wrap;word-break:break-word}
|
|
1461
1461
|
|
|
1462
|
-
|
|
1462
|
+
/*
|
|
1463
|
+
* A finger, not a mouse pointer.
|
|
1464
|
+
*
|
|
1465
|
+
* Targets at least 40px, which is what a thumb can hit without hitting its neighbour; controls that
|
|
1466
|
+
* only appear on hover shown outright, since a touch screen has no hover; and fields at 16px, the
|
|
1467
|
+
* size below which iOS zooms the whole page in when one is tapped and leaves it zoomed.
|
|
1468
|
+
*/
|
|
1469
|
+
@media (pointer:coarse){
|
|
1470
|
+
.iconbtn{width:40px;height:40px}
|
|
1471
|
+
.pill{padding:8px 13px}
|
|
1472
|
+
.pvnav,.pvbtn,.pvgo,.pvpick,.pnsend,.pnalt{min-height:40px;min-width:40px}
|
|
1473
|
+
.srow{padding:12px 10px}
|
|
1474
|
+
.srowx{opacity:.8;padding:6px 10px}
|
|
1475
|
+
textarea,input,select{font-size:max(16px, var(--ui))}
|
|
1476
|
+
/* Keyboard shortcuts, on a screen with no keyboard: laid out while invisible, they widened a phone. */
|
|
1477
|
+
.chint{display:none}
|
|
1478
|
+
}
|
|
1479
|
+
|
|
1480
|
+
/*
|
|
1481
|
+
* Tablets and phones: the watch panel is a sheet, opened from the header.
|
|
1482
|
+
*
|
|
1483
|
+
* It was display:none below 1100px, which on a tablet or a phone meant no browser at all.
|
|
1484
|
+
*/
|
|
1485
|
+
.sheetbtn{display:none;position:relative}
|
|
1486
|
+
.sheetbtn.busy::after{content:'';position:absolute;top:4px;right:4px;width:7px;height:7px;border-radius:50%;
|
|
1487
|
+
background:var(--amber)}
|
|
1488
|
+
@media (max-width:1100px){
|
|
1489
|
+
.sheetbtn{display:grid}
|
|
1490
|
+
.watch,.wgrip{display:none}
|
|
1491
|
+
/* Clipped, so nothing inside can widen the page: on a phone, overflow widens the whole viewport. */
|
|
1492
|
+
body.sheet .watch:not([hidden]){display:flex;position:fixed;inset:0;z-index:40;max-width:100vw;min-width:0;
|
|
1493
|
+
width:auto;border-left:0;flex:none;overflow:hidden}
|
|
1494
|
+
}
|
|
1463
1495
|
|
|
1464
1496
|
/*
|
|
1465
1497
|
* A side question, visibly beside the conversation rather than in it — because that is exactly
|
|
@@ -1578,9 +1610,9 @@ body[data-tint="soft"]{filter:contrast(.92) brightness(1.04)}
|
|
|
1578
1610
|
.termpanes .oe{color:var(--red)}
|
|
1579
1611
|
|
|
1580
1612
|
/* ── the page, as it really renders ───────────────────────────────────────────────────────── */
|
|
1581
|
-
.pvbar{display:flex;gap:8px;align-items:center;padding:11px 14px;background:var(--panel);
|
|
1613
|
+
.pvbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:11px 14px;background:var(--panel);
|
|
1582
1614
|
border-bottom:1px solid var(--line);flex:0 0 auto}
|
|
1583
|
-
.pvbar input{flex:1;min-width:
|
|
1615
|
+
.pvbar input{flex:1 1 170px;min-width:150px;padding:8px 11px;border-radius:8px;border:1px solid var(--line);
|
|
1584
1616
|
background:var(--panel-2);font-family:var(--mono);font-size:calc(var(--ui) * 0.8929)}
|
|
1585
1617
|
.pvbar .pvnav{flex:0 0 auto;width:28px;height:28px;border-radius:7px;border:1px solid var(--line);
|
|
1586
1618
|
background:transparent;color:var(--muted);cursor:pointer;font-size:calc(var(--ui) * 1.0714);line-height:1;
|
|
@@ -1743,10 +1775,42 @@ body[data-tint="soft"]{filter:contrast(.92) brightness(1.04)}
|
|
|
1743
1775
|
.dlg .go{border-color:var(--cyan);color:var(--cyan)}
|
|
1744
1776
|
|
|
1745
1777
|
@media (max-width:820px){
|
|
1746
|
-
aside{position:
|
|
1778
|
+
aside{position:fixed;z-index:30;top:0;left:0;height:100%;box-shadow:var(--shadow);max-width:86vw}
|
|
1779
|
+
.sideshade:not([hidden]){position:fixed;inset:0;z-index:29;background:rgba(0,0,0,.35)}
|
|
1747
1780
|
.wrap,.cbox{padding-left:16px;padding-right:16px}
|
|
1748
1781
|
.tree{width:180px;flex:0 0 180px}
|
|
1749
1782
|
}
|
|
1783
|
+
/* An empty box shows its placeholder on one line: wrapped, it scrolled a one-line box on a phone. */
|
|
1784
|
+
#ta:placeholder-shown{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
|
|
1785
|
+
/*
|
|
1786
|
+
* Every pill visible, at any width: when they do not fit on one row they wrap onto rows of their
|
|
1787
|
+
* own under the header's controls, instead of scrolling sideways with no scrollbar. Decided by
|
|
1788
|
+
* measuring (fitPills), not by a breakpoint — a laptop with the sidebar open ran out of room too.
|
|
1789
|
+
*
|
|
1790
|
+
* Reported from a phone: "effort, mode, workspace, cli, provider, model is very hidden". Only the
|
|
1791
|
+
* first two fitted; the rest were off the edge of a row that gave no sign it could scroll. The
|
|
1792
|
+
* header grows to hold them — it has no overflow of its own, so the view menu inside it is not
|
|
1793
|
+
* clipped (see the header rule above).
|
|
1794
|
+
*/
|
|
1795
|
+
header.hwrap{height:auto;flex:0 0 auto;flex-wrap:wrap;row-gap:6px;padding-top:6px;padding-bottom:6px}
|
|
1796
|
+
header.hwrap .hpills{order:10;flex:1 1 100%;flex-wrap:wrap;overflow:visible;gap:6px;padding:0 0 2px}
|
|
1797
|
+
header.hwrap .pill{max-width:100%}
|
|
1798
|
+
header.hwrap .pill b{max-width:calc(100vw - 110px)}
|
|
1799
|
+
@media (max-width:820px){
|
|
1800
|
+
header.hwrap{padding-left:10px;padding-right:10px}
|
|
1801
|
+
header.hwrap .pill{padding:5px 10px}
|
|
1802
|
+
}
|
|
1803
|
+
/* Small phones — last, so it wins over the rules it narrows. */
|
|
1804
|
+
@media (max-width:560px){
|
|
1805
|
+
.whead{gap:6px;padding:8px 10px}
|
|
1806
|
+
.whead .wt,.whead .wms{display:none}
|
|
1807
|
+
.pvbar{padding:8px 10px;gap:6px}
|
|
1808
|
+
.pvbar input{flex:1 1 100%;order:-1}
|
|
1809
|
+
.pvbar .pvgo{padding:8px 11px}
|
|
1810
|
+
.pvbar .pvnav,.pvbar .pvbtn{padding:6px 9px;min-width:36px}
|
|
1811
|
+
.pvlive{font-size:0}
|
|
1812
|
+
.pvlive::first-letter{font-size:calc(var(--ui) * 0.9)}
|
|
1813
|
+
}
|
|
1750
1814
|
`;
|
|
1751
1815
|
}
|
|
1752
1816
|
//# sourceMappingURL=ui-css.js.map
|
package/dist/web/ui-css.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-css.js","sourceRoot":"","sources":["../../src/web/ui-css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC;;;;;;;;;;;;GAYG;AACH;;;;;;;;;;;;GAYG;AACH,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;CAkBZ,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,OAAe;IACjC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;gBAyBO,OAAO;;EAErB,QAAQ,CAAC,IAAI,CAAC
|
|
1
|
+
{"version":3,"file":"ui-css.js","sourceRoot":"","sources":["../../src/web/ui-css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC;;;;;;;;;;;;GAYG;AACH;;;;;;;;;;;;GAYG;AACH,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;CAkBZ,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,OAAe;IACjC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;gBAyBO,OAAO;;EAErB,QAAQ,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2sDf,CAAC;AACF,CAAC"}
|
package/dist/web/ui.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/web/ui.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,wBAAgB,IAAI,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/web/ui.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,wBAAgB,IAAI,IAAI,MAAM,CA4kB7B"}
|
package/dist/web/ui.js
CHANGED
|
@@ -23,6 +23,8 @@ export function page() {
|
|
|
23
23
|
<style>${css(MARK_MASK)}</style>
|
|
24
24
|
</head><body>
|
|
25
25
|
|
|
26
|
+
<!-- Behind the sidebar on a narrow screen: a tap outside it closes it. -->
|
|
27
|
+
<div class="sideshade" id="sideshade" hidden></div>
|
|
26
28
|
<aside id="side">
|
|
27
29
|
<div class="brand">
|
|
28
30
|
<div class="mark"></div>
|
|
@@ -50,6 +52,9 @@ export function page() {
|
|
|
50
52
|
<div class="vmenu" id="vmenu" role="listbox" hidden></div>
|
|
51
53
|
</div>
|
|
52
54
|
<div class="spacer"></div>
|
|
55
|
+
<!-- Narrow screens only: the watch panel, and so the browser, as a full-screen sheet. -->
|
|
56
|
+
<button class="iconbtn sheetbtn" id="sheetbtn" title="The browser and what KONECK is working on"
|
|
57
|
+
aria-label="Browser">▣</button>
|
|
53
58
|
<!--
|
|
54
59
|
The pills scroll; the header does not.
|
|
55
60
|
=====================================
|
package/dist/web/ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/web/ui.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,UAAU,IAAI;IAClB,OAAO;;;;;;;SAOA,GAAG,CAAC,SAAS,CAAC
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/web/ui.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,UAAU,IAAI;IAClB,OAAO;;;;;;;SAOA,GAAG,CAAC,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kDAyQ2B,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAuTxC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;EAC7C,YAAY,EAAE;;eAED,CAAC;AAChB,CAAC"}
|