@aceshooting/lyra-ui 8.2.2 → 8.2.3
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 +9 -0
- package/README.md +2 -4
- package/custom-elements.json +1 -1
- package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.styles.js +1 -1
- package/dist/components/agent-tools/agent-trace/agent-trace.styles.js +1 -0
- package/dist/components/agent-tools/approval-queue/approval-queue.styles.js +1 -0
- package/dist/components/agent-tools/browser-frame/browser-frame.styles.js +1 -0
- package/dist/components/agent-tools/compare-panel/compare-panel.styles.js +1 -0
- package/dist/components/agent-tools/eval-result/eval-result.styles.js +1 -0
- package/dist/components/agent-tools/mcp-app/mcp-app.styles.js +1 -0
- package/dist/components/agent-tools/prompt-studio/prompt-studio.styles.js +1 -1
- package/dist/components/agent-tools/schema-viewer/schema-viewer.styles.js +1 -1
- package/dist/components/agent-tools/span-waterfall/span-waterfall.styles.js +1 -0
- package/dist/components/agent-tools/subagent-panel/subagent-panel.styles.js +1 -1
- package/dist/components/agent-tools/trace-tree/trace-tree.styles.js +1 -0
- package/dist/components/charts/chart/chart.styles.js +1 -0
- package/dist/components/conversation/agent-workspace/agent-workspace.styles.js +1 -0
- package/dist/components/conversation/chat-viewport/chat-viewport.styles.js +1 -0
- package/dist/components/conversation/code-block/code-block.styles.js +7 -0
- package/dist/components/conversation/message-parts/message-parts.styles.js +1 -0
- package/dist/components/conversation/prompt-input/prompt-input.styles.js +1 -0
- package/dist/components/conversation/prompt-queue/prompt-queue.styles.js +1 -0
- package/dist/components/conversation/realtime-session/realtime-session.styles.js +1 -1
- package/dist/components/data/calendar/calendar.styles.js +1 -0
- package/dist/components/data/data-grid/data-grid.styles.js +1 -0
- package/dist/components/data/pagination/pagination.styles.js +1 -0
- package/dist/components/data/query-builder/query-builder.styles.js +1 -0
- package/dist/components/data/table/table.styles.js +1 -0
- package/dist/components/forms/input/time-input.styles.js +1 -0
- package/dist/components/layout/button-group/button-group.styles.js +4 -9
- package/dist/components/layout/card/card.styles.js +4 -0
- package/dist/components/layout/carousel/carousel.styles.js +1 -0
- package/dist/components/layout/control-group/control-group.styles.js +1 -0
- package/dist/components/layout/dashboard-grid/dashboard-grid.styles.js +1 -0
- package/dist/components/layout/page/page.styles.js +1 -0
- package/dist/components/media/lightbox/lightbox.styles.js +1 -0
- package/dist/components/media/map/map-loader.d.ts +3 -3
- package/dist/components/media/map/map-loader.js +1 -1
- package/dist/components/media/map/map.class.d.ts +3 -2
- package/dist/components/media/map/map.styles.js +207 -9
- package/dist/components/media/video/video.styles.js +1 -0
- package/dist/components/media/video-playlist/video-playlist.styles.js +1 -0
- package/dist/components/media/zoomable-frame/zoomable-frame.styles.js +1 -0
- package/dist/components/retrieval/claim-evidence/claim-evidence.styles.js +1 -0
- package/dist/components/retrieval/embedding-explorer/embedding-explorer.styles.js +1 -0
- package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.styles.js +1 -0
- package/dist/components/retrieval/rag-answer/rag-answer.styles.js +1 -1
- package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.styles.js +1 -0
- package/dist/components/retrieval/retrieval-compare/retrieval-compare.styles.js +1 -0
- package/dist/components/retrieval/retrieval-trace/retrieval-trace.styles.js +1 -0
- package/dist/components/utility/diff-view/diff-view.styles.js +5 -0
- package/dist/components/viewers/document-compare/document-compare.styles.js +1 -0
- package/dist/components/viewers/notebook-viewer/notebook-viewer.styles.js +1 -0
- package/dist/internal/package-metadata.d.ts +1 -1
- package/dist/internal/package-metadata.js +1 -1
- package/llms/components/lr-map.md +6 -6
- package/llms/peers.md +1 -1
- package/llms-full.txt +6 -6
- package/package.json +4 -4
- package/vscode-html-data.json +1 -1
- package/web-types.json +2 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import{css}from"lit";const styles=css`
|
|
2
|
-
:host { display: block; container-type: inline-size; }
|
|
2
|
+
:host { display: block; container-type: inline-size; contain-intrinsic-inline-size: var(--lr-size-20rem); }
|
|
3
3
|
[part='base'] { display: flex; flex-direction: column; gap: var(--lr-space-m); }
|
|
4
4
|
[part='heading'], [part='runs-heading'] { margin: 0; font-size: var(--lr-font-size-lg); font-weight: var(--lr-font-weight-semibold); }
|
|
5
5
|
[part='metrics'] { display: grid; grid-template-columns: repeat(auto-fit, minmax(var(--lr-size-10rem), 1fr)); gap: var(--lr-space-s); }
|
|
@@ -4,6 +4,7 @@ import{css}from"lit";const styles=css`
|
|
|
4
4
|
/* Makes the host a query container so the @container rule below reacts to the frame's own
|
|
5
5
|
allocated width (a sidebar, a split pane, a dialog) instead of the viewport's. */
|
|
6
6
|
container-type: inline-size;
|
|
7
|
+
contain-intrinsic-inline-size: var(--lr-size-20rem);
|
|
7
8
|
}
|
|
8
9
|
[part='base'] {
|
|
9
10
|
display: flex;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import{css}from"lit";const styles=css`
|
|
2
|
-
:host { display: block; container-type: inline-size; }
|
|
2
|
+
:host { display: block; container-type: inline-size; contain-intrinsic-inline-size: var(--lr-size-20rem); }
|
|
3
3
|
[part='base'] { display: flex; flex-direction: column; gap: var(--lr-space-m); }
|
|
4
4
|
[part='toolbar'] { display: flex; flex-wrap: wrap; gap: var(--lr-space-s); align-items: center; }
|
|
5
5
|
[part='toolbar'] h2 { min-inline-size: 0; flex: 1; margin: 0; font-size: var(--lr-font-size-lg); }
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import{css}from"lit";const styles=css`
|
|
2
|
-
:host { display: block; container-type: inline-size; }
|
|
2
|
+
:host { display: block; container-type: inline-size; contain-intrinsic-inline-size: var(--lr-size-20rem); }
|
|
3
3
|
ul { display: flex; flex-direction: column; gap: var(--lr-space-xs); margin: 0; padding-inline-start: var(--lr-space-l); list-style: none; }
|
|
4
4
|
[part='tree'] { padding-inline-start: 0; }
|
|
5
5
|
[part~='node'] { min-inline-size: 0; border-inline-start: var(--lr-border-width-thin) solid var(--lr-color-border); padding-inline-start: var(--lr-space-s); }
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import{css}from"lit";const styles=css`
|
|
2
|
-
:host { display: block; container-type: inline-size; }
|
|
2
|
+
:host { display: block; container-type: inline-size; contain-intrinsic-inline-size: var(--lr-size-20rem); }
|
|
3
3
|
[part='list'] { display: flex; flex-direction: column; gap: var(--lr-space-xs); margin: 0; padding: 0; list-style: none; }
|
|
4
4
|
[part~='run'] { margin-inline-start: calc(var(--lr-subagent-depth, 0) * var(--lr-space-l)); border: var(--lr-border-width-thin) solid var(--lr-color-border); border-radius: var(--lr-radius); overflow: hidden; }
|
|
5
5
|
[part~='run-selected'] {
|
|
@@ -2,6 +2,7 @@ import{css}from"lit";const styles=css`
|
|
|
2
2
|
:host {
|
|
3
3
|
display: block;
|
|
4
4
|
container-type: inline-size;
|
|
5
|
+
contain-intrinsic-inline-size: var(--lr-size-20rem);
|
|
5
6
|
--_lr-trace-tree-bar-column: var(--lr-size-6rem);
|
|
6
7
|
--_lr-trace-tree-tokens-in-column: 0;
|
|
7
8
|
--_lr-trace-tree-tokens-out-column: 0;
|
|
@@ -7,6 +7,7 @@ import{css}from"lit";const styles=css`
|
|
|
7
7
|
min-block-size: var(--lr-chart-height, var(--lr-size-280px));
|
|
8
8
|
block-size: auto;
|
|
9
9
|
container-type: inline-size;
|
|
10
|
+
contain-intrinsic-inline-size: var(--lr-size-20rem);
|
|
10
11
|
/* Chart.js renders to canvas, not the DOM, so it can't consume CSS
|
|
11
12
|
var() directly — chart.ts's themeColors() resolves these once per
|
|
12
13
|
draw() via getComputedStyle, same pattern as heatmap.ts's scale-lo/-hi.
|
|
@@ -167,6 +167,13 @@ import{css}from"lit";const styles=css`
|
|
|
167
167
|
[part='pre'] {
|
|
168
168
|
margin: 0;
|
|
169
169
|
padding: var(--lr-space-s) var(--lr-space-m);
|
|
170
|
+
/* The body owns scrolling, so this descendant's painted box must grow to the longest
|
|
171
|
+
unwrapped line instead of stopping at the body's initially visible width. The 100%
|
|
172
|
+
minimum keeps short code filling the scrollport; max-content extends the background and
|
|
173
|
+
line-state painting through the full horizontal overflow range. */
|
|
174
|
+
box-sizing: border-box;
|
|
175
|
+
inline-size: max-content;
|
|
176
|
+
min-inline-size: 100%;
|
|
170
177
|
/* Source code is read left-to-right regardless of the surrounding document
|
|
171
178
|
direction -- like every code surface (VS Code, GitHub, devtools). Without
|
|
172
179
|
this, an ancestor dir="rtl" bidi-reorders each line (a trailing ';' jumps
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import{css}from"lit";const styles=css`
|
|
2
|
-
:host { display: block; container-type: inline-size; }
|
|
2
|
+
:host { display: block; container-type: inline-size; contain-intrinsic-inline-size: var(--lr-size-20rem); }
|
|
3
3
|
[part='base'] { display: flex; flex-direction: column; gap: var(--lr-space-m); }
|
|
4
4
|
[part='header'] { display: grid; grid-template-columns: auto minmax(var(--lr-size-8rem), 1fr) auto; gap: var(--lr-space-s); align-items: center; }
|
|
5
5
|
[part='activity'] { min-inline-size: 0; }
|
|
@@ -7,6 +7,7 @@ import{css}from"lit";const styles=css`
|
|
|
7
7
|
declare container-type on some ancestor whose box crosses the same threshold, making it
|
|
8
8
|
effectively dead code out of the box. */
|
|
9
9
|
container-type: inline-size;
|
|
10
|
+
contain-intrinsic-inline-size: var(--lr-size-20rem);
|
|
10
11
|
--lr-calendar-day-min-block-size: var(--lr-size-6rem);
|
|
11
12
|
/* Component-scoped indirection over the shared --lr-color-brand-quiet token, so a consumer
|
|
12
13
|
can retint the persistent selected-day highlight without also recoloring
|
|
@@ -27,6 +27,7 @@ import{css}from"lit";const styles=css`
|
|
|
27
27
|
position: relative;
|
|
28
28
|
isolation: isolate;
|
|
29
29
|
container-type: inline-size;
|
|
30
|
+
contain-intrinsic-inline-size: var(--lr-size-20rem);
|
|
30
31
|
overflow: hidden;
|
|
31
32
|
border: var(--border-width) solid var(--border-color);
|
|
32
33
|
border-radius: var(--border-radius);
|
|
@@ -3,6 +3,7 @@ import{css}from"lit";const styles=css`
|
|
|
3
3
|
display: block;
|
|
4
4
|
min-inline-size: 0;
|
|
5
5
|
container-type: inline-size;
|
|
6
|
+
contain-intrinsic-inline-size: var(--lr-size-20rem);
|
|
6
7
|
/* Both knobs read the shared control ladder, which owns every tier and matches both the s/m/l
|
|
7
8
|
and small/medium/large spellings in one selector list. Keeping the public
|
|
8
9
|
--lr-pagination-* names in front lets a consumer retune this component alone, while the
|
|
@@ -15,6 +15,7 @@ import{css}from"lit";const styles=css`
|
|
|
15
15
|
/* Makes [part='base'] a query container so the @container rules below can
|
|
16
16
|
react to the table's own available width instead of the viewport's. */
|
|
17
17
|
container-type: inline-size;
|
|
18
|
+
contain-intrinsic-inline-size: var(--lr-size-20rem);
|
|
18
19
|
}
|
|
19
20
|
[part='filter-label'] {
|
|
20
21
|
display: flex;
|
|
@@ -5,15 +5,10 @@ import{css}from"lit";const styles=css`
|
|
|
5
5
|
group's own allocated width (a sidebar, a split pane, a dialog) instead of the
|
|
6
6
|
viewport's — a group can be narrow on a wide screen and vice versa. */
|
|
7
7
|
container-type: inline-size;
|
|
8
|
-
/*
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
*this* box, and per the CSS Containment spec a size-contained box's content-dependent sizing
|
|
13
|
-
resolves as if it had no content at all (verified in Chromium: fit-content collapsed to the
|
|
14
|
-
same 0 this rule exists to prevent). Only a length/token floor survives containment, so this
|
|
15
|
-
reuses the hit-area floor already used as a "smallest a control should ever be" minimum
|
|
16
|
-
throughout the library instead of inventing a group-specific magic number. */
|
|
8
|
+
/* Size containment removes content-based intrinsic sizing. This compact fallback keeps an
|
|
9
|
+
unallocated group wide enough to lay out ordinary actions and lets its narrow query wrap
|
|
10
|
+
longer sets; the hit-area minimum remains the hard lower bound under tighter allocation. */
|
|
11
|
+
contain-intrinsic-inline-size: var(--lr-size-12rem);
|
|
17
12
|
min-inline-size: var(--lr-icon-button-size);
|
|
18
13
|
max-inline-size: 100%;
|
|
19
14
|
vertical-align: middle;
|
|
@@ -3,6 +3,10 @@ import{css}from"lit";const styles=css`
|
|
|
3
3
|
display: block;
|
|
4
4
|
min-inline-size: 0;
|
|
5
5
|
container-type: inline-size;
|
|
6
|
+
/* Inline-size containment deliberately removes content-based intrinsic sizing. Supply the
|
|
7
|
+
centered/shrink-to-fit fallback that lets a standalone card remain visible while definite
|
|
8
|
+
allocations (grid tracks, percentages, explicit inline-size) continue to win normally. */
|
|
9
|
+
contain-intrinsic-inline-size: var(--lr-size-20rem);
|
|
6
10
|
}
|
|
7
11
|
[part="base"] {
|
|
8
12
|
position: relative;
|
|
@@ -5,6 +5,7 @@ import{css}from"lit";const styles=css`
|
|
|
5
5
|
size (a dashboard-grid is commonly embedded in a panel of varying width, not the viewport)
|
|
6
6
|
-- same convention as lr-button-group/lr-control-group's own container-query approach. */
|
|
7
7
|
container-type: inline-size;
|
|
8
|
+
contain-intrinsic-inline-size: var(--lr-size-20rem);
|
|
8
9
|
min-inline-size: 0;
|
|
9
10
|
}
|
|
10
11
|
|
|
@@ -13,6 +13,7 @@ import{css}from"lit";const styles=css`
|
|
|
13
13
|
inset: 0;
|
|
14
14
|
z-index: var(--lr-overlay-stack-index, var(--lr-layer-modal));
|
|
15
15
|
container-type: inline-size;
|
|
16
|
+
contain-intrinsic-inline-size: var(--lr-size-20rem);
|
|
16
17
|
padding-block-start: max(var(--lr-space-l), var(--lr-safe-area-top));
|
|
17
18
|
padding-block-end: max(var(--lr-space-l), var(--lr-safe-area-bottom));
|
|
18
19
|
padding-inline-start: max(var(--lr-space-l), var(--lr-safe-area-inline-start));
|
|
@@ -64,8 +64,8 @@ export interface MaplibreModule {
|
|
|
64
64
|
/**
|
|
65
65
|
* Lazily loads the optional peer dependency `maplibre-gl` once per page.
|
|
66
66
|
* Resolves to `null` (with a one-time warning) if it isn't installed —
|
|
67
|
-
* mirrors `<lr-flag>`'s peer-dependency pattern.
|
|
68
|
-
*
|
|
69
|
-
*
|
|
67
|
+
* mirrors `<lr-flag>`'s peer-dependency pattern. `<lr-map>` supplies the styles for MapLibre's
|
|
68
|
+
* generated DOM inside its shadow root. MapLibre v6 consumers also configure its module-worker URL
|
|
69
|
+
* for their bundler once they install the peer; v5's standard build includes its worker.
|
|
70
70
|
*/
|
|
71
71
|
export declare function loadMaplibre(): Promise<MaplibreModule | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{resolveOptionalPeerCapability,unwrapOptionalPeerDefault}from"../../../internal/optional-peer-capabilities.js";const MAP_METHODS=["getCenter","getZoom","setCenter","setZoom","resize","remove","on","once","setStyle","getSource","addSource","removeSource","getLayer","addLayer","removeLayer","setPaintProperty","queryRenderedFeatures"];const MARKER_METHODS=["setLngLat","setPopup","getPopup","addTo","remove"];const POPUP_METHODS=["setHTML","setText"];function isObjectLike(value){return(typeof value==="object"||typeof value==="function")&&value!==null}function isConstructor(value){if(typeof value!=="function")return false;try{Reflect.construct(Object,[],value);return true}catch{return false}}function missingConstructorCapability(module,name,methods){const Constructor=module[name];if(!isConstructor(Constructor))return name;const prototype=Constructor.prototype;if(!isObjectLike(prototype))return`${name}.prototype`;for(const method of methods){if(typeof prototype[method]!=="function")return`${name}.prototype.${method}`}return void 0}function missingMaplibreCapability(candidate){if(!isObjectLike(candidate))return"module namespace";return missingConstructorCapability(candidate,"Map",MAP_METHODS)??missingConstructorCapability(candidate,"Marker",MARKER_METHODS)??missingConstructorCapability(candidate,"Popup",POPUP_METHODS)}function isMaplibreModule(candidate){return missingMaplibreCapability(candidate)===void 0}function resolveMaplibreModule(value){const module=resolveOptionalPeerCapability(value,isMaplibreModule);if(module)return module;const candidate=unwrapOptionalPeerDefault(value);const missing=missingMaplibreCapability(candidate)??"module namespace";throw new Error(`Invalid optional peer \`maplibre-gl\`: missing or invalid \`${missing}\` capability.`)}let maplibre;async function loadMaplibreModule(importer=()=>import("maplibre-gl")){try{return resolveMaplibreModule(await importer())}catch(error){console.warn("<lr-map> needs the optional peer dependency `maplibre-gl` \u2014 install it with `pnpm add maplibre-gl
|
|
1
|
+
import{resolveOptionalPeerCapability,unwrapOptionalPeerDefault}from"../../../internal/optional-peer-capabilities.js";const MAP_METHODS=["getCenter","getZoom","setCenter","setZoom","resize","remove","on","once","setStyle","getSource","addSource","removeSource","getLayer","addLayer","removeLayer","setPaintProperty","queryRenderedFeatures"];const MARKER_METHODS=["setLngLat","setPopup","getPopup","addTo","remove"];const POPUP_METHODS=["setHTML","setText"];function isObjectLike(value){return(typeof value==="object"||typeof value==="function")&&value!==null}function isConstructor(value){if(typeof value!=="function")return false;try{Reflect.construct(Object,[],value);return true}catch{return false}}function missingConstructorCapability(module,name,methods){const Constructor=module[name];if(!isConstructor(Constructor))return name;const prototype=Constructor.prototype;if(!isObjectLike(prototype))return`${name}.prototype`;for(const method of methods){if(typeof prototype[method]!=="function")return`${name}.prototype.${method}`}return void 0}function missingMaplibreCapability(candidate){if(!isObjectLike(candidate))return"module namespace";return missingConstructorCapability(candidate,"Map",MAP_METHODS)??missingConstructorCapability(candidate,"Marker",MARKER_METHODS)??missingConstructorCapability(candidate,"Popup",POPUP_METHODS)}function isMaplibreModule(candidate){return missingMaplibreCapability(candidate)===void 0}function resolveMaplibreModule(value){const module=resolveOptionalPeerCapability(value,isMaplibreModule);if(module)return module;const candidate=unwrapOptionalPeerDefault(value);const missing=missingMaplibreCapability(candidate)??"module namespace";throw new Error(`Invalid optional peer \`maplibre-gl\`: missing or invalid \`${missing}\` capability.`)}let maplibre;async function loadMaplibreModule(importer=()=>import("maplibre-gl")){try{return resolveMaplibreModule(await importer())}catch(error){console.warn("<lr-map> needs the optional peer dependency `maplibre-gl` \u2014 install it with `pnpm add maplibre-gl`.",error);return null}}function loadMaplibre(){if(!maplibre){maplibre=loadMaplibreModule()}return maplibre}export{loadMaplibre,loadMaplibreModule};
|
|
@@ -88,8 +88,9 @@ export interface LyraMapEventMap {
|
|
|
88
88
|
* independent of `choropleth`'s field/stops color-interpolation), plus a peer-neutral
|
|
89
89
|
* `map` getter for common imperative operations. Its runtime value is the underlying MapLibre
|
|
90
90
|
* map, while its declaration stays independent of the optional peer. Requires `maplibre-gl`
|
|
91
|
-
* v5 or v6
|
|
92
|
-
* its
|
|
91
|
+
* v5 or v6; the component styles MapLibre's generated canvas, marker, popup, and control DOM
|
|
92
|
+
* inside its shadow root. MapLibre v6 is ESM-only, requires WebGL2, and needs its module-worker
|
|
93
|
+
* URL configured once; v5's standard build includes its worker.
|
|
93
94
|
*
|
|
94
95
|
* The underlying `maplibregl.Map` — and the WebGL context it opens — isn't
|
|
95
96
|
* constructed until this element is first visible in the viewport (tracked
|
|
@@ -22,6 +22,173 @@ import{css}from"lit";const styles=css`
|
|
|
22
22
|
[part='container'] {
|
|
23
23
|
position: absolute;
|
|
24
24
|
inset: 0;
|
|
25
|
+
inline-size: 100%;
|
|
26
|
+
block-size: 100%;
|
|
27
|
+
overflow: hidden;
|
|
28
|
+
}
|
|
29
|
+
/* MapLibre creates these nodes inside the container above, hence inside this component's
|
|
30
|
+
shadow root. Page-level peer CSS cannot reach them; the wrapper owns the layout and
|
|
31
|
+
interaction rules for the MapLibre capabilities it exposes. */
|
|
32
|
+
.maplibregl-canvas-container {
|
|
33
|
+
inline-size: 100%;
|
|
34
|
+
block-size: 100%;
|
|
35
|
+
}
|
|
36
|
+
.maplibregl-canvas {
|
|
37
|
+
position: absolute;
|
|
38
|
+
inset-block-start: 0;
|
|
39
|
+
inset-inline-start: 0;
|
|
40
|
+
}
|
|
41
|
+
.maplibregl-canvas-container.maplibregl-interactive {
|
|
42
|
+
cursor: grab;
|
|
43
|
+
user-select: none;
|
|
44
|
+
}
|
|
45
|
+
.maplibregl-canvas-container.maplibregl-interactive:active {
|
|
46
|
+
cursor: grabbing;
|
|
47
|
+
}
|
|
48
|
+
.maplibregl-canvas-container.maplibregl-touch-zoom-rotate,
|
|
49
|
+
.maplibregl-canvas-container.maplibregl-touch-zoom-rotate .maplibregl-canvas {
|
|
50
|
+
touch-action: pan-x pan-y;
|
|
51
|
+
}
|
|
52
|
+
.maplibregl-canvas-container.maplibregl-touch-drag-pan,
|
|
53
|
+
.maplibregl-canvas-container.maplibregl-touch-drag-pan .maplibregl-canvas {
|
|
54
|
+
touch-action: pinch-zoom;
|
|
55
|
+
}
|
|
56
|
+
.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan,
|
|
57
|
+
.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan .maplibregl-canvas {
|
|
58
|
+
touch-action: none;
|
|
59
|
+
}
|
|
60
|
+
.maplibregl-marker {
|
|
61
|
+
position: absolute;
|
|
62
|
+
inset-block-start: 0;
|
|
63
|
+
inset-inline-start: 0;
|
|
64
|
+
inline-size: max-content;
|
|
65
|
+
will-change: transform;
|
|
66
|
+
}
|
|
67
|
+
.maplibregl-popup {
|
|
68
|
+
position: absolute;
|
|
69
|
+
inset-block-start: 0;
|
|
70
|
+
inset-inline-start: 0;
|
|
71
|
+
z-index: var(--lr-layer-content);
|
|
72
|
+
display: flex;
|
|
73
|
+
will-change: transform;
|
|
74
|
+
pointer-events: none;
|
|
75
|
+
color: var(--lr-color-text);
|
|
76
|
+
font-family: var(--lr-font);
|
|
77
|
+
font-size: var(--lr-font-size-sm);
|
|
78
|
+
line-height: var(--lr-line-height-normal);
|
|
79
|
+
}
|
|
80
|
+
.maplibregl-popup-anchor-top,
|
|
81
|
+
.maplibregl-popup-anchor-top-left,
|
|
82
|
+
.maplibregl-popup-anchor-top-right {
|
|
83
|
+
flex-direction: column;
|
|
84
|
+
}
|
|
85
|
+
.maplibregl-popup-anchor-bottom,
|
|
86
|
+
.maplibregl-popup-anchor-bottom-left,
|
|
87
|
+
.maplibregl-popup-anchor-bottom-right {
|
|
88
|
+
flex-direction: column-reverse;
|
|
89
|
+
}
|
|
90
|
+
.maplibregl-popup-anchor-left {
|
|
91
|
+
flex-direction: row;
|
|
92
|
+
}
|
|
93
|
+
.maplibregl-popup-anchor-right {
|
|
94
|
+
flex-direction: row-reverse;
|
|
95
|
+
}
|
|
96
|
+
:host(:dir(rtl)) .maplibregl-popup-anchor-left {
|
|
97
|
+
flex-direction: row-reverse;
|
|
98
|
+
}
|
|
99
|
+
:host(:dir(rtl)) .maplibregl-popup-anchor-right {
|
|
100
|
+
flex-direction: row;
|
|
101
|
+
}
|
|
102
|
+
.maplibregl-popup-tip {
|
|
103
|
+
inline-size: 0;
|
|
104
|
+
block-size: 0;
|
|
105
|
+
border: var(--lr-size-0-625rem) solid transparent;
|
|
106
|
+
z-index: var(--lr-layer-content);
|
|
107
|
+
}
|
|
108
|
+
.maplibregl-popup-anchor-top .maplibregl-popup-tip {
|
|
109
|
+
align-self: center;
|
|
110
|
+
border-block-start: none;
|
|
111
|
+
border-block-end-color: var(--lr-color-surface-overlay);
|
|
112
|
+
}
|
|
113
|
+
.maplibregl-popup-anchor-top-left .maplibregl-popup-tip {
|
|
114
|
+
align-self: flex-start;
|
|
115
|
+
border-block-start: none;
|
|
116
|
+
border-inline-start: none;
|
|
117
|
+
border-block-end-color: var(--lr-color-surface-overlay);
|
|
118
|
+
}
|
|
119
|
+
.maplibregl-popup-anchor-top-right .maplibregl-popup-tip {
|
|
120
|
+
align-self: flex-end;
|
|
121
|
+
border-block-start: none;
|
|
122
|
+
border-inline-end: none;
|
|
123
|
+
border-block-end-color: var(--lr-color-surface-overlay);
|
|
124
|
+
}
|
|
125
|
+
.maplibregl-popup-anchor-bottom .maplibregl-popup-tip {
|
|
126
|
+
align-self: center;
|
|
127
|
+
border-block-end: none;
|
|
128
|
+
border-block-start-color: var(--lr-color-surface-overlay);
|
|
129
|
+
}
|
|
130
|
+
.maplibregl-popup-anchor-bottom-left .maplibregl-popup-tip {
|
|
131
|
+
align-self: flex-start;
|
|
132
|
+
border-block-end: none;
|
|
133
|
+
border-inline-start: none;
|
|
134
|
+
border-block-start-color: var(--lr-color-surface-overlay);
|
|
135
|
+
}
|
|
136
|
+
.maplibregl-popup-anchor-bottom-right .maplibregl-popup-tip {
|
|
137
|
+
align-self: flex-end;
|
|
138
|
+
border-block-end: none;
|
|
139
|
+
border-inline-end: none;
|
|
140
|
+
border-block-start-color: var(--lr-color-surface-overlay);
|
|
141
|
+
}
|
|
142
|
+
.maplibregl-popup-anchor-left .maplibregl-popup-tip {
|
|
143
|
+
align-self: center;
|
|
144
|
+
border-inline-start: none;
|
|
145
|
+
border-inline-end-color: var(--lr-color-surface-overlay);
|
|
146
|
+
}
|
|
147
|
+
.maplibregl-popup-anchor-right .maplibregl-popup-tip {
|
|
148
|
+
align-self: center;
|
|
149
|
+
border-inline-end: none;
|
|
150
|
+
border-inline-start-color: var(--lr-color-surface-overlay);
|
|
151
|
+
}
|
|
152
|
+
.maplibregl-popup-content {
|
|
153
|
+
position: relative;
|
|
154
|
+
min-inline-size: var(--lr-icon-button-size);
|
|
155
|
+
padding: var(--lr-space-m);
|
|
156
|
+
padding-inline-end: calc(var(--lr-icon-button-size) + var(--lr-space-xs));
|
|
157
|
+
border: var(--lr-border-width-thin) solid var(--lr-color-border);
|
|
158
|
+
border-radius: var(--lr-radius);
|
|
159
|
+
background: var(--lr-color-surface-overlay);
|
|
160
|
+
box-shadow: var(--lr-shadow-m);
|
|
161
|
+
pointer-events: auto;
|
|
162
|
+
overflow-wrap: anywhere;
|
|
163
|
+
}
|
|
164
|
+
.maplibregl-popup-close-button {
|
|
165
|
+
position: absolute;
|
|
166
|
+
inset-block-start: 0;
|
|
167
|
+
inset-inline-end: 0;
|
|
168
|
+
display: inline-flex;
|
|
169
|
+
align-items: center;
|
|
170
|
+
justify-content: center;
|
|
171
|
+
min-inline-size: var(--lr-icon-button-size);
|
|
172
|
+
min-block-size: var(--lr-icon-button-size);
|
|
173
|
+
padding: 0;
|
|
174
|
+
border: 0;
|
|
175
|
+
border-radius: var(--lr-radius);
|
|
176
|
+
background: transparent;
|
|
177
|
+
color: var(--lr-color-text-quiet);
|
|
178
|
+
font: inherit;
|
|
179
|
+
cursor: pointer;
|
|
180
|
+
}
|
|
181
|
+
.maplibregl-popup-close-button:hover {
|
|
182
|
+
background: var(--lr-color-brand-quiet);
|
|
183
|
+
color: var(--lr-color-brand);
|
|
184
|
+
}
|
|
185
|
+
.maplibregl-popup-close-button:active {
|
|
186
|
+
background: color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active));
|
|
187
|
+
color: var(--lr-color-brand);
|
|
188
|
+
}
|
|
189
|
+
.maplibregl-popup-close-button:focus-visible {
|
|
190
|
+
outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);
|
|
191
|
+
outline-offset: calc(-1 * var(--lr-focus-ring-offset));
|
|
25
192
|
}
|
|
26
193
|
/* Mirrors docx-viewer.styles.ts's identical [part='error'] treatment for the same "optional
|
|
27
194
|
peer dependency missing" failure shape. */
|
|
@@ -69,15 +236,8 @@ import{css}from"lit";const styles=css`
|
|
|
69
236
|
flex: 0 0 auto;
|
|
70
237
|
}
|
|
71
238
|
|
|
72
|
-
/*
|
|
73
|
-
|
|
74
|
-
tells them to add) can never reach across the shadow boundary. Without it the attribution
|
|
75
|
-
control is an unstyled <details>/<summary>: the corner anchors have no positioning so the
|
|
76
|
-
attribution flows in-line BELOW the canvas, and the <summary> shows the browser's default
|
|
77
|
-
disclosure triangle (a stray "▼"). Porting the essential positioning + summary reset here --
|
|
78
|
-
the same approach pdf-viewer.styles.ts uses for pdf.js's textLayer CSS -- anchors the
|
|
79
|
-
attribution to the map corner as an overlay and removes the marker. Only the attribution/
|
|
80
|
-
container rules are ported (this wrapper exposes no zoom/geolocate/etc. controls). */
|
|
239
|
+
/* MapLibre's attribution control is generated in the same shadow-local container. Keep it
|
|
240
|
+
anchored over the map and use Lyra's own surface, typography, and interaction tokens. */
|
|
81
241
|
.maplibregl-ctrl-top-left,
|
|
82
242
|
.maplibregl-ctrl-top-right,
|
|
83
243
|
.maplibregl-ctrl-bottom-left,
|
|
@@ -105,6 +265,7 @@ import{css}from"lit";const styles=css`
|
|
|
105
265
|
.maplibregl-ctrl {
|
|
106
266
|
margin: var(--lr-space-xs);
|
|
107
267
|
pointer-events: auto;
|
|
268
|
+
transform: translate(0);
|
|
108
269
|
}
|
|
109
270
|
.maplibregl-ctrl-attrib {
|
|
110
271
|
padding: 0 var(--lr-space-xs);
|
|
@@ -120,6 +281,43 @@ import{css}from"lit";const styles=css`
|
|
|
120
281
|
.maplibregl-ctrl-attrib a:hover {
|
|
121
282
|
text-decoration: underline;
|
|
122
283
|
}
|
|
284
|
+
.maplibregl-ctrl-attrib-inner {
|
|
285
|
+
overflow-wrap: anywhere;
|
|
286
|
+
}
|
|
287
|
+
.maplibregl-ctrl-attrib-button {
|
|
288
|
+
display: none;
|
|
289
|
+
position: absolute;
|
|
290
|
+
inset-block-start: 0;
|
|
291
|
+
inset-inline-end: 0;
|
|
292
|
+
inline-size: var(--lr-icon-button-size);
|
|
293
|
+
block-size: var(--lr-icon-button-size);
|
|
294
|
+
padding: 0;
|
|
295
|
+
border: 0;
|
|
296
|
+
border-radius: var(--lr-radius-pill);
|
|
297
|
+
background: transparent;
|
|
298
|
+
color: var(--lr-color-text);
|
|
299
|
+
cursor: pointer;
|
|
300
|
+
}
|
|
301
|
+
.maplibregl-ctrl-attrib.maplibregl-compact {
|
|
302
|
+
position: relative;
|
|
303
|
+
min-block-size: var(--lr-icon-button-size);
|
|
304
|
+
padding-inline-end: var(--lr-icon-button-size);
|
|
305
|
+
}
|
|
306
|
+
.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-inner {
|
|
307
|
+
display: none;
|
|
308
|
+
}
|
|
309
|
+
.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-button,
|
|
310
|
+
.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-inner {
|
|
311
|
+
display: block;
|
|
312
|
+
}
|
|
313
|
+
.maplibregl-ctrl-attrib-button:hover,
|
|
314
|
+
.maplibregl-ctrl-attrib-button:active {
|
|
315
|
+
background: var(--lr-color-brand-quiet);
|
|
316
|
+
}
|
|
317
|
+
.maplibregl-ctrl-attrib-button:focus-visible {
|
|
318
|
+
outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);
|
|
319
|
+
outline-offset: calc(-1 * var(--lr-focus-ring-offset));
|
|
320
|
+
}
|
|
123
321
|
/* Remove the native <summary> disclosure marker (the stray "▼") on the compact-toggle button. */
|
|
124
322
|
.maplibregl-ctrl-attrib summary {
|
|
125
323
|
list-style: none;
|