@artooi/ag-ui-web-component 0.50.0 → 0.50.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.
- package/CHANGELOG.md +54 -1
- package/README.md +12 -1
- package/dist/ag-ui-web-component.bundle.js +64 -34
- package/dist/ag-ui-web-component.bundle.js.map +3 -3
- package/dist/core/ag_ui_chat.d.ts.map +1 -1
- package/dist/index.js +177 -25
- package/dist/index.js.map +2 -2
- package/dist/ui/placement/collapse_styles.d.ts.map +1 -1
- package/dist/ui/placement/panel_placement.d.ts +2 -0
- package/dist/ui/placement/panel_placement.d.ts.map +1 -1
- package/dist/ui/placement/resize_styles.d.ts.map +1 -1
- package/dist/ui/transcript/transcript_styles.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/core/ag_ui_chat.ts +29 -4
- package/src/ui/placement/collapse_styles.ts +8 -0
- package/src/ui/placement/panel_placement.ts +143 -19
- package/src/ui/placement/resize_styles.ts +9 -0
- package/src/ui/transcript/transcript_styles.ts +14 -1
- package/src/version.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ag_ui_chat.d.ts","sourceRoot":"","sources":["../../src/core/ag_ui_chat.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ag_ui_chat.d.ts","sourceRoot":"","sources":["../../src/core/ag_ui_chat.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -6008,6 +6008,7 @@ var PanelPlacement = class {
|
|
|
6008
6008
|
}
|
|
6009
6009
|
this.#dockPos = null;
|
|
6010
6010
|
this.#storeDockPosition(null);
|
|
6011
|
+
this.#placeDocked();
|
|
6011
6012
|
} else {
|
|
6012
6013
|
this.#carrySpotWithSize(sized);
|
|
6013
6014
|
}
|
|
@@ -6093,9 +6094,10 @@ var PanelPlacement = class {
|
|
|
6093
6094
|
*/
|
|
6094
6095
|
#gripInset = null;
|
|
6095
6096
|
/**
|
|
6096
|
-
* The inset standing a panel
|
|
6097
|
-
*
|
|
6098
|
-
* lasts only as long as that
|
|
6097
|
+
* The inset standing a panel at the start of a window a host's size fills, or
|
|
6098
|
+
* null: a corner panel with no spot, or a docked one with or without one. Told
|
|
6099
|
+
* apart from a host's own for the same reason, and it lasts only as long as that
|
|
6100
|
+
* size does.
|
|
6099
6101
|
*/
|
|
6100
6102
|
#fillInset = null;
|
|
6101
6103
|
/**
|
|
@@ -6115,6 +6117,13 @@ var PanelPlacement = class {
|
|
|
6115
6117
|
* syncDock, which runs on every change either can make.
|
|
6116
6118
|
*/
|
|
6117
6119
|
#dockTop = Number.POSITIVE_INFINITY;
|
|
6120
|
+
/** The bar's height, as last measured: what a fill takes away when it stamps. */
|
|
6121
|
+
#barHeight = 0;
|
|
6122
|
+
/**
|
|
6123
|
+
* What the usable box and the window measured when a fill took the bar away, and what
|
|
6124
|
+
* the bar was. Null while no fill holds it. See {@link #fillRoom}.
|
|
6125
|
+
*/
|
|
6126
|
+
#barTaken = null;
|
|
6118
6127
|
/**
|
|
6119
6128
|
* The corner the panel opens away from, once this element is placing itself.
|
|
6120
6129
|
* Null means the host's layout still decides, and the anchor is measured.
|
|
@@ -6175,7 +6184,7 @@ var PanelPlacement = class {
|
|
|
6175
6184
|
describeSurface() {
|
|
6176
6185
|
const box = this.#host.element.getBoundingClientRect();
|
|
6177
6186
|
const viewport = this.#viewport();
|
|
6178
|
-
const fullBleed = coversViewport(box,
|
|
6187
|
+
const fullBleed = coversViewport(box, this.#fillRoom());
|
|
6179
6188
|
return {
|
|
6180
6189
|
placement: this.#host.element.getAttribute("placement"),
|
|
6181
6190
|
collapseTo: this.#surface().collapseTo,
|
|
@@ -6211,7 +6220,7 @@ var PanelPlacement = class {
|
|
|
6211
6220
|
const restore = options.announce === true ? this.#captureGeometry() : null;
|
|
6212
6221
|
const viewport = this.#viewport();
|
|
6213
6222
|
const box = this.#host.element.getBoundingClientRect();
|
|
6214
|
-
if (coversViewport(box,
|
|
6223
|
+
if (coversViewport(box, this.#fillRoom())) {
|
|
6215
6224
|
return false;
|
|
6216
6225
|
}
|
|
6217
6226
|
const [edgeY, edgeX] = corner.split("-");
|
|
@@ -6253,7 +6262,9 @@ var PanelPlacement = class {
|
|
|
6253
6262
|
* corner is what the panel grows from, so restoring a position without it
|
|
6254
6263
|
* puts the box back and animates it out of the wrong side. Absent values are
|
|
6255
6264
|
* captured as absent and removed on the way back, rather than written as
|
|
6256
|
-
* empty strings that would outrank the placement.
|
|
6265
|
+
* empty strings that would outrank the placement. And what the inset is, because
|
|
6266
|
+
* one put back with no record of having come from a grip or a fill reads as a
|
|
6267
|
+
* host's own, and a phone would leave it holding the panel off the screen.
|
|
6257
6268
|
*
|
|
6258
6269
|
* The surface may have changed by the time of the undo, so the two halves are
|
|
6259
6270
|
* put back apart. Both records are, always, each to its own store, so the
|
|
@@ -6270,6 +6281,8 @@ var PanelPlacement = class {
|
|
|
6270
6281
|
const panelPos = this.#panelPos;
|
|
6271
6282
|
const dockPos = this.#dockPos ?? this.#readDockPosition();
|
|
6272
6283
|
const expandCorner = this.#expandCorner;
|
|
6284
|
+
const gripInset = this.#gripInset;
|
|
6285
|
+
const fillInset = this.#fillInset;
|
|
6273
6286
|
const cornerSpot = this.#cornerSpot ?? this.#readLauncherPosition();
|
|
6274
6287
|
const owner = this.#positionOwner();
|
|
6275
6288
|
return () => {
|
|
@@ -6292,6 +6305,8 @@ var PanelPlacement = class {
|
|
|
6292
6305
|
this.#launcherPos = launcherPos;
|
|
6293
6306
|
this.#panelPos = panelPos;
|
|
6294
6307
|
this.#expandCorner = expandCorner;
|
|
6308
|
+
this.#gripInset = gripInset;
|
|
6309
|
+
this.#fillInset = fillInset;
|
|
6295
6310
|
} else {
|
|
6296
6311
|
this.#forgetCornerPosition();
|
|
6297
6312
|
}
|
|
@@ -6378,6 +6393,24 @@ var PanelPlacement = class {
|
|
|
6378
6393
|
*/
|
|
6379
6394
|
#stampHeader() {
|
|
6380
6395
|
this.#header?.toggleAttribute("data-fills-screen", this.#fillsScreen());
|
|
6396
|
+
const element = this.#host.element;
|
|
6397
|
+
if (this.#fillsWindow() !== element.hasAttribute("data-fills-window")) {
|
|
6398
|
+
requestAnimationFrame(() => {
|
|
6399
|
+
const fills = this.#fillsWindow();
|
|
6400
|
+
if (fills !== element.hasAttribute("data-fills-window")) {
|
|
6401
|
+
this.#barTaken = fills ? { room: this.#viewport().height, window: this.#screen().height, bar: this.#barHeight } : null;
|
|
6402
|
+
element.toggleAttribute("data-fills-window", fills);
|
|
6403
|
+
}
|
|
6404
|
+
});
|
|
6405
|
+
}
|
|
6406
|
+
}
|
|
6407
|
+
/**
|
|
6408
|
+
* Whether the panel fills the window in a placement it can move in. Not one that owns
|
|
6409
|
+
* its position: full stops at the bar, so taking the bar away would make it fill the
|
|
6410
|
+
* window, and that would take the bar away for good.
|
|
6411
|
+
*/
|
|
6412
|
+
#fillsWindow() {
|
|
6413
|
+
return this.#fillsScreen() && this.#surface().panelMovable;
|
|
6381
6414
|
}
|
|
6382
6415
|
/** Put a custom property back to a previous value, or remove it if there was none. */
|
|
6383
6416
|
#restoreProperty(name, value) {
|
|
@@ -6467,6 +6500,10 @@ var PanelPlacement = class {
|
|
|
6467
6500
|
element.style.removeProperty(DOCK_RIGHT);
|
|
6468
6501
|
}
|
|
6469
6502
|
element.toggleAttribute("data-dock-anchored", target === "none" && anchor !== null);
|
|
6503
|
+
this.#barHeight = height;
|
|
6504
|
+
if (target !== "bar") {
|
|
6505
|
+
this.#barTaken = null;
|
|
6506
|
+
}
|
|
6470
6507
|
this.#dockTop = target === "bar" && height > 0 ? bar.getBoundingClientRect().top : target === "none" && anchor !== null ? anchor.getBoundingClientRect().top : Number.POSITIVE_INFINITY;
|
|
6471
6508
|
this.#placeDocked();
|
|
6472
6509
|
return height;
|
|
@@ -6489,19 +6526,43 @@ var PanelPlacement = class {
|
|
|
6489
6526
|
* block reads the host's inset before its own, so a dragged spot written
|
|
6490
6527
|
* there would hold the panel off the screen's edges. The spot itself stays,
|
|
6491
6528
|
* for the next time there is room for it.
|
|
6529
|
+
*
|
|
6530
|
+
* A host's size that makes the panel the window hangs it off the resting inset's
|
|
6531
|
+
* far side, past the top of the window with the header on it under the bar, so
|
|
6532
|
+
* it stands at the start of the room instead, moved or not, as a corner panel
|
|
6533
|
+
* does, and the stylesheet takes the bar away for as long as it does. A placement
|
|
6534
|
+
* that owns its position keeps it, whatever the host's size.
|
|
6535
|
+
*
|
|
6536
|
+
* Under data-launcher-drag="false" a spot from before the attribute is left alone
|
|
6537
|
+
* while the panel is on the screen, as a corner panel's is, and the record stays
|
|
6538
|
+
* for the day the attribute comes off.
|
|
6492
6539
|
*/
|
|
6493
6540
|
#placeDocked() {
|
|
6494
|
-
if (!this.#docked() || !this.#
|
|
6541
|
+
if (!this.#docked() || !this.#surface().panelMovable || this.dragging()) {
|
|
6495
6542
|
return;
|
|
6496
6543
|
}
|
|
6497
|
-
const
|
|
6544
|
+
const element = this.#host.element;
|
|
6545
|
+
const at2 = this.#panelMovable() ? this.#dockPos ?? this.#readDockPosition() : null;
|
|
6498
6546
|
if (at2 === null) {
|
|
6547
|
+
if (this.#dockPos !== null) {
|
|
6548
|
+
const filling = element.style.getPropertyValue("--ag-ui-inset") === this.#fillInset;
|
|
6549
|
+
if (!filling && !this.#offScreen()) {
|
|
6550
|
+
return;
|
|
6551
|
+
}
|
|
6552
|
+
this.#dockPos = null;
|
|
6553
|
+
element.style.removeProperty("--ag-ui-inset");
|
|
6554
|
+
}
|
|
6555
|
+
this.#placeUnstated();
|
|
6499
6556
|
return;
|
|
6500
6557
|
}
|
|
6501
6558
|
this.#dockPos = at2;
|
|
6502
|
-
|
|
6503
|
-
const rest =
|
|
6504
|
-
|
|
6559
|
+
element.style.removeProperty("--ag-ui-inset");
|
|
6560
|
+
const rest = element.getBoundingClientRect();
|
|
6561
|
+
const viewport = this.#viewport();
|
|
6562
|
+
if (coversViewport(rest, this.#fillRoom())) {
|
|
6563
|
+
if (hangsOff(rest, viewport, this.#screen())) {
|
|
6564
|
+
this.#standAtStart(rest);
|
|
6565
|
+
}
|
|
6505
6566
|
return;
|
|
6506
6567
|
}
|
|
6507
6568
|
this.syncResizeAnchor();
|
|
@@ -6557,7 +6618,43 @@ var PanelPlacement = class {
|
|
|
6557
6618
|
}
|
|
6558
6619
|
/** Whether the panel covers the usable viewport, as it stands now. */
|
|
6559
6620
|
#fillsScreen() {
|
|
6560
|
-
return coversViewport(this.#host.element.getBoundingClientRect(), this.#
|
|
6621
|
+
return coversViewport(this.#host.element.getBoundingClientRect(), this.#fillRoom());
|
|
6622
|
+
}
|
|
6623
|
+
/**
|
|
6624
|
+
* The box a fill is judged against: the usable one, unless taking the bar away is
|
|
6625
|
+
* what grew it.
|
|
6626
|
+
*
|
|
6627
|
+
* A host can write the bar's height into the inset it reserves. The panel fills the
|
|
6628
|
+
* box that leaves, so the bar goes, the height says 0, the host writes that, the box
|
|
6629
|
+
* grows by what the bar took, and the panel no longer fills it. Judged against that,
|
|
6630
|
+
* the bar comes back and it all goes round again every frame without end. So on the
|
|
6631
|
+
* same window, a box grown by the bar's height is the box it was, and the panel
|
|
6632
|
+
* stands where it stood with the bar gone. Grown by anything else, or on a window of
|
|
6633
|
+
* another size, it is a change of the host's or the reader's and is judged as one.
|
|
6634
|
+
* The slack is the pixel a host rounding the height up can add.
|
|
6635
|
+
*/
|
|
6636
|
+
#fillRoom() {
|
|
6637
|
+
const viewport = this.#viewport();
|
|
6638
|
+
const taken = this.#barTaken;
|
|
6639
|
+
if (taken !== null && taken.window === this.#screen().height && Math.abs(viewport.height - taken.room - taken.bar) <= 1) {
|
|
6640
|
+
return { ...viewport, height: taken.room };
|
|
6641
|
+
}
|
|
6642
|
+
return viewport;
|
|
6643
|
+
}
|
|
6644
|
+
/**
|
|
6645
|
+
* Whether the panel stands off an edge of the screen, as it stands now.
|
|
6646
|
+
*
|
|
6647
|
+
* The screen rather than the usable box: a panel under chrome the host reserved
|
|
6648
|
+
* has its controls where the host can still bring them back, and is not what a
|
|
6649
|
+
* position kept under data-launcher-drag="false" has to give way to.
|
|
6650
|
+
*/
|
|
6651
|
+
#offScreen() {
|
|
6652
|
+
const screen = this.#screen();
|
|
6653
|
+
return hangsOff(
|
|
6654
|
+
this.#host.element.getBoundingClientRect(),
|
|
6655
|
+
{ left: 0, top: 0, ...screen },
|
|
6656
|
+
screen
|
|
6657
|
+
);
|
|
6561
6658
|
}
|
|
6562
6659
|
/**
|
|
6563
6660
|
* Whether this placement lets the launcher be dragged, read per interaction
|
|
@@ -6875,6 +6972,8 @@ var PanelPlacement = class {
|
|
|
6875
6972
|
* reopen to happen: a line typed in the composer is one. A position waiting to
|
|
6876
6973
|
* be handed back under data-launcher-drag="false" waits on, because a panel that leaves for the
|
|
6877
6974
|
* host's corner as the reader starts typing is a jump with no cause they can see.
|
|
6975
|
+
* It waits no longer than the panel stays on the screen: a host's size can stand
|
|
6976
|
+
* it off an edge, where its header is out of reach until something else happens.
|
|
6878
6977
|
*/
|
|
6879
6978
|
settleLauncherPosition() {
|
|
6880
6979
|
this.#placeFromRecord(false);
|
|
@@ -6891,7 +6990,7 @@ var PanelPlacement = class {
|
|
|
6891
6990
|
}
|
|
6892
6991
|
const draggable = this.#launcherDraggable();
|
|
6893
6992
|
if (!draggable && this.#launcherPos !== null) {
|
|
6894
|
-
if (!handBack) {
|
|
6993
|
+
if (!handBack && !this.#offScreen()) {
|
|
6895
6994
|
return;
|
|
6896
6995
|
}
|
|
6897
6996
|
this.releaseLauncherPosition();
|
|
@@ -6954,8 +7053,9 @@ var PanelPlacement = class {
|
|
|
6954
7053
|
return true;
|
|
6955
7054
|
}
|
|
6956
7055
|
/**
|
|
6957
|
-
* Place a
|
|
6958
|
-
* with nothing stated to keep and no launcher of its own
|
|
7056
|
+
* Place a panel that has no spot, a corner one or a docked one, the half of
|
|
7057
|
+
* {@link #standFullBleed} with nothing stated to keep and no launcher of its own
|
|
7058
|
+
* to measure.
|
|
6959
7059
|
*
|
|
6960
7060
|
* Only an inset this element wrote comes off or goes back. One the host wrote
|
|
6961
7061
|
* inline is a token a host may state on a phone as anywhere else, and with no
|
|
@@ -6965,7 +7065,7 @@ var PanelPlacement = class {
|
|
|
6965
7065
|
const element = this.#host.element;
|
|
6966
7066
|
const inline = element.style.getPropertyValue("--ag-ui-inset");
|
|
6967
7067
|
const viewport = this.#viewport();
|
|
6968
|
-
if (!coversViewport(element.getBoundingClientRect(),
|
|
7068
|
+
if (!coversViewport(element.getBoundingClientRect(), this.#fillRoom())) {
|
|
6969
7069
|
if (inline === "" || inline === this.#fillInset) {
|
|
6970
7070
|
this.#restoreProperty("--ag-ui-inset", this.#gripInset ?? "");
|
|
6971
7071
|
this.syncResizeAnchor();
|
|
@@ -6979,11 +7079,19 @@ var PanelPlacement = class {
|
|
|
6979
7079
|
const rest = element.getBoundingClientRect();
|
|
6980
7080
|
const screen = this.#screen();
|
|
6981
7081
|
if (element.style.getPropertyValue("--ag-ui-inset") === "" && hangsOff(rest, viewport, screen)) {
|
|
6982
|
-
this.#
|
|
6983
|
-
element.style.setProperty("--ag-ui-inset", this.#fillInset);
|
|
6984
|
-
this.syncResizeAnchor();
|
|
7082
|
+
this.#standAtStart(rest);
|
|
6985
7083
|
}
|
|
6986
7084
|
}
|
|
7085
|
+
/** Stand a box a host's size fills at the start of the room the host left free. */
|
|
7086
|
+
#standAtStart(rest) {
|
|
7087
|
+
this.#fillInset = insetFrom(
|
|
7088
|
+
{ x: "left", y: "top" },
|
|
7089
|
+
atStartOf(this.#viewport(), rest),
|
|
7090
|
+
this.#screen()
|
|
7091
|
+
);
|
|
7092
|
+
this.#host.element.style.setProperty("--ag-ui-inset", this.#fillInset);
|
|
7093
|
+
this.syncResizeAnchor();
|
|
7094
|
+
}
|
|
6987
7095
|
/** The persisted position for this instance, or null. */
|
|
6988
7096
|
#readLauncherPosition() {
|
|
6989
7097
|
const raw = this.#host.readPreference(LAUNCHER_KEY);
|
|
@@ -9235,6 +9343,14 @@ var COLLAPSE_STYLES = `
|
|
|
9235
9343
|
display: none;
|
|
9236
9344
|
}
|
|
9237
9345
|
|
|
9346
|
+
/* A panel a host sized to the whole window stands on the strip, whose fixed box would
|
|
9347
|
+
draw over the composer's foot. So it goes as it does on a phone, by display, so the
|
|
9348
|
+
bar measures 0 and the host's padding goes with it, and the header's minimise
|
|
9349
|
+
control is the way back. Collapsed, the strip is the way back, so it stays. */
|
|
9350
|
+
:host([data-collapsed-to="bar"][data-fills-window]:not([collapsed])) .dock-bar {
|
|
9351
|
+
display: none;
|
|
9352
|
+
}
|
|
9353
|
+
|
|
9238
9354
|
/* History from the bar: the panel's own drawer, moved beside the bar while
|
|
9239
9355
|
the panel is away, drawn as a popover standing on the bar's end. There is
|
|
9240
9356
|
no backdrop; a press outside the bar closes it, as Escape does.
|
|
@@ -9787,6 +9903,15 @@ var RESIZE_STYLES = `
|
|
|
9787
9903
|
bottom: 0;
|
|
9788
9904
|
}
|
|
9789
9905
|
|
|
9906
|
+
/* A docked panel a host sized to the whole window has nothing to give a grip: its size
|
|
9907
|
+
is the host's, and a place a grip left would outlast that size with the bar back
|
|
9908
|
+
under it. They go as they do on a phone. A corner panel keeps them, since it has no
|
|
9909
|
+
bar to stand clear of and a grip's place is its own. */
|
|
9910
|
+
:host([data-collapsed-to="bar"][data-fills-window]) .resize-handle,
|
|
9911
|
+
:host([data-collapsed-to="none"][data-fills-window]) .resize-handle {
|
|
9912
|
+
display: none;
|
|
9913
|
+
}
|
|
9914
|
+
|
|
9790
9915
|
/* Docked: the placement owns the height, so the horizontal edges and every
|
|
9791
9916
|
corner are inert and must not advertise a drag that does nothing. The two
|
|
9792
9917
|
vertical edges remain, which is the same affordance these placements had
|
|
@@ -13025,7 +13150,18 @@ var TRANSCRIPT_STYLES = `
|
|
|
13025
13150
|
|
|
13026
13151
|
visibility rather than display: none, because a box that generates no
|
|
13027
13152
|
layout has no used values to read. Zero-sized, absolutely positioned and
|
|
13028
|
-
inert, so it costs nothing but the read.
|
|
13153
|
+
inert, so it costs nothing but the read.
|
|
13154
|
+
|
|
13155
|
+
The padding gives that box the size of the tokens, which a card narrower than
|
|
13156
|
+
one of them would scroll to reach. Scrollable overflow counts a box as its
|
|
13157
|
+
transform draws it, so a scale of nothing takes it out of that count on every
|
|
13158
|
+
side and in either direction, and leaves what is read: the padding's used values,
|
|
13159
|
+
and the containing block a percentage resolves against. Position fixed would add
|
|
13160
|
+
no scroll either, and would change that block.
|
|
13161
|
+
|
|
13162
|
+
From its own corner, which is inside whatever holds it where the centre of the
|
|
13163
|
+
padding need not be: kept for an engine that counts a point with no area. Chromium
|
|
13164
|
+
does not, so the suite cannot pin the origin. */
|
|
13029
13165
|
.viewport-probe {
|
|
13030
13166
|
position: absolute;
|
|
13031
13167
|
top: 0;
|
|
@@ -13034,6 +13170,8 @@ var TRANSCRIPT_STYLES = `
|
|
|
13034
13170
|
height: 0;
|
|
13035
13171
|
visibility: hidden;
|
|
13036
13172
|
pointer-events: none;
|
|
13173
|
+
transform: scale(0);
|
|
13174
|
+
transform-origin: 0 0;
|
|
13037
13175
|
padding: var(--_viewport-inset-top) var(--_viewport-inset-right)
|
|
13038
13176
|
var(--_viewport-inset-bottom) var(--_viewport-inset-left);
|
|
13039
13177
|
}
|
|
@@ -20112,7 +20250,21 @@ var AgUiChat = class extends HTMLElement {
|
|
|
20112
20250
|
#readyToPlace() {
|
|
20113
20251
|
this.#placement.publishVisualViewport();
|
|
20114
20252
|
this.#syncDock();
|
|
20115
|
-
return !this.#placement.dragging();
|
|
20253
|
+
return !this.#placement.dragging() && this.#hasBox();
|
|
20254
|
+
}
|
|
20255
|
+
/**
|
|
20256
|
+
* Whether this element generates a box at all. Hidden on itself or on any ancestor
|
|
20257
|
+
* it does not; a host collapsed to its launcher does, whatever its size, and that
|
|
20258
|
+
* launcher still has to be placed, which is why this is not a test of the size.
|
|
20259
|
+
*/
|
|
20260
|
+
#hasBox() {
|
|
20261
|
+
return this.getClientRects().length > 0;
|
|
20262
|
+
}
|
|
20263
|
+
/** Restore for a moment that is not a viewport's, which showing this reports anyway. */
|
|
20264
|
+
#restoreIfBoxed() {
|
|
20265
|
+
if (this.#hasBox()) {
|
|
20266
|
+
this.#placement.restoreLauncherPosition();
|
|
20267
|
+
}
|
|
20116
20268
|
}
|
|
20117
20269
|
/** Mic button mount point (input row); the control mounts on connect when enabled. */
|
|
20118
20270
|
#voiceSlot;
|
|
@@ -20884,7 +21036,7 @@ var AgUiChat = class extends HTMLElement {
|
|
|
20884
21036
|
this.#chatRegistration.join();
|
|
20885
21037
|
this.#placement.restoreSize();
|
|
20886
21038
|
requestAnimationFrame(() => {
|
|
20887
|
-
this.#
|
|
21039
|
+
this.#restoreIfBoxed();
|
|
20888
21040
|
this.#placement.syncResizeAnchor();
|
|
20889
21041
|
});
|
|
20890
21042
|
this.#strings = mergeUiStrings({ ...this.#readStringOverrides(), ...this.strings });
|
|
@@ -21134,7 +21286,7 @@ var AgUiChat = class extends HTMLElement {
|
|
|
21134
21286
|
this.#announceSurfaceChange(this.#strings.chatMinimised, null);
|
|
21135
21287
|
}
|
|
21136
21288
|
if (!collapsed) {
|
|
21137
|
-
this.#
|
|
21289
|
+
this.#restoreIfBoxed();
|
|
21138
21290
|
}
|
|
21139
21291
|
if (collapsed) {
|
|
21140
21292
|
this.setAttribute("collapsed", "");
|
|
@@ -21230,7 +21382,7 @@ var AgUiChat = class extends HTMLElement {
|
|
|
21230
21382
|
if (!this.isConnected) {
|
|
21231
21383
|
return;
|
|
21232
21384
|
}
|
|
21233
|
-
const height = this.#placement.syncDock(this.#dockBar, this.#resolveAnchor());
|
|
21385
|
+
const height = this.#hasBox() ? this.#placement.syncDock(this.#dockBar, this.#resolveAnchor()) : 0;
|
|
21234
21386
|
if (height === this.#barHeight) {
|
|
21235
21387
|
return;
|
|
21236
21388
|
}
|
|
@@ -22493,7 +22645,7 @@ function setControlValue(el2, value) {
|
|
|
22493
22645
|
}
|
|
22494
22646
|
|
|
22495
22647
|
// src/version.ts
|
|
22496
|
-
var VERSION = "0.50.
|
|
22648
|
+
var VERSION = "0.50.1";
|
|
22497
22649
|
export {
|
|
22498
22650
|
ATTACHMENT_EVENT,
|
|
22499
22651
|
AgUiChat,
|