@aceshooting/lyra-ui 7.7.0 → 7.8.0
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 +157 -0
- package/custom-elements.json +5951 -4326
- package/dist/components/agent-tools/artifact-panel/artifact-panel.class.d.ts +4 -0
- package/dist/components/agent-tools/artifact-panel/artifact-panel.class.d.ts.map +1 -1
- package/dist/components/agent-tools/artifact-panel/artifact-panel.class.js +11 -4
- package/dist/components/agent-tools/artifact-panel/artifact-panel.class.js.map +1 -1
- package/dist/components/agent-tools/browser-frame/browser-frame.class.d.ts +4 -0
- package/dist/components/agent-tools/browser-frame/browser-frame.class.d.ts.map +1 -1
- package/dist/components/agent-tools/browser-frame/browser-frame.class.js +13 -4
- package/dist/components/agent-tools/browser-frame/browser-frame.class.js.map +1 -1
- package/dist/components/agent-tools/commit-card/commit-card.class.d.ts +4 -0
- package/dist/components/agent-tools/commit-card/commit-card.class.d.ts.map +1 -1
- package/dist/components/agent-tools/commit-card/commit-card.class.js +10 -3
- package/dist/components/agent-tools/commit-card/commit-card.class.js.map +1 -1
- package/dist/components/agent-tools/confirm-bar/confirm-bar.class.d.ts +6 -0
- package/dist/components/agent-tools/confirm-bar/confirm-bar.class.d.ts.map +1 -1
- package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js +6 -0
- package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js.map +1 -1
- package/dist/components/agent-tools/mcp-app/mcp-app.class.js +1 -1
- package/dist/components/agent-tools/mcp-app/mcp-app.class.js.map +1 -1
- package/dist/components/agent-tools/stack-trace/stack-trace.class.d.ts.map +1 -1
- package/dist/components/agent-tools/stack-trace/stack-trace.class.js +8 -1
- package/dist/components/agent-tools/stack-trace/stack-trace.class.js.map +1 -1
- package/dist/components/agent-tools/terminal/terminal.class.d.ts +8 -2
- package/dist/components/agent-tools/terminal/terminal.class.d.ts.map +1 -1
- package/dist/components/agent-tools/terminal/terminal.class.js +12 -4
- package/dist/components/agent-tools/terminal/terminal.class.js.map +1 -1
- package/dist/components/conversation/code-block/code-block-shared.d.ts.map +1 -1
- package/dist/components/conversation/code-block/code-block-shared.js +9 -1
- package/dist/components/conversation/code-block/code-block-shared.js.map +1 -1
- package/dist/components/conversation/markdown/markdown-core.class.d.ts.map +1 -1
- package/dist/components/conversation/markdown/markdown-core.class.js +2 -1
- package/dist/components/conversation/markdown/markdown-core.class.js.map +1 -1
- package/dist/components/conversation/markdown/markdown-shared.d.ts +6 -1
- package/dist/components/conversation/markdown/markdown-shared.d.ts.map +1 -1
- package/dist/components/conversation/markdown/markdown-shared.js +6 -3
- package/dist/components/conversation/markdown/markdown-shared.js.map +1 -1
- package/dist/components/conversation/markdown/markdown.class.d.ts.map +1 -1
- package/dist/components/conversation/markdown/markdown.class.js +2 -1
- package/dist/components/conversation/markdown/markdown.class.js.map +1 -1
- package/dist/components/data/document-library/document-library.class.d.ts +6 -0
- package/dist/components/data/document-library/document-library.class.d.ts.map +1 -1
- package/dist/components/data/document-library/document-library.class.js +7 -0
- package/dist/components/data/document-library/document-library.class.js.map +1 -1
- package/dist/components/data/env-list/env-list.class.d.ts.map +1 -1
- package/dist/components/data/env-list/env-list.class.js +2 -1
- package/dist/components/data/env-list/env-list.class.js.map +1 -1
- package/dist/components/data/heatmap/heatmap.class.d.ts +4 -0
- package/dist/components/data/heatmap/heatmap.class.d.ts.map +1 -1
- package/dist/components/data/heatmap/heatmap.class.js +9 -3
- package/dist/components/data/heatmap/heatmap.class.js.map +1 -1
- package/dist/components/data/query-builder/query-builder.class.d.ts +4 -0
- package/dist/components/data/query-builder/query-builder.class.d.ts.map +1 -1
- package/dist/components/data/query-builder/query-builder.class.js +8 -1
- package/dist/components/data/query-builder/query-builder.class.js.map +1 -1
- package/dist/components/data/table/table.class.d.ts.map +1 -1
- package/dist/components/data/table/table.class.js +8 -3
- package/dist/components/data/table/table.class.js.map +1 -1
- package/dist/components/data/table/table.styles.d.ts.map +1 -1
- package/dist/components/data/table/table.styles.js +4 -1
- package/dist/components/data/table/table.styles.js.map +1 -1
- package/dist/components/data/tree/tree.class.d.ts +4 -0
- package/dist/components/data/tree/tree.class.d.ts.map +1 -1
- package/dist/components/data/tree/tree.class.js +16 -4
- package/dist/components/data/tree/tree.class.js.map +1 -1
- package/dist/components/data/word-cloud/word-cloud.class.d.ts +4 -0
- package/dist/components/data/word-cloud/word-cloud.class.d.ts.map +1 -1
- package/dist/components/data/word-cloud/word-cloud.class.js +7 -1
- package/dist/components/data/word-cloud/word-cloud.class.js.map +1 -1
- package/dist/components/forms/radio/radio-group.class.d.ts.map +1 -1
- package/dist/components/forms/radio/radio-group.class.js +6 -1
- package/dist/components/forms/radio/radio-group.class.js.map +1 -1
- package/dist/components/forms/radio/radio.class.d.ts.map +1 -1
- package/dist/components/forms/radio/radio.class.js +5 -0
- package/dist/components/forms/radio/radio.class.js.map +1 -1
- package/dist/components/layout/command-palette/command-palette.class.d.ts +7 -0
- package/dist/components/layout/command-palette/command-palette.class.d.ts.map +1 -1
- package/dist/components/layout/command-palette/command-palette.class.js +45 -7
- package/dist/components/layout/command-palette/command-palette.class.js.map +1 -1
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.d.ts +3 -0
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.d.ts.map +1 -1
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.js +19 -2
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.js.map +1 -1
- package/dist/components/layout/virtual-list/virtual-list.class.d.ts +16 -0
- package/dist/components/layout/virtual-list/virtual-list.class.d.ts.map +1 -1
- package/dist/components/layout/virtual-list/virtual-list.class.js +26 -7
- package/dist/components/layout/virtual-list/virtual-list.class.js.map +1 -1
- package/dist/components/media/attachment-chip/attachment-chip.class.d.ts.map +1 -1
- package/dist/components/media/attachment-chip/attachment-chip.class.js +5 -1
- package/dist/components/media/attachment-chip/attachment-chip.class.js.map +1 -1
- package/dist/components/media/av-player/av-player.class.d.ts +8 -4
- package/dist/components/media/av-player/av-player.class.d.ts.map +1 -1
- package/dist/components/media/av-player/av-player.class.js +14 -8
- package/dist/components/media/av-player/av-player.class.js.map +1 -1
- package/dist/components/media/zoomable-frame/zoomable-frame.class.d.ts.map +1 -1
- package/dist/components/media/zoomable-frame/zoomable-frame.class.js +2 -2
- package/dist/components/media/zoomable-frame/zoomable-frame.class.js.map +1 -1
- package/dist/components/overlays/progress/progress-ring.class.d.ts.map +1 -1
- package/dist/components/overlays/progress/progress-ring.class.js +6 -0
- package/dist/components/overlays/progress/progress-ring.class.js.map +1 -1
- package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.d.ts +18 -1
- package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.d.ts.map +1 -1
- package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.js +28 -2
- package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.js.map +1 -1
- package/dist/components/retrieval/embedding-explorer/embedding-explorer.styles.d.ts.map +1 -1
- package/dist/components/retrieval/embedding-explorer/embedding-explorer.styles.js +8 -1
- package/dist/components/retrieval/embedding-explorer/embedding-explorer.styles.js.map +1 -1
- package/dist/components/retrieval/memory-panel/memory-panel.class.d.ts +25 -0
- package/dist/components/retrieval/memory-panel/memory-panel.class.d.ts.map +1 -1
- package/dist/components/retrieval/memory-panel/memory-panel.class.js +69 -0
- package/dist/components/retrieval/memory-panel/memory-panel.class.js.map +1 -1
- package/dist/components/utility/tour/tour.class.d.ts.map +1 -1
- package/dist/components/utility/tour/tour.class.js +5 -0
- package/dist/components/utility/tour/tour.class.js.map +1 -1
- package/dist/components/viewers/csv-viewer/csv-viewer.class.js +1 -1
- package/dist/components/viewers/csv-viewer/csv-viewer.class.js.map +1 -1
- package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js +1 -1
- package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js.map +1 -1
- package/dist/components/viewers/document-preview/document-preview.class.d.ts.map +1 -1
- package/dist/components/viewers/document-preview/document-preview.class.js +4 -1
- package/dist/components/viewers/document-preview/document-preview.class.js.map +1 -1
- package/dist/components/viewers/docx-viewer/docx-viewer.class.js +2 -2
- package/dist/components/viewers/docx-viewer/docx-viewer.class.js.map +1 -1
- package/dist/components/viewers/include/include.class.d.ts.map +1 -1
- package/dist/components/viewers/include/include.class.js +6 -1
- package/dist/components/viewers/include/include.class.js.map +1 -1
- package/dist/components/viewers/notebook-viewer/notebook-viewer.class.d.ts +16 -2
- package/dist/components/viewers/notebook-viewer/notebook-viewer.class.d.ts.map +1 -1
- package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +36 -12
- package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js.map +1 -1
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts +3 -0
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts.map +1 -1
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +5 -2
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js.map +1 -1
- package/dist/components/viewers/pdf-viewer/pdf-viewer.styles.js +1 -1
- package/dist/components/viewers/pptx-viewer/pptx-viewer.class.d.ts.map +1 -1
- package/dist/components/viewers/pptx-viewer/pptx-viewer.class.js +6 -1
- package/dist/components/viewers/pptx-viewer/pptx-viewer.class.js.map +1 -1
- package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.js +1 -1
- package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.js.map +1 -1
- package/dist/components/viewers/xml-viewer/xml-viewer.class.d.ts +8 -2
- package/dist/components/viewers/xml-viewer/xml-viewer.class.d.ts.map +1 -1
- package/dist/components/viewers/xml-viewer/xml-viewer.class.js +19 -7
- package/dist/components/viewers/xml-viewer/xml-viewer.class.js.map +1 -1
- package/dist/internal/anchor-target.d.ts.map +1 -1
- package/dist/internal/anchor-target.js +7 -1
- package/dist/internal/anchor-target.js.map +1 -1
- package/dist/internal/lyra-element.d.ts +18 -6
- package/dist/internal/lyra-element.d.ts.map +1 -1
- package/dist/internal/lyra-element.js +35 -15
- package/dist/internal/lyra-element.js.map +1 -1
- package/dist/internal/text-quote.d.ts +15 -0
- package/dist/internal/text-quote.d.ts.map +1 -1
- package/dist/internal/text-quote.js +13 -6
- package/dist/internal/text-quote.js.map +1 -1
- package/dist/internal/text-viewer-target.d.ts +0 -6
- package/dist/internal/text-viewer-target.d.ts.map +1 -1
- package/dist/internal/text-viewer-target.js +68 -21
- package/dist/internal/text-viewer-target.js.map +1 -1
- package/llms/components/lr-chat-viewport.md +2 -2
- package/llms/components/lr-embedding-explorer.md +8 -3
- package/llms/components/lr-memory-panel.md +11 -2
- package/llms/components/lr-notebook-viewer.md +4 -1
- package/llms/components/lr-pdf-viewer.md +6 -3
- package/llms/components/lr-usage-badge.md +1 -1
- package/llms-full.txt +29 -9
- package/package.json +2 -2
- package/vscode-css-data.json +15 -1
- package/vscode-html-data.json +7 -7
- package/web-types.json +17 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,162 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 7.8.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 2c3934b: `<lr-embedding-explorer>`'s `height` property now actually sizes the plot. It was rendered as an
|
|
8
|
+
SVG `height` presentation attribute while the component's own stylesheet declared
|
|
9
|
+
`[part='plot'] { block-size: auto }` — and any stylesheet declaration outranks a presentation
|
|
10
|
+
attribute, so the property was inert at every value, including its documented `360px` default: the
|
|
11
|
+
plot always sized itself from the `viewBox` aspect ratio instead.
|
|
12
|
+
|
|
13
|
+
`height` is now published on the host as the new `--lr-embedding-explorer-height` custom property,
|
|
14
|
+
which `[part='plot']`'s `block-size` reads. Consequences worth knowing before upgrading:
|
|
15
|
+
|
|
16
|
+
- The default `height="360px"` now takes effect, so a plot wider than 640px is no longer as tall as
|
|
17
|
+
its allocation implies. Set `height="auto"` to keep the previous aspect-ratio-preserved sizing.
|
|
18
|
+
- A value the browser cannot parse as a `block-size` is dropped rather than applied, leaving the
|
|
19
|
+
`auto` behavior instead of collapsing the plot.
|
|
20
|
+
- A consumer's own `::part(plot) { block-size: ... }` rule still overrides `height`, and the
|
|
21
|
+
narrow-allocation `min-block-size` floor still raises it.
|
|
22
|
+
|
|
23
|
+
- 2c3934b: `<lr-memory-panel>` no longer strands keyboard focus when a row action opens its confirmation step.
|
|
24
|
+
Activating "Add to long-term memory", "Remove", or "Forget all" destroys the button that had focus,
|
|
25
|
+
and nothing moved focus into the `lr-confirm-bar` that replaces it, so focus fell back to `<body>`:
|
|
26
|
+
a keyboard user was dumped at the top of the page with nothing announced, and had to re-tab through
|
|
27
|
+
the whole document to reach the confirmation they had just opened. Focus now moves into the
|
|
28
|
+
confirmation (its Deny control -- the safe action -- falling back to the bar's status element), and
|
|
29
|
+
is handed back to the row (or to the "Forget all" control) once the decision resolves. Pressing
|
|
30
|
+
Escape while the confirmation holds focus now cancels it exactly like pressing Deny: no event is
|
|
31
|
+
emitted, focus returns the same way, and the key does not propagate past the panel.
|
|
32
|
+
- 2c3934b: `<lr-notebook-viewer>`: `searchNext()` and `searchPrevious()` now resolve `true` when the active
|
|
33
|
+
match moved and `false` when there was nothing to move to, matching the shared viewer search
|
|
34
|
+
contract (`LyraTextViewerTarget`) that every other searchable viewer already honors. They
|
|
35
|
+
previously returned nothing, so a find-in-page host driving several viewers polymorphically —
|
|
36
|
+
`if (await viewer.searchNext()) { ... }`, or awaiting the call before reading its own match
|
|
37
|
+
counter — got `undefined` from the notebook viewer alone and took its falsy "no more matches"
|
|
38
|
+
branch on every press, even mid-notebook.
|
|
39
|
+
|
|
40
|
+
This is an additive widening: the methods return a resolved promise instead of nothing, and callers
|
|
41
|
+
that ignored the return value are unaffected. `search()` already resolved the match count and is
|
|
42
|
+
unchanged.
|
|
43
|
+
|
|
44
|
+
- 80e0ef1: Repair four regressions left by earlier fixes:
|
|
45
|
+
|
|
46
|
+
- `<lr-radio-group>`: arrow-key selection now emits `input` and `change` alongside `lr-change`, as
|
|
47
|
+
click and Space already did and as native `<input type=radio>` does. The earlier fix for a
|
|
48
|
+
duplicate `lr-change` had left the keyboard path emitting only the group event, so a consumer
|
|
49
|
+
bound to the native-mirroring events silently missed every keyboard selection.
|
|
50
|
+
- `<lr-progress-ring>`: an unslotted ring is named from the localized fallback again. Its slot's
|
|
51
|
+
fallback content is the formatted percent, and `assignedNodes({flatten:true})` returns fallback
|
|
52
|
+
children when nothing is assigned, so the control had been naming itself "40%" and no
|
|
53
|
+
`registerLyraLocale()` override could reach it.
|
|
54
|
+
- `<lr-tour>`: opening a detached tour no longer locks scroll on the document or installs a global
|
|
55
|
+
Escape handler with nothing visible, matching the guard `<lr-dialog>` already had.
|
|
56
|
+
- `text-quote` anchors and highlights now case-fold with the component's locale in
|
|
57
|
+
`<lr-docx-viewer>`, `<lr-pdf-viewer>`, `<lr-markdown>` and `<lr-markdown-core>`. Under `lang="tr"`
|
|
58
|
+
a quote of "istanbul" silently failed to match "İSTANBUL" in these four while resolving correctly
|
|
59
|
+
in every viewer built on the shared text-viewer mixin.
|
|
60
|
+
|
|
61
|
+
- d8a026d: Give `<lr-table>`'s sorted column header an opaque default fill. The header is `position: sticky`
|
|
62
|
+
and the sorted-state rule defaulted to `transparent`, so in any height-capped table the body rows
|
|
63
|
+
scrolled visibly through the sorted column's header cell.
|
|
64
|
+
|
|
65
|
+
Give `<lr-pdf-viewer>`'s toolbar buttons a hover fill that differs from the toolbar behind them —
|
|
66
|
+
the rule existed but resolved to the toolbar's own opaque token, so hovering produced no visual
|
|
67
|
+
change at all. Retunable via the new `--lr-pdf-viewer-toolbar-button-hover-bg`.
|
|
68
|
+
|
|
69
|
+
Correct three `<lr-chat-message>` snippets in the authored reference that used `role="user"`. The
|
|
70
|
+
property reflects to `data-role`, so `role` was never observed: consumers copying those examples
|
|
71
|
+
got a message rendered as the default `assistant`, plus an invalid ARIA role token in the DOM.
|
|
72
|
+
|
|
73
|
+
- 2c3934b: `<lr-xml-viewer>`, `<lr-av-player>`, and `<lr-terminal>` now resolve a boolean from `searchNext()`
|
|
74
|
+
and `searchPrevious()`, matching the shared `LyraTextViewerTarget` search contract that
|
|
75
|
+
`search()` already followed on all three. They returned `void`, so a host driving several
|
|
76
|
+
searchable components through that one typed surface — `if (await viewer.searchNext())` — read
|
|
77
|
+
`undefined` and took the "nothing to move to" branch on every press.
|
|
78
|
+
|
|
79
|
+
### Patch Changes
|
|
80
|
+
|
|
81
|
+
- ed7f463: Stop retaining one live `Range` per search match in every text viewer. `<lr-archive-viewer>`,
|
|
82
|
+
`<lr-calendar-viewer>`, `<lr-contact-viewer>`, `<lr-email-viewer>`, `<lr-geojson-view>`,
|
|
83
|
+
`<lr-html-viewer>`, `<lr-include>`, and `<lr-pptx-viewer>` share a search mixin that held a live
|
|
84
|
+
`Range` for every match. The engine revalidates each retained `Range` on every DOM mutation in its
|
|
85
|
+
document, so a short query over a long document made every later mutation dramatically slower.
|
|
86
|
+
Matches are now kept as inert offsets, and only a bounded window around the active match is
|
|
87
|
+
materialized and painted. `matchCount`, `searchNext()`, and `searchPrevious()` still cover every
|
|
88
|
+
match.
|
|
89
|
+
- 2d149dc: `<lr-dashboard-grid>` no longer starts a cell drag when the pointer lands on a button, link, or
|
|
90
|
+
input inside the cell. The guard compared a slotted light-DOM control against a shadow-root wrapper
|
|
91
|
+
with `contains()`, which never crosses the slot boundary, so it could never fire and every control
|
|
92
|
+
click inside a draggable cell dragged the cell instead of activating the control.
|
|
93
|
+
|
|
94
|
+
`<lr-tree>` no longer throws on the first arrow key when a `<lr-tree-node>` is written declaratively
|
|
95
|
+
into its documented slot. `item` is `attribute: false`, so such a node has none until a host assigns
|
|
96
|
+
one, and the keyboard handler read `item.id` unguarded.
|
|
97
|
+
|
|
98
|
+
- 9083c9b: `<lr-document-library>` now sorts its Updated column chronologically. It ordered rows correctly by
|
|
99
|
+
timestamp itself, then handed the composed `<lr-table>` both those rows and a `sortKey` without
|
|
100
|
+
`sort-mode="server"`, so the table sorted them a second time in client mode — from the column's
|
|
101
|
+
rendered output, which is a _formatted_ date. The result was alphabetical by month name.
|
|
102
|
+
- 2c3934b: `<lr-env-list>` no longer paints its screen-reader-only "Value hidden" announcement as visible text
|
|
103
|
+
beside the mask. The template emitted `class="sr-only"` but the component never adopted the shared
|
|
104
|
+
stylesheet that defines that class, and no rule in `LyraElement.styles` supplies it.
|
|
105
|
+
- 2c3934b: Hide the anchor-announcement live region in `<lr-include>` and `<lr-pptx-viewer>`.
|
|
106
|
+
|
|
107
|
+
Both viewers render the shared anchor-target mixin's `role="status"` live region, which the mixin
|
|
108
|
+
marks up with `class="sr-only"`, but neither component's shadow stylesheet defined that class. The
|
|
109
|
+
region therefore laid out as an ordinary block, so the first anchor jump (or a failed one) painted
|
|
110
|
+
its localized announcement — "Jumped to highlighted passage." / "Passage not found in this
|
|
111
|
+
document." — as visible body text: beside the transcluded fragment for `<lr-include>`, and as an
|
|
112
|
+
extra row under the fidelity notice for `<lr-pptx-viewer>`. The announcement is now visually hidden
|
|
113
|
+
and screen-reader-only, matching every other viewer that adopts the same mixin.
|
|
114
|
+
|
|
115
|
+
- 0e2dbf3: `LyraElement`'s internal `scheduleAfterUpdate()` now coalesces per key instead of collapsing every
|
|
116
|
+
caller in an update cycle onto one slot. It tracked pending work in a single boolean, so the second
|
|
117
|
+
caller in a cycle early-returned and its callback was dropped and never replayed — a component that
|
|
118
|
+
scheduled two genuinely different pieces of after-update work silently lost one of them. Repeated
|
|
119
|
+
schedules under the same key still collapse to one run, so the load path keeps producing one fetch
|
|
120
|
+
per cycle rather than one per property write.
|
|
121
|
+
- 2cd5fb5: `<lr-artifact-panel>`, `<lr-commit-card>`, `<lr-heatmap>`, `<lr-query-builder>`, `<lr-tree>`, and
|
|
122
|
+
`<lr-word-cloud>` now format the numbers they interpolate into localized strings with the effective
|
|
123
|
+
locale. `localize()` substitutes values with a bare `String(value)` and does no number formatting,
|
|
124
|
+
so these rendered Western digits inside otherwise fully-translated sentences — under a locale using
|
|
125
|
+
its own numbering system (`ar-u-nu-arab`, `hi-u-nu-deva`, …) a single announcement mixed two digit
|
|
126
|
+
sets.
|
|
127
|
+
|
|
128
|
+
`<lr-attachment-chip>` also no longer falls back to an empty `src` on its thumbnail `<img>`; an
|
|
129
|
+
empty `src` is a valid URL that resolves against the document, so it would make the browser
|
|
130
|
+
re-request the page as an image.
|
|
131
|
+
|
|
132
|
+
- df4dac8: Reject non-integer index segments in anchor resolution. A range-only guard (`i < 0 || i >= len`)
|
|
133
|
+
does not reject `NaN` (both comparisons are false) or a fractional index, so `<lr-xml-viewer>`
|
|
134
|
+
reported `lr-anchor-result { found: true }` and announced "Jumped to…" for a `node-path` that
|
|
135
|
+
matched nothing, and a non-trailing bad segment threw — rejecting `scrollToAnchor()` so
|
|
136
|
+
`lr-anchor-result` never fired at all, and surfacing as an unhandled rejection on the declarative
|
|
137
|
+
`anchor` path. `<lr-notebook-viewer>` had the same false-positive shape, and
|
|
138
|
+
`<lr-virtual-list>.scrollToIndex(NaN)` silently scrolled the list to the top.
|
|
139
|
+
|
|
140
|
+
`DocumentAnchorTarget` now also degrades a throwing `applyAnchor()` to "not resolved" instead of
|
|
141
|
+
letting it reject, so the mixin keeps its documented promise of always reporting a definite result.
|
|
142
|
+
|
|
143
|
+
- c76ebf8: Fix `<lr-mcp-app>`'s remote `src` mode, which never loaded: binding `srcdoc` to an empty string
|
|
144
|
+
still produced a _present_ `srcdoc=""` attribute, and the HTML spec's iframe processing branches on
|
|
145
|
+
that attribute's presence, so the frame navigated to `about:srcdoc` and ignored `src` entirely
|
|
146
|
+
(while still firing `lr-mcp-ready`). The same empty-string-vs-absent shape is fixed in
|
|
147
|
+
`<lr-av-player>` (a bare player painted a "Failed to load the media" alert before a `src` was set)
|
|
148
|
+
and `<lr-zoomable-frame>` (a rejected `src` rendered a broken-image glyph).
|
|
149
|
+
|
|
150
|
+
Validate consumer-supplied CSS lengths before they reach an inline style declaration list, so a
|
|
151
|
+
crafted value can no longer inject extra declarations: `<lr-stack-trace>`'s `max-height`,
|
|
152
|
+
`<lr-code-block>`/`<lr-code-block-core>`'s `max-height`, `<lr-table>`'s column
|
|
153
|
+
`width`/`minWidth`/`maxWidth`, and `<lr-browser-frame>`'s agent-supplied ping coordinates (which are
|
|
154
|
+
now also clamped to the documented 0-100 range instead of serializing `NaN`).
|
|
155
|
+
|
|
156
|
+
- ed7f463: `<lr-virtual-list>` no longer rescans the whole `items` array on every scroll frame to resolve
|
|
157
|
+
`active-id`. The lookup is now memoized on the `items`/`active-id`/`keyFunction` identities, so
|
|
158
|
+
scrolling a large list stops calling `keyFunction` once per item per frame.
|
|
159
|
+
|
|
3
160
|
## 7.7.0
|
|
4
161
|
|
|
5
162
|
### Minor Changes
|