@fusion.dev/helix-core 0.218.0 → 0.220.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/custom-elements.json +1 -1
- package/dist/controllers/popover-controller/popover-controller.d.ts +27 -0
- package/dist/controllers/popover-controller/popover-controller.js +57 -0
- package/dist/controllers/toolbar-controller/toolbar-controller.js +5 -3
- package/dist/events/details.d.ts +7 -0
- package/dist/events/events.d.ts +6 -2
- package/dist/events/events.js +5 -1
- package/dist/events/found.d.ts +14 -0
- package/dist/events/found.js +11 -0
- package/dist/events/names.js +2 -2
- package/dist/events/stop.d.ts +12 -0
- package/dist/events/stop.js +6 -0
- package/dist/helix-element/helix-element.d.ts +19 -0
- package/dist/helix-element/helix-element.js +7 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +3 -2
- package/dist/mixins/mixin-viewport/mixin-viewport.js +15 -7
- package/dist/utils/audit-children/audit-children-off.d.ts +2 -0
- package/dist/utils/audit-children/audit-children-off.js +1 -0
- package/dist/utils/audit-children/audit-children.d.ts +18 -3
- package/dist/utils/audit-children/audit-children.js +42 -9
- package/dist/utils/find-text/find-text.d.ts +101 -0
- package/dist/utils/find-text/find-text.js +330 -0
- package/dist/utils/toolbar-around/toolbar-around.d.ts +2 -1
- package/dist/utils/toolbar-around/toolbar-around.js +20 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +4 -4
|
@@ -19,6 +19,16 @@ export interface PopoverOptions {
|
|
|
19
19
|
* itself instead, so a press on its trigger is inside rather than out.
|
|
20
20
|
*/
|
|
21
21
|
boundary?: () => Element | readonly (Element | null | undefined)[] | null | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* What the open surface does to a tooltip outside it.
|
|
24
|
+
*
|
|
25
|
+
* `hide`, the default, closes a tooltip showing outside the surface as it
|
|
26
|
+
* opens, and keeps tooltips outside it closed until it closes. A tooltip
|
|
27
|
+
* inside it still shows. `keep` leaves them alone, for a surface that is a
|
|
28
|
+
* tooltip itself or that stays up while the reader goes on using the page,
|
|
29
|
+
* such as a tour's stop.
|
|
30
|
+
*/
|
|
31
|
+
hints?: 'hide' | 'keep';
|
|
22
32
|
/** Space between the anchor and the surface, in pixels. */
|
|
23
33
|
offset?: number | (() => number);
|
|
24
34
|
/** Whether the surface may move to the other side to fit. On by default. See `FloatingController`. */
|
|
@@ -93,6 +103,19 @@ export interface PopoverOptions {
|
|
|
93
103
|
/** The panel that floats. */
|
|
94
104
|
surface: () => HTMLElement | null | undefined;
|
|
95
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Whether a tooltip at `element` may show: no surface is open, or the last one
|
|
108
|
+
* to open holds it. A tooltip outside an open menu or popover would sit over
|
|
109
|
+
* the panel the reader is using.
|
|
110
|
+
*/
|
|
111
|
+
export declare function hintMayShow(element: Element): boolean;
|
|
112
|
+
/**
|
|
113
|
+
* Calls `watcher` with each surface that opens and hides the tooltips outside
|
|
114
|
+
* it. Returns the call that stops it.
|
|
115
|
+
*/
|
|
116
|
+
export declare function onPanelOpen(watcher: (surface: HTMLElement) => void): () => void;
|
|
117
|
+
/** Whether `element` is drawn inside `surface`, following slots. */
|
|
118
|
+
export declare function hintInside(surface: HTMLElement, element: Element): boolean;
|
|
96
119
|
/**
|
|
97
120
|
* A surface that floats against something, in the top layer, until dismissed.
|
|
98
121
|
*
|
|
@@ -128,6 +151,8 @@ export declare class PopoverController implements ReactiveController {
|
|
|
128
151
|
private readonly dismisser;
|
|
129
152
|
/** Whether the surface is currently shown, so the calls can be idempotent. */
|
|
130
153
|
private shown;
|
|
154
|
+
/** The surface tooltips outside it yield to, while it is open. */
|
|
155
|
+
private held;
|
|
131
156
|
private readonly host;
|
|
132
157
|
constructor(host: ReactiveControllerHost & HTMLElement, options: PopoverOptions);
|
|
133
158
|
/** Whether the surface is showing. */
|
|
@@ -144,6 +169,8 @@ export declare class PopoverController implements ReactiveController {
|
|
|
144
169
|
* track of which one got there first.
|
|
145
170
|
*/
|
|
146
171
|
show(): void;
|
|
172
|
+
/** Takes the surface off the list of open ones, so tooltips may show again. */
|
|
173
|
+
private freeHints;
|
|
147
174
|
/** Hides the surface and stops everything watching it. */
|
|
148
175
|
hide(): void;
|
|
149
176
|
/** Whichever of the two the surface is not already doing. */
|
|
@@ -1,5 +1,46 @@
|
|
|
1
1
|
import { DismissController } from '../dismiss-controller/dismiss-controller.js';
|
|
2
2
|
import { FloatingController } from '../floating-controller/floating-controller.js';
|
|
3
|
+
const PANELS = Symbol.for('fusion.helix.open-panels');
|
|
4
|
+
const openPanels = () => {
|
|
5
|
+
const globals = globalThis;
|
|
6
|
+
globals[PANELS] ??= { open: new Set(), watchers: new Set() };
|
|
7
|
+
return globals[PANELS];
|
|
8
|
+
};
|
|
9
|
+
const slotOf = (node) => {
|
|
10
|
+
const element = node;
|
|
11
|
+
if (element.assignedSlot) {
|
|
12
|
+
return element.assignedSlot;
|
|
13
|
+
}
|
|
14
|
+
const root = node.parentNode?.shadowRoot;
|
|
15
|
+
if (!root || typeof element.getAttribute !== 'function') {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
const name = element.getAttribute('slot');
|
|
19
|
+
return root.querySelector(name ? `slot[name="${name.replaceAll('"', '\\"')}"]` : 'slot:not([name])');
|
|
20
|
+
};
|
|
21
|
+
const drawnInside = (container, node) => {
|
|
22
|
+
let at = node;
|
|
23
|
+
while (at) {
|
|
24
|
+
if (at === container) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
at = slotOf(at) ?? at.parentNode ?? at.host ?? null;
|
|
28
|
+
}
|
|
29
|
+
return false;
|
|
30
|
+
};
|
|
31
|
+
export function hintMayShow(element) {
|
|
32
|
+
const open = [...openPanels().open];
|
|
33
|
+
const last = open.at(-1);
|
|
34
|
+
return last === undefined || drawnInside(last, element);
|
|
35
|
+
}
|
|
36
|
+
export function onPanelOpen(watcher) {
|
|
37
|
+
const { watchers } = openPanels();
|
|
38
|
+
watchers.add(watcher);
|
|
39
|
+
return () => watchers.delete(watcher);
|
|
40
|
+
}
|
|
41
|
+
export function hintInside(surface, element) {
|
|
42
|
+
return drawnInside(surface, element);
|
|
43
|
+
}
|
|
3
44
|
export class PopoverController {
|
|
4
45
|
constructor(host, options) {
|
|
5
46
|
this.shown = false;
|
|
@@ -64,6 +105,20 @@ export class PopoverController {
|
|
|
64
105
|
this.floating.release();
|
|
65
106
|
}
|
|
66
107
|
this.dismisser.activate();
|
|
108
|
+
if (this.options.hints !== 'keep') {
|
|
109
|
+
const panels = openPanels();
|
|
110
|
+
this.held = surface;
|
|
111
|
+
panels.open.add(surface);
|
|
112
|
+
for (const watcher of [...panels.watchers]) {
|
|
113
|
+
watcher(surface);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
freeHints() {
|
|
118
|
+
if (this.held) {
|
|
119
|
+
openPanels().open.delete(this.held);
|
|
120
|
+
this.held = undefined;
|
|
121
|
+
}
|
|
67
122
|
}
|
|
68
123
|
hide() {
|
|
69
124
|
const surface = this.options.surface();
|
|
@@ -71,6 +126,7 @@ export class PopoverController {
|
|
|
71
126
|
return;
|
|
72
127
|
}
|
|
73
128
|
this.shown = false;
|
|
129
|
+
this.freeHints();
|
|
74
130
|
this.dismisser.deactivate();
|
|
75
131
|
this.floating.stop();
|
|
76
132
|
surface?.hidePopover?.();
|
|
@@ -88,6 +144,7 @@ export class PopoverController {
|
|
|
88
144
|
}
|
|
89
145
|
hostDisconnected() {
|
|
90
146
|
this.shown = false;
|
|
147
|
+
this.freeHints();
|
|
91
148
|
}
|
|
92
149
|
hostConnected() {
|
|
93
150
|
if (this.options.open?.()) {
|
|
@@ -3,12 +3,14 @@ import { keyClaimed } from '../../utils/key-claimed/key-claimed.js';
|
|
|
3
3
|
import { Typeahead, typesCharacter } from '../../utils/typeahead/typeahead.js';
|
|
4
4
|
const KEYS = new Set(['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End']);
|
|
5
5
|
const ownsTabStop = (node) => 'focusable' in node;
|
|
6
|
+
const disabledOut = (node) => node.hasAttribute('disabled') &&
|
|
7
|
+
node.focusableWhenDisabled !== true;
|
|
6
8
|
const NATIVE = 'a[href], button, input, select, textarea, [tabindex], [contenteditable=""], [contenteditable="true"]';
|
|
7
9
|
const TABBABLE = NATIVE.replace('[tabindex]', '[tabindex]:not([tabindex="-1"])');
|
|
8
10
|
const innerStops = new WeakMap();
|
|
9
11
|
const takesFocus = (node) => {
|
|
10
12
|
if (!(node instanceof HTMLElement) ||
|
|
11
|
-
node
|
|
13
|
+
disabledOut(node) ||
|
|
12
14
|
node.getAttribute('aria-hidden') === 'true') {
|
|
13
15
|
return false;
|
|
14
16
|
}
|
|
@@ -138,7 +140,7 @@ export class ToolbarController {
|
|
|
138
140
|
const controls = [];
|
|
139
141
|
for (const child of this.members) {
|
|
140
142
|
if (!(child instanceof HTMLElement) ||
|
|
141
|
-
child
|
|
143
|
+
disabledOut(child) ||
|
|
142
144
|
child.getAttribute('aria-hidden') === 'true') {
|
|
143
145
|
continue;
|
|
144
146
|
}
|
|
@@ -314,7 +316,7 @@ export class ToolbarController {
|
|
|
314
316
|
const watched = this.options.watch?.() ?? this.host;
|
|
315
317
|
this.watcher = new MutationObserver(() => this.restore());
|
|
316
318
|
this.watcher.observe(watched, {
|
|
317
|
-
attributeFilter: ['disabled', 'aria-hidden'],
|
|
319
|
+
attributeFilter: ['disabled', 'focusable-when-disabled', 'aria-hidden'],
|
|
318
320
|
attributes: true,
|
|
319
321
|
subtree: true,
|
|
320
322
|
});
|
package/dist/events/details.d.ts
CHANGED
|
@@ -194,6 +194,13 @@ export interface FilterDetail {
|
|
|
194
194
|
/** What the list is being narrowed to. */
|
|
195
195
|
value: string;
|
|
196
196
|
}
|
|
197
|
+
/** Detail carried by `helix-found`. */
|
|
198
|
+
export interface FoundDetail {
|
|
199
|
+
/** How many matches the search found. */
|
|
200
|
+
count: number;
|
|
201
|
+
/** Which match is current, counting from 0, or -1 for none. */
|
|
202
|
+
index: number;
|
|
203
|
+
}
|
|
197
204
|
/**
|
|
198
205
|
* Detail carried by `helix-facet`.
|
|
199
206
|
*
|
package/dist/events/events.d.ts
CHANGED
|
@@ -77,6 +77,7 @@ import { HelixExpandEvent } from './expand.js';
|
|
|
77
77
|
import { HelixFacetEvent } from './facet.js';
|
|
78
78
|
import { HelixFilterEvent } from './filter.js';
|
|
79
79
|
import { HelixFilteredEvent } from './filtered.js';
|
|
80
|
+
import { HelixFoundEvent } from './found.js';
|
|
80
81
|
import { HelixGraphFilterEvent } from './graph-filter.js';
|
|
81
82
|
import { HelixGraphLayoutEvent } from './graph-layout.js';
|
|
82
83
|
import { HelixGraphPanEvent } from './graph-pan.js';
|
|
@@ -128,6 +129,7 @@ import { HelixShortcutEvent } from './shortcut.js';
|
|
|
128
129
|
import { HelixSortEvent } from './sort.js';
|
|
129
130
|
import { HelixSortedEvent } from './sorted.js';
|
|
130
131
|
import { HelixSplitEvent } from './split.js';
|
|
132
|
+
import { HelixStopEvent } from './stop.js';
|
|
131
133
|
import { HelixStrandsFallbackEvent } from './strands-fallback.js';
|
|
132
134
|
import { HelixTerminalBellEvent } from './terminal-bell.js';
|
|
133
135
|
import { HelixTerminalInputEvent } from './terminal-input.js';
|
|
@@ -139,9 +141,9 @@ import { HelixToggleEvent } from './toggle.js';
|
|
|
139
141
|
import { HelixTourAskEvent } from './tour-ask.js';
|
|
140
142
|
import { HelixTourStatusEvent } from './tour-status.js';
|
|
141
143
|
import { HelixTypingEvent } from './typing.js';
|
|
142
|
-
export type { ActivateDetail, AuraFallbackDetail, BandDetail, CanvasView, CaretDetail, ChangeDetail, CompleteDetail, ConnectDetail, ConsoleDetail, CopyDetail, CreateDetail, DeviceButton, DeviceButtonDetail, DeviceKeyDetail, DeviceScrollDetail, DeviceSwipeDetail, DeviceTapDetail, DeviceTextDetail, DeviceTouchDetail, DismissDetail, FacetDetail, FilterDetail, GraphFilterDetail, GraphLayoutDetail, GraphPartChangeDetail, GraphSignalDetail, ListenDetail, MapClusterDetail, MapPanDetail, MapPartChangeDetail, MapRotateDetail, MapTiltDetail, MapZoomDetail, MoveDetail, NavigateDetail, OpenDetail, PasteDetail, PlotChangeDetail, PlotTurnDetail, PressDetail, PressPointerType, RangeDetail, ReadDetail, ReadingDetail, ReconnectDetail, Refusal, RefusedFile, RejectDetail, RelabelDetail, RemoveDetail, ReorderDetail, ResizeDetail, ScrolledDetail, SelectDetail, SendDetail, ShortcutDetail, SkipDetail, SortDetail, StrandsFallbackDetail, TerminalInputDetail, TerminalLinkDetail, TerminalResizeDetail, TerminalTitleDetail, ToggleDetail, TourAskDetail, TourStatusDetail, TypingDetail, ViewportPanDetail, ViewportZoomDetail, } from './details.js';
|
|
144
|
+
export type { ActivateDetail, AuraFallbackDetail, BandDetail, CanvasView, CaretDetail, ChangeDetail, CompleteDetail, ConnectDetail, ConsoleDetail, CopyDetail, CreateDetail, DeviceButton, DeviceButtonDetail, DeviceKeyDetail, DeviceScrollDetail, DeviceSwipeDetail, DeviceTapDetail, DeviceTextDetail, DeviceTouchDetail, DismissDetail, FacetDetail, FilterDetail, FoundDetail, GraphFilterDetail, GraphLayoutDetail, GraphPartChangeDetail, GraphSignalDetail, ListenDetail, MapClusterDetail, MapPanDetail, MapPartChangeDetail, MapRotateDetail, MapTiltDetail, MapZoomDetail, MoveDetail, NavigateDetail, OpenDetail, PasteDetail, PlotChangeDetail, PlotTurnDetail, PressDetail, PressPointerType, RangeDetail, ReadDetail, ReadingDetail, ReconnectDetail, Refusal, RefusedFile, RejectDetail, RelabelDetail, RemoveDetail, ReorderDetail, ResizeDetail, ScrolledDetail, SelectDetail, SendDetail, ShortcutDetail, SkipDetail, SortDetail, StrandsFallbackDetail, TerminalInputDetail, TerminalLinkDetail, TerminalResizeDetail, TerminalTitleDetail, ToggleDetail, TourAskDetail, TourStatusDetail, TypingDetail, ViewportPanDetail, ViewportZoomDetail, } from './details.js';
|
|
143
145
|
export { helixEventNames } from './names.js';
|
|
144
|
-
export { HelixActionEvent, HelixActivateEvent, HelixAuraFallbackEvent, HelixBandEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeListenEvent, HelixBeforeMoveEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePasteEvent, HelixBeforePinEvent, HelixBeforeReconnectEvent, HelixBeforeRelabelEvent, HelixBeforeReorderEvent, HelixBeforeResizeEvent, HelixBeforeSplitEvent, HelixBeforeToggleEvent, HelixCanvasEditEvent, HelixCanvasPanEvent, HelixCanvasViewEvent, HelixCanvasZoomEvent, HelixCaretEvent, HelixClearEvent, HelixCollapseEvent, HelixCompleteEvent, HelixConnectEvent, HelixConsoleEvent, HelixCopyErrorEvent, HelixCopyEvent, HelixCreateEvent, HelixDeviceButtonEvent, HelixDeviceKeyEvent, HelixDeviceScreenshotEvent, HelixDeviceScrollEvent, HelixDeviceSwipeEvent, HelixDeviceTapEvent, HelixDeviceTextEvent, HelixDeviceTouchEvent, HelixDismissEvent, HelixEditEvent, HelixEndEvent, HelixExpandEvent, HelixFacetEvent, HelixFilterEvent, HelixFilteredEvent, HelixGraphFilterEvent, HelixGraphLayoutEvent, HelixGraphPanEvent, HelixGraphPartChangeEvent, HelixGraphReadyEvent, HelixGraphSignalEvent, HelixGraphZoomEvent, HelixHistoryEvent, HelixListenEvent, HelixLoadEvent, HelixLoadMoreEvent, HelixMapClusterEvent, HelixMapPanEvent, HelixMapPartChangeEvent, HelixMapReadyEvent, HelixMapRotateEvent, HelixMapTiltEvent, HelixMapZoomEvent, HelixMoveEvent, HelixNavigateEvent, HelixNextEvent, HelixPanelResizeEvent, HelixPastedEvent, HelixPinEvent, HelixPlotChangeEvent, HelixPlotTurnEvent, HelixPressEvent, HelixPreviewEvent, HelixPreviousEvent, HelixRangeChangeEvent, HelixReadEvent, HelixReadingChangeEvent, HelixReadingPressEvent, HelixReconnectEvent, HelixRejectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixReorderedEvent, HelixResizedEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSelectedEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixSortedEvent, HelixSplitEvent, HelixStrandsFallbackEvent, HelixTerminalBellEvent, HelixTerminalInputEvent, HelixTerminalLinkEvent, HelixTerminalResizeEvent, HelixTerminalRestartEvent, HelixTerminalTitleEvent, HelixToggleEvent, HelixTourAskEvent, HelixTourStatusEvent, HelixTypingEvent, };
|
|
146
|
+
export { HelixActionEvent, HelixActivateEvent, HelixAuraFallbackEvent, HelixBandEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeListenEvent, HelixBeforeMoveEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePasteEvent, HelixBeforePinEvent, HelixBeforeReconnectEvent, HelixBeforeRelabelEvent, HelixBeforeReorderEvent, HelixBeforeResizeEvent, HelixBeforeSplitEvent, HelixBeforeToggleEvent, HelixCanvasEditEvent, HelixCanvasPanEvent, HelixCanvasViewEvent, HelixCanvasZoomEvent, HelixCaretEvent, HelixClearEvent, HelixCollapseEvent, HelixCompleteEvent, HelixConnectEvent, HelixConsoleEvent, HelixCopyErrorEvent, HelixCopyEvent, HelixCreateEvent, HelixDeviceButtonEvent, HelixDeviceKeyEvent, HelixDeviceScreenshotEvent, HelixDeviceScrollEvent, HelixDeviceSwipeEvent, HelixDeviceTapEvent, HelixDeviceTextEvent, HelixDeviceTouchEvent, HelixDismissEvent, HelixEditEvent, HelixEndEvent, HelixExpandEvent, HelixFacetEvent, HelixFilterEvent, HelixFilteredEvent, HelixFoundEvent, HelixGraphFilterEvent, HelixGraphLayoutEvent, HelixGraphPanEvent, HelixGraphPartChangeEvent, HelixGraphReadyEvent, HelixGraphSignalEvent, HelixGraphZoomEvent, HelixHistoryEvent, HelixListenEvent, HelixLoadEvent, HelixLoadMoreEvent, HelixMapClusterEvent, HelixMapPanEvent, HelixMapPartChangeEvent, HelixMapReadyEvent, HelixMapRotateEvent, HelixMapTiltEvent, HelixMapZoomEvent, HelixMoveEvent, HelixNavigateEvent, HelixNextEvent, HelixPanelResizeEvent, HelixPastedEvent, HelixPinEvent, HelixPlotChangeEvent, HelixPlotTurnEvent, HelixPressEvent, HelixPreviewEvent, HelixPreviousEvent, HelixRangeChangeEvent, HelixReadEvent, HelixReadingChangeEvent, HelixReadingPressEvent, HelixReconnectEvent, HelixRejectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixReorderedEvent, HelixResizedEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSelectedEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixSortedEvent, HelixSplitEvent, HelixStopEvent, HelixStrandsFallbackEvent, HelixTerminalBellEvent, HelixTerminalInputEvent, HelixTerminalLinkEvent, HelixTerminalResizeEvent, HelixTerminalRestartEvent, HelixTerminalTitleEvent, HelixToggleEvent, HelixTourAskEvent, HelixTourStatusEvent, HelixTypingEvent, };
|
|
145
147
|
/**
|
|
146
148
|
* Every event class, and the one place a new one is registered: a class in a
|
|
147
149
|
* module of its own, imported above, and named here and in `names.ts`.
|
|
@@ -204,6 +206,7 @@ declare const registry: {
|
|
|
204
206
|
readonly HelixFacetEvent: typeof HelixFacetEvent;
|
|
205
207
|
readonly HelixFilterEvent: typeof HelixFilterEvent;
|
|
206
208
|
readonly HelixFilteredEvent: typeof HelixFilteredEvent;
|
|
209
|
+
readonly HelixFoundEvent: typeof HelixFoundEvent;
|
|
207
210
|
readonly HelixGraphFilterEvent: typeof HelixGraphFilterEvent;
|
|
208
211
|
readonly HelixGraphLayoutEvent: typeof HelixGraphLayoutEvent;
|
|
209
212
|
readonly HelixGraphPanEvent: typeof HelixGraphPanEvent;
|
|
@@ -255,6 +258,7 @@ declare const registry: {
|
|
|
255
258
|
readonly HelixSortEvent: typeof HelixSortEvent;
|
|
256
259
|
readonly HelixSortedEvent: typeof HelixSortedEvent;
|
|
257
260
|
readonly HelixSplitEvent: typeof HelixSplitEvent;
|
|
261
|
+
readonly HelixStopEvent: typeof HelixStopEvent;
|
|
258
262
|
readonly HelixStrandsFallbackEvent: typeof HelixStrandsFallbackEvent;
|
|
259
263
|
readonly HelixTerminalBellEvent: typeof HelixTerminalBellEvent;
|
|
260
264
|
readonly HelixTerminalInputEvent: typeof HelixTerminalInputEvent;
|
package/dist/events/events.js
CHANGED
|
@@ -47,6 +47,7 @@ import { HelixExpandEvent } from './expand.js';
|
|
|
47
47
|
import { HelixFacetEvent } from './facet.js';
|
|
48
48
|
import { HelixFilterEvent } from './filter.js';
|
|
49
49
|
import { HelixFilteredEvent } from './filtered.js';
|
|
50
|
+
import { HelixFoundEvent } from './found.js';
|
|
50
51
|
import { HelixGraphFilterEvent } from './graph-filter.js';
|
|
51
52
|
import { HelixGraphLayoutEvent } from './graph-layout.js';
|
|
52
53
|
import { HelixGraphPanEvent } from './graph-pan.js';
|
|
@@ -98,6 +99,7 @@ import { HelixShortcutEvent } from './shortcut.js';
|
|
|
98
99
|
import { HelixSortEvent } from './sort.js';
|
|
99
100
|
import { HelixSortedEvent } from './sorted.js';
|
|
100
101
|
import { HelixSplitEvent } from './split.js';
|
|
102
|
+
import { HelixStopEvent } from './stop.js';
|
|
101
103
|
import { HelixStrandsFallbackEvent } from './strands-fallback.js';
|
|
102
104
|
import { HelixTerminalBellEvent } from './terminal-bell.js';
|
|
103
105
|
import { HelixTerminalInputEvent } from './terminal-input.js';
|
|
@@ -110,7 +112,7 @@ import { HelixTourAskEvent } from './tour-ask.js';
|
|
|
110
112
|
import { HelixTourStatusEvent } from './tour-status.js';
|
|
111
113
|
import { HelixTypingEvent } from './typing.js';
|
|
112
114
|
export { helixEventNames } from './names.js';
|
|
113
|
-
export { HelixActionEvent, HelixActivateEvent, HelixAuraFallbackEvent, HelixBandEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeListenEvent, HelixBeforeMoveEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePasteEvent, HelixBeforePinEvent, HelixBeforeReconnectEvent, HelixBeforeRelabelEvent, HelixBeforeReorderEvent, HelixBeforeResizeEvent, HelixBeforeSplitEvent, HelixBeforeToggleEvent, HelixCanvasEditEvent, HelixCanvasPanEvent, HelixCanvasViewEvent, HelixCanvasZoomEvent, HelixCaretEvent, HelixClearEvent, HelixCollapseEvent, HelixCompleteEvent, HelixConnectEvent, HelixConsoleEvent, HelixCopyErrorEvent, HelixCopyEvent, HelixCreateEvent, HelixDeviceButtonEvent, HelixDeviceKeyEvent, HelixDeviceScreenshotEvent, HelixDeviceScrollEvent, HelixDeviceSwipeEvent, HelixDeviceTapEvent, HelixDeviceTextEvent, HelixDeviceTouchEvent, HelixDismissEvent, HelixEditEvent, HelixEndEvent, HelixExpandEvent, HelixFacetEvent, HelixFilterEvent, HelixFilteredEvent, HelixGraphFilterEvent, HelixGraphLayoutEvent, HelixGraphPanEvent, HelixGraphPartChangeEvent, HelixGraphReadyEvent, HelixGraphSignalEvent, HelixGraphZoomEvent, HelixHistoryEvent, HelixListenEvent, HelixLoadEvent, HelixLoadMoreEvent, HelixMapClusterEvent, HelixMapPanEvent, HelixMapPartChangeEvent, HelixMapReadyEvent, HelixMapRotateEvent, HelixMapTiltEvent, HelixMapZoomEvent, HelixMoveEvent, HelixNavigateEvent, HelixNextEvent, HelixPanelResizeEvent, HelixPastedEvent, HelixPinEvent, HelixPlotChangeEvent, HelixPlotTurnEvent, HelixPressEvent, HelixPreviewEvent, HelixPreviousEvent, HelixRangeChangeEvent, HelixReadEvent, HelixReadingChangeEvent, HelixReadingPressEvent, HelixReconnectEvent, HelixRejectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixReorderedEvent, HelixResizedEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSelectedEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixSortedEvent, HelixSplitEvent, HelixStrandsFallbackEvent, HelixTerminalBellEvent, HelixTerminalInputEvent, HelixTerminalLinkEvent, HelixTerminalResizeEvent, HelixTerminalRestartEvent, HelixTerminalTitleEvent, HelixToggleEvent, HelixTourAskEvent, HelixTourStatusEvent, HelixTypingEvent, };
|
|
115
|
+
export { HelixActionEvent, HelixActivateEvent, HelixAuraFallbackEvent, HelixBandEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeListenEvent, HelixBeforeMoveEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePasteEvent, HelixBeforePinEvent, HelixBeforeReconnectEvent, HelixBeforeRelabelEvent, HelixBeforeReorderEvent, HelixBeforeResizeEvent, HelixBeforeSplitEvent, HelixBeforeToggleEvent, HelixCanvasEditEvent, HelixCanvasPanEvent, HelixCanvasViewEvent, HelixCanvasZoomEvent, HelixCaretEvent, HelixClearEvent, HelixCollapseEvent, HelixCompleteEvent, HelixConnectEvent, HelixConsoleEvent, HelixCopyErrorEvent, HelixCopyEvent, HelixCreateEvent, HelixDeviceButtonEvent, HelixDeviceKeyEvent, HelixDeviceScreenshotEvent, HelixDeviceScrollEvent, HelixDeviceSwipeEvent, HelixDeviceTapEvent, HelixDeviceTextEvent, HelixDeviceTouchEvent, HelixDismissEvent, HelixEditEvent, HelixEndEvent, HelixExpandEvent, HelixFacetEvent, HelixFilterEvent, HelixFilteredEvent, HelixFoundEvent, HelixGraphFilterEvent, HelixGraphLayoutEvent, HelixGraphPanEvent, HelixGraphPartChangeEvent, HelixGraphReadyEvent, HelixGraphSignalEvent, HelixGraphZoomEvent, HelixHistoryEvent, HelixListenEvent, HelixLoadEvent, HelixLoadMoreEvent, HelixMapClusterEvent, HelixMapPanEvent, HelixMapPartChangeEvent, HelixMapReadyEvent, HelixMapRotateEvent, HelixMapTiltEvent, HelixMapZoomEvent, HelixMoveEvent, HelixNavigateEvent, HelixNextEvent, HelixPanelResizeEvent, HelixPastedEvent, HelixPinEvent, HelixPlotChangeEvent, HelixPlotTurnEvent, HelixPressEvent, HelixPreviewEvent, HelixPreviousEvent, HelixRangeChangeEvent, HelixReadEvent, HelixReadingChangeEvent, HelixReadingPressEvent, HelixReconnectEvent, HelixRejectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixReorderedEvent, HelixResizedEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSelectedEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixSortedEvent, HelixSplitEvent, HelixStopEvent, HelixStrandsFallbackEvent, HelixTerminalBellEvent, HelixTerminalInputEvent, HelixTerminalLinkEvent, HelixTerminalResizeEvent, HelixTerminalRestartEvent, HelixTerminalTitleEvent, HelixToggleEvent, HelixTourAskEvent, HelixTourStatusEvent, HelixTypingEvent, };
|
|
114
116
|
const registry = {
|
|
115
117
|
HelixActionEvent,
|
|
116
118
|
HelixActivateEvent,
|
|
@@ -161,6 +163,7 @@ const registry = {
|
|
|
161
163
|
HelixFacetEvent,
|
|
162
164
|
HelixFilterEvent,
|
|
163
165
|
HelixFilteredEvent,
|
|
166
|
+
HelixFoundEvent,
|
|
164
167
|
HelixGraphFilterEvent,
|
|
165
168
|
HelixGraphLayoutEvent,
|
|
166
169
|
HelixGraphPanEvent,
|
|
@@ -212,6 +215,7 @@ const registry = {
|
|
|
212
215
|
HelixSortEvent,
|
|
213
216
|
HelixSortedEvent,
|
|
214
217
|
HelixSplitEvent,
|
|
218
|
+
HelixStopEvent,
|
|
215
219
|
HelixStrandsFallbackEvent,
|
|
216
220
|
HelixTerminalBellEvent,
|
|
217
221
|
HelixTerminalInputEvent,
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { FoundDetail } from './details.js';
|
|
2
|
+
/**
|
|
3
|
+
* A search found its matches, or moved among them, with how many there are
|
|
4
|
+
* and which is current.
|
|
5
|
+
*
|
|
6
|
+
* Sent by Find after each search and each move, and again when content that
|
|
7
|
+
* changed under an open search is searched again. Not cancelable: it reports
|
|
8
|
+
* matches already marked, as `helix-filtered` reports a list already
|
|
9
|
+
* narrowed.
|
|
10
|
+
*/
|
|
11
|
+
export declare class HelixFoundEvent extends CustomEvent<FoundDetail> {
|
|
12
|
+
static readonly eventName = "helix-found";
|
|
13
|
+
constructor(detail: FoundDetail);
|
|
14
|
+
}
|
package/dist/events/names.js
CHANGED
|
@@ -4,14 +4,14 @@ export const helixEventNames = new Set(('action activate aura-fallback band befo
|
|
|
4
4
|
'canvas-edit canvas-pan canvas-view canvas-zoom caret clear collapse complete ' +
|
|
5
5
|
'connect console copy copy-error create device-button device-key device-screenshot ' +
|
|
6
6
|
'device-scroll device-swipe device-tap device-text device-touch dismiss edit end expand facet filter ' +
|
|
7
|
-
'filtered graph-filter graph-layout graph-pan graph-part-change graph-ready ' +
|
|
7
|
+
'filtered found graph-filter graph-layout graph-pan graph-part-change graph-ready ' +
|
|
8
8
|
'graph-signal graph-zoom history listen load load-more map-cluster map-pan map-part-change ' +
|
|
9
9
|
'map-ready map-rotate map-tilt map-zoom move navigate next panel-resize pasted pin plot-change ' +
|
|
10
10
|
'plot-turn press ' +
|
|
11
11
|
'preview previous range-change read reading-change reading-press reconnect reject ' +
|
|
12
12
|
'relabel remove reorder ' +
|
|
13
13
|
'reordered resize resized sample-end sample-start scrolled select selected send ' +
|
|
14
|
-
'shortcut sort sorted split strands-fallback terminal-bell terminal-input terminal-link ' +
|
|
14
|
+
'shortcut sort sorted split stop strands-fallback terminal-bell terminal-input terminal-link ' +
|
|
15
15
|
'terminal-resize terminal-restart terminal-title toggle tour-ask tour-status typing')
|
|
16
16
|
.split(' ')
|
|
17
17
|
.map((name) => `helix-${name}`));
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A reader asked for what is under way to stop: the stop control a chat
|
|
3
|
+
* composer shows in place of its send button while a reply is on its way.
|
|
4
|
+
*
|
|
5
|
+
* Carries nothing, because what stops is the listener's to know. Not
|
|
6
|
+
* cancelable: the reader has asked, and the composer changes nothing by
|
|
7
|
+
* itself, so there is nothing for a listener to refuse.
|
|
8
|
+
*/
|
|
9
|
+
export declare class HelixStopEvent extends Event {
|
|
10
|
+
static readonly eventName = "helix-stop";
|
|
11
|
+
constructor();
|
|
12
|
+
}
|
|
@@ -298,6 +298,25 @@ export declare class HelixElement extends LitElement {
|
|
|
298
298
|
* cost, and a property read where it did not: see `reportRender`.
|
|
299
299
|
*/
|
|
300
300
|
protected performUpdate(): void;
|
|
301
|
+
/**
|
|
302
|
+
* Whether the first update found React's props, where it looked before the
|
|
303
|
+
* render. See `willUpdate`.
|
|
304
|
+
*/
|
|
305
|
+
private reactApplied;
|
|
306
|
+
/**
|
|
307
|
+
* **The first look for React's props, and the one that costs nothing.** It
|
|
308
|
+
* succeeds whenever the definition landed after React hydrated, which is the
|
|
309
|
+
* ordering a deferred or lazily imported element has: the bag is already on
|
|
310
|
+
* the node, so the value is in the first render.
|
|
311
|
+
*
|
|
312
|
+
* **Before the render, because `firstUpdated` is too late.** A value
|
|
313
|
+
* assigned there schedules a second update as the first one finishes, which
|
|
314
|
+
* Lit's development build reports as `change-in-update`: Command's
|
|
315
|
+
* `filterMatch` did in the Hartley app until October 14, 2026. A hydrating
|
|
316
|
+
* render has to be the server's, so that element looks in `firstUpdated`,
|
|
317
|
+
* where `finishHydration` asks for the update after it anyway.
|
|
318
|
+
*/
|
|
319
|
+
protected willUpdate(changed: PropertyValues): void;
|
|
301
320
|
/**
|
|
302
321
|
* Marks the component's first style resolution as done, so `SETTLED` stops
|
|
303
322
|
* suppressing transitions.
|
|
@@ -107,10 +107,16 @@ export class HelixElement extends LitElement {
|
|
|
107
107
|
reportRender(this, start, performance.now() - start);
|
|
108
108
|
}
|
|
109
109
|
}
|
|
110
|
+
willUpdate(changed) {
|
|
111
|
+
super.willUpdate(changed);
|
|
112
|
+
if (!this.hasUpdated && !this.hydrating) {
|
|
113
|
+
this.reactApplied = applyReactProperties(this);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
110
116
|
firstUpdated(changed) {
|
|
111
117
|
super.firstUpdated(changed);
|
|
112
118
|
reportUsage(this);
|
|
113
|
-
const applied = applyReactProperties(this);
|
|
119
|
+
const applied = this.reactApplied ?? applyReactProperties(this);
|
|
114
120
|
requestAnimationFrame(() => {
|
|
115
121
|
this.toggleState('settled', true);
|
|
116
122
|
this.resolveSettled();
|
package/dist/index.d.ts
CHANGED
|
@@ -28,7 +28,7 @@ export { animationsFinished, animationsSettled, type OpenPhase, OpenPhaseControl
|
|
|
28
28
|
export { OptionWindowController, type OptionWindowOptions, } from './controllers/option-window-controller/option-window-controller.js';
|
|
29
29
|
export { MAX_FRAME_STEP, PaintGateController, type PaintGateOptions, } from './controllers/paint-gate-controller/paint-gate-controller.js';
|
|
30
30
|
export { PlacementController } from './controllers/placement-controller/placement-controller.js';
|
|
31
|
-
export { PopoverController, type PopoverOptions, } from './controllers/popover-controller/popover-controller.js';
|
|
31
|
+
export { hintInside, hintMayShow, onPanelOpen, PopoverController, type PopoverOptions, } from './controllers/popover-controller/popover-controller.js';
|
|
32
32
|
export { RelativeClockController, type RelativeClockOptions, } from './controllers/relative-clock-controller/relative-clock-controller.js';
|
|
33
33
|
export { RemotePlaybackController, type RemoteReport, } from './controllers/remote-playback-controller/remote-playback-controller.js';
|
|
34
34
|
export { ReorderController, type ReorderMove, type ReorderOptions, type ReorderWords, requestReorder, } from './controllers/reorder-controller/reorder-controller.js';
|
|
@@ -41,7 +41,7 @@ export { UpgradeController, type UpgradeOptions, } from './controllers/upgrade-c
|
|
|
41
41
|
export { type Rendered, VirtualizeController, type VirtualizeOptions, type Window as VirtualizeWindow, } from './controllers/virtualize-controller/virtualize-controller.js';
|
|
42
42
|
export { Waterfall } from './controllers/virtualize-controller/waterfall.js';
|
|
43
43
|
export { eventsForTag, registerElementEvents } from './events/element-events.js';
|
|
44
|
-
export { type ActivateDetail, type AuraFallbackDetail, type BandDetail, type CanvasView, type CaretDetail, type ChangeDetail, type CompleteDetail, type ConnectDetail, type ConsoleDetail, type CopyDetail, type CreateDetail, type DeviceButton, type DeviceButtonDetail, type DeviceKeyDetail, type DeviceScrollDetail, type DeviceSwipeDetail, type DeviceTapDetail, type DeviceTextDetail, type DeviceTouchDetail, type DismissDetail, type FacetDetail, type FilterDetail, type GraphFilterDetail, type GraphLayoutDetail, type GraphPartChangeDetail, type GraphSignalDetail, HelixActionEvent, HelixActivateEvent, HelixAuraFallbackEvent, HelixBandEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeListenEvent, HelixBeforeMoveEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePasteEvent, HelixBeforePinEvent, HelixBeforeReconnectEvent, HelixBeforeRelabelEvent, HelixBeforeReorderEvent, HelixBeforeResizeEvent, HelixBeforeSplitEvent, HelixBeforeToggleEvent, HelixCanvasEditEvent, HelixCanvasPanEvent, HelixCanvasViewEvent, HelixCanvasZoomEvent, HelixCaretEvent, HelixClearEvent, HelixCollapseEvent, HelixCompleteEvent, HelixConnectEvent, HelixConsoleEvent, HelixCopyErrorEvent, HelixCopyEvent, HelixCreateEvent, HelixDeviceButtonEvent, HelixDeviceKeyEvent, HelixDeviceScreenshotEvent, HelixDeviceScrollEvent, HelixDeviceSwipeEvent, HelixDeviceTapEvent, HelixDeviceTextEvent, HelixDeviceTouchEvent, HelixDismissEvent, HelixEditEvent, HelixEndEvent, HelixExpandEvent, HelixFacetEvent, HelixFilterEvent, HelixFilteredEvent, HelixGraphFilterEvent, HelixGraphLayoutEvent, HelixGraphPanEvent, HelixGraphPartChangeEvent, HelixGraphReadyEvent, HelixGraphSignalEvent, HelixGraphZoomEvent, HelixHistoryEvent, HelixListenEvent, HelixLoadEvent, HelixLoadMoreEvent, HelixMapClusterEvent, HelixMapPanEvent, HelixMapPartChangeEvent, HelixMapReadyEvent, HelixMapRotateEvent, HelixMapTiltEvent, HelixMapZoomEvent, HelixMoveEvent, HelixNavigateEvent, HelixNextEvent, HelixPanelResizeEvent, HelixPastedEvent, HelixPinEvent, HelixPlotChangeEvent, HelixPlotTurnEvent, HelixPressEvent, HelixPreviewEvent, HelixPreviousEvent, HelixRangeChangeEvent, HelixReadEvent, HelixReadingChangeEvent, HelixReadingPressEvent, HelixReconnectEvent, HelixRejectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixReorderedEvent, HelixResizedEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSelectedEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixSortedEvent, HelixSplitEvent, HelixStrandsFallbackEvent, HelixTerminalBellEvent, HelixTerminalInputEvent, HelixTerminalLinkEvent, HelixTerminalResizeEvent, HelixTerminalRestartEvent, HelixTerminalTitleEvent, HelixToggleEvent, HelixTourAskEvent, HelixTourStatusEvent, HelixTypingEvent, type ListenDetail, type MapClusterDetail, type MapPanDetail, type MapPartChangeDetail, type MapRotateDetail, type MapTiltDetail, type MapZoomDetail, type MoveDetail, type NavigateDetail, type OpenDetail, type PasteDetail, type PlotChangeDetail, type PlotTurnDetail, type PressDetail, type PressPointerType, type RangeDetail, type ReadDetail, type ReadingDetail, type ReconnectDetail, type Refusal, type RefusedFile, type RejectDetail, type RelabelDetail, type RemoveDetail, type ReorderDetail, type ResizeDetail, type ScrolledDetail, type SelectDetail, type SendDetail, type ShortcutDetail, type SkipDetail, type SortDetail, type StrandsFallbackDetail, type TerminalInputDetail, type TerminalLinkDetail, type TerminalResizeDetail, type TerminalTitleDetail, type ToggleDetail, type TourStatusDetail, type TypingDetail, type ViewportPanDetail, type ViewportZoomDetail, } from './events/events.js';
|
|
44
|
+
export { type ActivateDetail, type AuraFallbackDetail, type BandDetail, type CanvasView, type CaretDetail, type ChangeDetail, type CompleteDetail, type ConnectDetail, type ConsoleDetail, type CopyDetail, type CreateDetail, type DeviceButton, type DeviceButtonDetail, type DeviceKeyDetail, type DeviceScrollDetail, type DeviceSwipeDetail, type DeviceTapDetail, type DeviceTextDetail, type DeviceTouchDetail, type DismissDetail, type FacetDetail, type FilterDetail, type FoundDetail, type GraphFilterDetail, type GraphLayoutDetail, type GraphPartChangeDetail, type GraphSignalDetail, HelixActionEvent, HelixActivateEvent, HelixAuraFallbackEvent, HelixBandEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeListenEvent, HelixBeforeMoveEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePasteEvent, HelixBeforePinEvent, HelixBeforeReconnectEvent, HelixBeforeRelabelEvent, HelixBeforeReorderEvent, HelixBeforeResizeEvent, HelixBeforeSplitEvent, HelixBeforeToggleEvent, HelixCanvasEditEvent, HelixCanvasPanEvent, HelixCanvasViewEvent, HelixCanvasZoomEvent, HelixCaretEvent, HelixClearEvent, HelixCollapseEvent, HelixCompleteEvent, HelixConnectEvent, HelixConsoleEvent, HelixCopyErrorEvent, HelixCopyEvent, HelixCreateEvent, HelixDeviceButtonEvent, HelixDeviceKeyEvent, HelixDeviceScreenshotEvent, HelixDeviceScrollEvent, HelixDeviceSwipeEvent, HelixDeviceTapEvent, HelixDeviceTextEvent, HelixDeviceTouchEvent, HelixDismissEvent, HelixEditEvent, HelixEndEvent, HelixExpandEvent, HelixFacetEvent, HelixFilterEvent, HelixFilteredEvent, HelixFoundEvent, HelixGraphFilterEvent, HelixGraphLayoutEvent, HelixGraphPanEvent, HelixGraphPartChangeEvent, HelixGraphReadyEvent, HelixGraphSignalEvent, HelixGraphZoomEvent, HelixHistoryEvent, HelixListenEvent, HelixLoadEvent, HelixLoadMoreEvent, HelixMapClusterEvent, HelixMapPanEvent, HelixMapPartChangeEvent, HelixMapReadyEvent, HelixMapRotateEvent, HelixMapTiltEvent, HelixMapZoomEvent, HelixMoveEvent, HelixNavigateEvent, HelixNextEvent, HelixPanelResizeEvent, HelixPastedEvent, HelixPinEvent, HelixPlotChangeEvent, HelixPlotTurnEvent, HelixPressEvent, HelixPreviewEvent, HelixPreviousEvent, HelixRangeChangeEvent, HelixReadEvent, HelixReadingChangeEvent, HelixReadingPressEvent, HelixReconnectEvent, HelixRejectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixReorderedEvent, HelixResizedEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSelectedEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixSortedEvent, HelixSplitEvent, HelixStopEvent, HelixStrandsFallbackEvent, HelixTerminalBellEvent, HelixTerminalInputEvent, HelixTerminalLinkEvent, HelixTerminalResizeEvent, HelixTerminalRestartEvent, HelixTerminalTitleEvent, HelixToggleEvent, HelixTourAskEvent, HelixTourStatusEvent, HelixTypingEvent, type ListenDetail, type MapClusterDetail, type MapPanDetail, type MapPartChangeDetail, type MapRotateDetail, type MapTiltDetail, type MapZoomDetail, type MoveDetail, type NavigateDetail, type OpenDetail, type PasteDetail, type PlotChangeDetail, type PlotTurnDetail, type PressDetail, type PressPointerType, type RangeDetail, type ReadDetail, type ReadingDetail, type ReconnectDetail, type Refusal, type RefusedFile, type RejectDetail, type RelabelDetail, type RemoveDetail, type ReorderDetail, type ResizeDetail, type ScrolledDetail, type SelectDetail, type SendDetail, type ShortcutDetail, type SkipDetail, type SortDetail, type StrandsFallbackDetail, type TerminalInputDetail, type TerminalLinkDetail, type TerminalResizeDetail, type TerminalTitleDetail, type ToggleDetail, type TourStatusDetail, type TypingDetail, type ViewportPanDetail, type ViewportZoomDetail, } from './events/events.js';
|
|
45
45
|
export { HelixElement, whenHydrated } from './helix-element/helix-element.js';
|
|
46
46
|
export { LAYERS_RULE, MIRROR_RULE, SCROLLER_RULE, SPOKEN_RULE, TOUCHES_RULE, VIRTUAL_RULE, } from './helix-element/mark-rules.js';
|
|
47
47
|
export { HelixFormElement } from './helix-form-element/helix-form-element.js';
|
|
@@ -100,6 +100,7 @@ export { type ElementByIdOptions, elementById, searchableById, } from './utils/e
|
|
|
100
100
|
export { exportParts } from './utils/export-parts/export-parts.js';
|
|
101
101
|
export { fillTemplate, labelWith } from './utils/fill-template/fill-template.js';
|
|
102
102
|
export { FILTER_MARK, filterKeeps, markMatches, rangeOf, } from './utils/filter-marks/filter-marks.js';
|
|
103
|
+
export { FIND_CURRENT, FIND_MATCH, type FindDirection, type Finder, type FindQuery, type FindResult, findPattern, findRanges, findTextRanges, type TextFinderOptions, textFinder, } from './utils/find-text/find-text.js';
|
|
103
104
|
export { focusTarget } from './utils/focus-target/focus-target.js';
|
|
104
105
|
export { deepActiveElement, deepContains, focusableElements, PRESSABLE, pressedOwnControl, } from './utils/focusable-elements/focusable-elements.js';
|
|
105
106
|
export { afterLinkFollowed, followLink, type LinkModifiers, type LinkTarget, } from './utils/follow-link/follow-link.js';
|
package/dist/index.js
CHANGED
|
@@ -28,7 +28,7 @@ export { animationsFinished, animationsSettled, OpenPhaseController, } from './c
|
|
|
28
28
|
export { OptionWindowController, } from './controllers/option-window-controller/option-window-controller.js';
|
|
29
29
|
export { MAX_FRAME_STEP, PaintGateController, } from './controllers/paint-gate-controller/paint-gate-controller.js';
|
|
30
30
|
export { PlacementController } from './controllers/placement-controller/placement-controller.js';
|
|
31
|
-
export { PopoverController, } from './controllers/popover-controller/popover-controller.js';
|
|
31
|
+
export { hintInside, hintMayShow, onPanelOpen, PopoverController, } from './controllers/popover-controller/popover-controller.js';
|
|
32
32
|
export { RelativeClockController, } from './controllers/relative-clock-controller/relative-clock-controller.js';
|
|
33
33
|
export { RemotePlaybackController, } from './controllers/remote-playback-controller/remote-playback-controller.js';
|
|
34
34
|
export { ReorderController, requestReorder, } from './controllers/reorder-controller/reorder-controller.js';
|
|
@@ -41,7 +41,7 @@ export { UpgradeController, } from './controllers/upgrade-controller/upgrade-con
|
|
|
41
41
|
export { VirtualizeController, } from './controllers/virtualize-controller/virtualize-controller.js';
|
|
42
42
|
export { Waterfall } from './controllers/virtualize-controller/waterfall.js';
|
|
43
43
|
export { eventsForTag, registerElementEvents } from './events/element-events.js';
|
|
44
|
-
export { HelixActionEvent, HelixActivateEvent, HelixAuraFallbackEvent, HelixBandEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeListenEvent, HelixBeforeMoveEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePasteEvent, HelixBeforePinEvent, HelixBeforeReconnectEvent, HelixBeforeRelabelEvent, HelixBeforeReorderEvent, HelixBeforeResizeEvent, HelixBeforeSplitEvent, HelixBeforeToggleEvent, HelixCanvasEditEvent, HelixCanvasPanEvent, HelixCanvasViewEvent, HelixCanvasZoomEvent, HelixCaretEvent, HelixClearEvent, HelixCollapseEvent, HelixCompleteEvent, HelixConnectEvent, HelixConsoleEvent, HelixCopyErrorEvent, HelixCopyEvent, HelixCreateEvent, HelixDeviceButtonEvent, HelixDeviceKeyEvent, HelixDeviceScreenshotEvent, HelixDeviceScrollEvent, HelixDeviceSwipeEvent, HelixDeviceTapEvent, HelixDeviceTextEvent, HelixDeviceTouchEvent, HelixDismissEvent, HelixEditEvent, HelixEndEvent, HelixExpandEvent, HelixFacetEvent, HelixFilterEvent, HelixFilteredEvent, HelixGraphFilterEvent, HelixGraphLayoutEvent, HelixGraphPanEvent, HelixGraphPartChangeEvent, HelixGraphReadyEvent, HelixGraphSignalEvent, HelixGraphZoomEvent, HelixHistoryEvent, HelixListenEvent, HelixLoadEvent, HelixLoadMoreEvent, HelixMapClusterEvent, HelixMapPanEvent, HelixMapPartChangeEvent, HelixMapReadyEvent, HelixMapRotateEvent, HelixMapTiltEvent, HelixMapZoomEvent, HelixMoveEvent, HelixNavigateEvent, HelixNextEvent, HelixPanelResizeEvent, HelixPastedEvent, HelixPinEvent, HelixPlotChangeEvent, HelixPlotTurnEvent, HelixPressEvent, HelixPreviewEvent, HelixPreviousEvent, HelixRangeChangeEvent, HelixReadEvent, HelixReadingChangeEvent, HelixReadingPressEvent, HelixReconnectEvent, HelixRejectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixReorderedEvent, HelixResizedEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSelectedEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixSortedEvent, HelixSplitEvent, HelixStrandsFallbackEvent, HelixTerminalBellEvent, HelixTerminalInputEvent, HelixTerminalLinkEvent, HelixTerminalResizeEvent, HelixTerminalRestartEvent, HelixTerminalTitleEvent, HelixToggleEvent, HelixTourAskEvent, HelixTourStatusEvent, HelixTypingEvent, } from './events/events.js';
|
|
44
|
+
export { HelixActionEvent, HelixActivateEvent, HelixAuraFallbackEvent, HelixBandEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeListenEvent, HelixBeforeMoveEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePasteEvent, HelixBeforePinEvent, HelixBeforeReconnectEvent, HelixBeforeRelabelEvent, HelixBeforeReorderEvent, HelixBeforeResizeEvent, HelixBeforeSplitEvent, HelixBeforeToggleEvent, HelixCanvasEditEvent, HelixCanvasPanEvent, HelixCanvasViewEvent, HelixCanvasZoomEvent, HelixCaretEvent, HelixClearEvent, HelixCollapseEvent, HelixCompleteEvent, HelixConnectEvent, HelixConsoleEvent, HelixCopyErrorEvent, HelixCopyEvent, HelixCreateEvent, HelixDeviceButtonEvent, HelixDeviceKeyEvent, HelixDeviceScreenshotEvent, HelixDeviceScrollEvent, HelixDeviceSwipeEvent, HelixDeviceTapEvent, HelixDeviceTextEvent, HelixDeviceTouchEvent, HelixDismissEvent, HelixEditEvent, HelixEndEvent, HelixExpandEvent, HelixFacetEvent, HelixFilterEvent, HelixFilteredEvent, HelixFoundEvent, HelixGraphFilterEvent, HelixGraphLayoutEvent, HelixGraphPanEvent, HelixGraphPartChangeEvent, HelixGraphReadyEvent, HelixGraphSignalEvent, HelixGraphZoomEvent, HelixHistoryEvent, HelixListenEvent, HelixLoadEvent, HelixLoadMoreEvent, HelixMapClusterEvent, HelixMapPanEvent, HelixMapPartChangeEvent, HelixMapReadyEvent, HelixMapRotateEvent, HelixMapTiltEvent, HelixMapZoomEvent, HelixMoveEvent, HelixNavigateEvent, HelixNextEvent, HelixPanelResizeEvent, HelixPastedEvent, HelixPinEvent, HelixPlotChangeEvent, HelixPlotTurnEvent, HelixPressEvent, HelixPreviewEvent, HelixPreviousEvent, HelixRangeChangeEvent, HelixReadEvent, HelixReadingChangeEvent, HelixReadingPressEvent, HelixReconnectEvent, HelixRejectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixReorderedEvent, HelixResizedEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSelectedEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixSortedEvent, HelixSplitEvent, HelixStopEvent, HelixStrandsFallbackEvent, HelixTerminalBellEvent, HelixTerminalInputEvent, HelixTerminalLinkEvent, HelixTerminalResizeEvent, HelixTerminalRestartEvent, HelixTerminalTitleEvent, HelixToggleEvent, HelixTourAskEvent, HelixTourStatusEvent, HelixTypingEvent, } from './events/events.js';
|
|
45
45
|
export { HelixElement, whenHydrated } from './helix-element/helix-element.js';
|
|
46
46
|
export { LAYERS_RULE, MIRROR_RULE, SCROLLER_RULE, SPOKEN_RULE, TOUCHES_RULE, VIRTUAL_RULE, } from './helix-element/mark-rules.js';
|
|
47
47
|
export { HelixFormElement } from './helix-form-element/helix-form-element.js';
|
|
@@ -100,6 +100,7 @@ export { elementById, searchableById, } from './utils/element-by-id/element-by-i
|
|
|
100
100
|
export { exportParts } from './utils/export-parts/export-parts.js';
|
|
101
101
|
export { fillTemplate, labelWith } from './utils/fill-template/fill-template.js';
|
|
102
102
|
export { FILTER_MARK, filterKeeps, markMatches, rangeOf, } from './utils/filter-marks/filter-marks.js';
|
|
103
|
+
export { FIND_CURRENT, FIND_MATCH, findPattern, findRanges, findTextRanges, textFinder, } from './utils/find-text/find-text.js';
|
|
103
104
|
export { focusTarget } from './utils/focus-target/focus-target.js';
|
|
104
105
|
export { deepActiveElement, deepContains, focusableElements, PRESSABLE, pressedOwnControl, } from './utils/focusable-elements/focusable-elements.js';
|
|
105
106
|
export { afterLinkFollowed, followLink, } from './utils/follow-link/follow-link.js';
|
|
@@ -292,12 +292,14 @@ export const MixinViewport = (Base) => {
|
|
|
292
292
|
}
|
|
293
293
|
const [up, start, end, down] = ['up', 'start', 'end', 'down'].map((way) => this.panGlyph(way));
|
|
294
294
|
const button = this.controlTag;
|
|
295
|
+
const tip = this.tag('tooltip');
|
|
295
296
|
const { material, raised } = this.controlAxes;
|
|
296
297
|
const ground = material ?? nothing;
|
|
297
298
|
return staticHtml `<div part="controls" role="toolbar" aria-label=${this.controlsLabel}>
|
|
298
299
|
${pan
|
|
299
300
|
? staticHtml `<${button}
|
|
300
301
|
part="pan-up"
|
|
302
|
+
id="pan-up"
|
|
301
303
|
exportparts="button: pan-up-button, live: pan-up-live, spinner: pan-up-spinner, text: pan-up-text"
|
|
302
304
|
label=${this.panLabel('up')}
|
|
303
305
|
material=${ground}
|
|
@@ -306,9 +308,10 @@ export const MixinViewport = (Base) => {
|
|
|
306
308
|
@helix-press=${stopPress}
|
|
307
309
|
>
|
|
308
310
|
<slot name="pan-up-icon">${up}</slot>
|
|
309
|
-
</${button}>
|
|
311
|
+
</${button}><${tip} for="pan-up" content=${this.panLabel('up')} exportparts="arrow: tooltip-arrow, arrow-bottom: tooltip-arrow-bottom, arrow-left: tooltip-arrow-left, arrow-right: tooltip-arrow-right, arrow-top: tooltip-arrow-top, surface: tooltip-surface, surface-bottom: tooltip-surface-bottom, surface-left: tooltip-surface-left, surface-right: tooltip-surface-right, surface-top: tooltip-surface-top"></${tip}>
|
|
310
312
|
<${button}
|
|
311
313
|
part="pan-start"
|
|
314
|
+
id="pan-start"
|
|
312
315
|
exportparts="button: pan-start-button, live: pan-start-live, spinner: pan-start-spinner, text: pan-start-text"
|
|
313
316
|
label=${this.panLabel('start')}
|
|
314
317
|
material=${ground}
|
|
@@ -317,9 +320,10 @@ export const MixinViewport = (Base) => {
|
|
|
317
320
|
@helix-press=${stopPress}
|
|
318
321
|
>
|
|
319
322
|
<slot name="pan-start-icon">${start}</slot>
|
|
320
|
-
</${button}>
|
|
323
|
+
</${button}><${tip} for="pan-start" content=${this.panLabel('start')} exportparts="arrow: tooltip-arrow, arrow-bottom: tooltip-arrow-bottom, arrow-left: tooltip-arrow-left, arrow-right: tooltip-arrow-right, arrow-top: tooltip-arrow-top, surface: tooltip-surface, surface-bottom: tooltip-surface-bottom, surface-left: tooltip-surface-left, surface-right: tooltip-surface-right, surface-top: tooltip-surface-top"></${tip}>
|
|
321
324
|
<${button}
|
|
322
325
|
part="pan-end"
|
|
326
|
+
id="pan-end"
|
|
323
327
|
exportparts="button: pan-end-button, live: pan-end-live, spinner: pan-end-spinner, text: pan-end-text"
|
|
324
328
|
label=${this.panLabel('end')}
|
|
325
329
|
material=${ground}
|
|
@@ -328,9 +332,10 @@ export const MixinViewport = (Base) => {
|
|
|
328
332
|
@helix-press=${stopPress}
|
|
329
333
|
>
|
|
330
334
|
<slot name="pan-end-icon">${end}</slot>
|
|
331
|
-
</${button}>
|
|
335
|
+
</${button}><${tip} for="pan-end" content=${this.panLabel('end')} exportparts="arrow: tooltip-arrow, arrow-bottom: tooltip-arrow-bottom, arrow-left: tooltip-arrow-left, arrow-right: tooltip-arrow-right, arrow-top: tooltip-arrow-top, surface: tooltip-surface, surface-bottom: tooltip-surface-bottom, surface-left: tooltip-surface-left, surface-right: tooltip-surface-right, surface-top: tooltip-surface-top"></${tip}>
|
|
332
336
|
<${button}
|
|
333
337
|
part="pan-down"
|
|
338
|
+
id="pan-down"
|
|
334
339
|
exportparts="button: pan-down-button, live: pan-down-live, spinner: pan-down-spinner, text: pan-down-text"
|
|
335
340
|
label=${this.panLabel('down')}
|
|
336
341
|
material=${ground}
|
|
@@ -339,11 +344,12 @@ export const MixinViewport = (Base) => {
|
|
|
339
344
|
@helix-press=${stopPress}
|
|
340
345
|
>
|
|
341
346
|
<slot name="pan-down-icon">${down}</slot>
|
|
342
|
-
</${button}>`
|
|
347
|
+
</${button}><${tip} for="pan-down" content=${this.panLabel('down')} exportparts="arrow: tooltip-arrow, arrow-bottom: tooltip-arrow-bottom, arrow-left: tooltip-arrow-left, arrow-right: tooltip-arrow-right, arrow-top: tooltip-arrow-top, surface: tooltip-surface, surface-bottom: tooltip-surface-bottom, surface-left: tooltip-surface-left, surface-right: tooltip-surface-right, surface-top: tooltip-surface-top"></${tip}>`
|
|
343
348
|
: nothing}
|
|
344
349
|
${zoom
|
|
345
350
|
? staticHtml `<${button}
|
|
346
351
|
part="zoom-in"
|
|
352
|
+
id="zoom-in"
|
|
347
353
|
exportparts="button: zoom-in-button, live: zoom-in-live, spinner: zoom-in-spinner, text: zoom-in-text"
|
|
348
354
|
label=${this.zoomInLabel}
|
|
349
355
|
material=${ground}
|
|
@@ -352,9 +358,10 @@ export const MixinViewport = (Base) => {
|
|
|
352
358
|
@helix-press=${stopPress}
|
|
353
359
|
>
|
|
354
360
|
<slot name="zoom-in-icon">+</slot>
|
|
355
|
-
</${button}>
|
|
361
|
+
</${button}><${tip} for="zoom-in" content=${this.zoomInLabel} exportparts="arrow: tooltip-arrow, arrow-bottom: tooltip-arrow-bottom, arrow-left: tooltip-arrow-left, arrow-right: tooltip-arrow-right, arrow-top: tooltip-arrow-top, surface: tooltip-surface, surface-bottom: tooltip-surface-bottom, surface-left: tooltip-surface-left, surface-right: tooltip-surface-right, surface-top: tooltip-surface-top"></${tip}>
|
|
356
362
|
<${button}
|
|
357
363
|
part="zoom-out"
|
|
364
|
+
id="zoom-out"
|
|
358
365
|
exportparts="button: zoom-out-button, live: zoom-out-live, spinner: zoom-out-spinner, text: zoom-out-text"
|
|
359
366
|
label=${this.zoomOutLabel}
|
|
360
367
|
material=${ground}
|
|
@@ -363,12 +370,13 @@ export const MixinViewport = (Base) => {
|
|
|
363
370
|
@helix-press=${stopPress}
|
|
364
371
|
>
|
|
365
372
|
<slot name="zoom-out-icon">−</slot>
|
|
366
|
-
</${button}>`
|
|
373
|
+
</${button}><${tip} for="zoom-out" content=${this.zoomOutLabel} exportparts="arrow: tooltip-arrow, arrow-bottom: tooltip-arrow-bottom, arrow-left: tooltip-arrow-left, arrow-right: tooltip-arrow-right, arrow-top: tooltip-arrow-top, surface: tooltip-surface, surface-bottom: tooltip-surface-bottom, surface-left: tooltip-surface-left, surface-right: tooltip-surface-right, surface-top: tooltip-surface-top"></${tip}>`
|
|
367
374
|
: nothing}
|
|
368
375
|
${more}
|
|
369
376
|
${fullscreen
|
|
370
377
|
? staticHtml `<${button}
|
|
371
378
|
part="fullscreen"
|
|
379
|
+
id="fullscreen"
|
|
372
380
|
exportparts="button: fullscreen-button, live: fullscreen-live, spinner: fullscreen-spinner, text: fullscreen-text"
|
|
373
381
|
aria-pressed=${this.filled ? 'true' : 'false'}
|
|
374
382
|
label=${this.fullscreenLabel}
|
|
@@ -378,7 +386,7 @@ export const MixinViewport = (Base) => {
|
|
|
378
386
|
@helix-press=${stopPress}
|
|
379
387
|
>
|
|
380
388
|
<slot name="fullscreen-icon">⤢</slot>
|
|
381
|
-
</${button}>`
|
|
389
|
+
</${button}><${tip} for="fullscreen" content=${this.fullscreenLabel} exportparts="arrow: tooltip-arrow, arrow-bottom: tooltip-arrow-bottom, arrow-left: tooltip-arrow-left, arrow-right: tooltip-arrow-right, arrow-top: tooltip-arrow-top, surface: tooltip-surface, surface-bottom: tooltip-surface-bottom, surface-left: tooltip-surface-left, surface-right: tooltip-surface-right, surface-top: tooltip-surface-top"></${tip}>`
|
|
382
390
|
: nothing}
|
|
383
391
|
</div>`;
|
|
384
392
|
}
|
|
@@ -8,5 +8,7 @@ import type { auditChildren as audit, auditEntry as entry } from './audit-childr
|
|
|
8
8
|
* builds. See `audit-children.ts`.
|
|
9
9
|
*/
|
|
10
10
|
export declare const auditChildren: typeof audit;
|
|
11
|
+
/** A production build has no audit, so nothing waits. See `QUIET`. */
|
|
12
|
+
export declare const QUIET = 0;
|
|
11
13
|
/** The missing-entry warning in a production build: nothing. See `auditEntry`. */
|
|
12
14
|
export declare const auditEntry: typeof entry;
|