@fusion.dev/helix-headless 0.147.0 → 0.149.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 +11222 -2332
- package/dist/accordion/item/accordion-item.d.ts +5 -2
- package/dist/accordion/item/accordion-item.js +11 -7
- package/dist/accordion/root/accordion-root.js +4 -6
- package/dist/announcement/root/announcement-root.d.ts +61 -5
- package/dist/announcement/root/announcement-root.js +126 -20
- package/dist/area-chart/root/area-chart-root.d.ts +11 -0
- package/dist/area-chart/root/area-chart-root.js +21 -9
- package/dist/avatar/group/avatar-group.d.ts +10 -2
- package/dist/avatar/group/avatar-group.js +10 -5
- package/dist/badge/count.d.ts +19 -0
- package/dist/badge/count.js +20 -0
- package/dist/badge/root/badge-root.d.ts +6 -2
- package/dist/badge/root/badge-root.js +8 -22
- package/dist/bar-chart/root/bar-chart-root.d.ts +13 -1
- package/dist/bar-chart/root/bar-chart-root.js +17 -4
- package/dist/blockquote/root/blockquote-root.d.ts +66 -8
- package/dist/blockquote/root/blockquote-root.js +85 -8
- package/dist/breadcrumbs/breadcrumb/breadcrumb.js +2 -2
- package/dist/breadcrumbs/root/breadcrumbs-root.d.ts +8 -1
- package/dist/breadcrumbs/root/breadcrumbs-root.js +5 -2
- package/dist/button/root/button-root.d.ts +10 -1
- package/dist/button/root/button-root.js +3 -2
- package/dist/button-group/arrows.d.ts +14 -0
- package/dist/button-group/arrows.js +10 -0
- package/dist/button-group/root/button-group-root.d.ts +144 -3
- package/dist/button-group/root/button-group-root.js +142 -2
- package/dist/callout/root/callout-root.d.ts +16 -2
- package/dist/callout/root/callout-root.js +16 -4
- package/dist/canvas/describe.d.ts +10 -0
- package/dist/canvas/describe.js +9 -0
- package/dist/canvas/edge-pan.d.ts +61 -0
- package/dist/canvas/edge-pan.js +63 -0
- package/dist/canvas/neighbor.d.ts +17 -0
- package/dist/canvas/neighbor.js +1 -0
- package/dist/canvas/node/canvas-node.d.ts +12 -2
- package/dist/canvas/node/canvas-node.js +8 -3
- package/dist/canvas/root/canvas-document.d.ts +10 -0
- package/dist/canvas/root/canvas-document.js +1 -0
- package/dist/canvas/root/canvas-root.d.ts +168 -9
- package/dist/canvas/root/canvas-root.js +239 -69
- package/dist/canvas/snap.d.ts +42 -0
- package/dist/canvas/snap.js +32 -0
- package/dist/carousel/root/carousel-root.d.ts +9 -3
- package/dist/carousel/root/carousel-root.js +17 -10
- package/dist/chat/composer/chat-composer.d.ts +5 -0
- package/dist/chat/composer/chat-composer.js +4 -1
- package/dist/chat/message/chat-message.d.ts +9 -5
- package/dist/chat/message/chat-message.js +8 -4
- package/dist/chat/naming.js +2 -2
- package/dist/chat/root/chat-root.d.ts +40 -4
- package/dist/chat/root/chat-root.js +38 -14
- package/dist/checkbox/root/checkbox-root.d.ts +11 -0
- package/dist/checkbox/root/checkbox-root.js +8 -2
- package/dist/checkbox-group/root/checkbox-group-root.d.ts +24 -0
- package/dist/checkbox-group/root/checkbox-group-root.js +28 -12
- package/dist/checkbox-group/select-all.d.ts +11 -0
- package/dist/checkbox-group/select-all.js +5 -0
- package/dist/code-block/root/code-block-root.d.ts +20 -8
- package/dist/code-block/root/code-block-root.js +16 -5
- package/dist/color-input/root/color-input-root.d.ts +13 -0
- package/dist/color-input/root/color-input-root.js +18 -5
- package/dist/color-picker/root/color-picker-root.d.ts +19 -3
- package/dist/color-picker/root/color-picker-root.js +52 -24
- package/dist/color-picker/wheel.d.ts +11 -0
- package/dist/color-picker/wheel.js +9 -0
- package/dist/combobox/root/combobox-root.d.ts +106 -18
- package/dist/combobox/root/combobox-root.js +101 -26
- package/dist/command/root/command-root.d.ts +19 -9
- package/dist/command/root/command-root.js +9 -4
- package/dist/copy-button/root/copy-button-root.d.ts +5 -0
- package/dist/copy-button/root/copy-button-root.js +7 -2
- package/dist/data-table/root/data-table-root.d.ts +171 -29
- package/dist/data-table/root/data-table-root.js +284 -161
- package/dist/date-input/root/date-input-root.d.ts +32 -9
- package/dist/date-input/root/date-input-root.js +66 -44
- package/dist/date-picker/root/date-picker-root.d.ts +38 -15
- package/dist/date-picker/root/date-picker-root.js +52 -33
- package/dist/description-list/item/description-list-item.d.ts +4 -0
- package/dist/description-list/item/description-list-item.js +7 -1
- package/dist/dialog/root/dialog-root.d.ts +12 -1
- package/dist/dialog/root/dialog-root.js +11 -4
- package/dist/divider/root/divider-root.d.ts +45 -16
- package/dist/divider/root/divider-root.js +28 -4
- package/dist/donut-chart/root/donut-chart-root.d.ts +5 -0
- package/dist/donut-chart/root/donut-chart-root.js +8 -5
- package/dist/drawer/root/drawer-root.d.ts +12 -1
- package/dist/drawer/root/drawer-root.js +9 -2
- package/dist/drilldown/item/drilldown-item.js +3 -4
- package/dist/drilldown/root/drilldown-root.d.ts +5 -0
- package/dist/drilldown/root/drilldown-root.js +4 -1
- package/dist/element-events.generated.js +26 -3
- package/dist/empty/root/empty-root.d.ts +17 -3
- package/dist/empty/root/empty-root.js +29 -5
- package/dist/file-input/root/file-input-root.d.ts +18 -3
- package/dist/file-input/root/file-input-root.js +34 -18
- package/dist/file-input/status.js +2 -1
- package/dist/filter-input/chip/filter-chip.d.ts +13 -0
- package/dist/filter-input/chip/filter-chip.js +7 -3
- package/dist/filter-input/menu/filter-menu.d.ts +5 -0
- package/dist/filter-input/menu/filter-menu.js +3 -1
- package/dist/filter-input/root/filter-input-root.d.ts +20 -3
- package/dist/filter-input/root/filter-input-root.js +8 -4
- package/dist/format-date/fields.d.ts +20 -0
- package/dist/format-date/fields.js +14 -0
- package/dist/format-date/options.d.ts +2 -1
- package/dist/format-date/options.js +9 -38
- package/dist/format-date/root/format-date-root.d.ts +55 -5
- package/dist/format-date/root/format-date-root.js +29 -34
- package/dist/graph/root/graph-model.d.ts +11 -0
- package/dist/graph/root/graph-model.js +4 -0
- package/dist/graph/root/graph-root.d.ts +101 -14
- package/dist/graph/root/graph-root.js +140 -46
- package/dist/heatmap/root/heatmap-root.d.ts +37 -4
- package/dist/heatmap/root/heatmap-root.js +51 -16
- package/dist/icon-button/root/icon-button-root.d.ts +5 -0
- package/dist/icon-button/root/icon-button-root.js +1 -0
- package/dist/image/root/image-root.d.ts +11 -0
- package/dist/input/root/input-root.d.ts +5 -0
- package/dist/input/root/input-root.js +4 -1
- package/dist/kbd/root/kbd-root.js +1 -2
- package/dist/legend/root/legend-root.js +4 -17
- package/dist/lightbox/root/lightbox-root.d.ts +14 -4
- package/dist/lightbox/root/lightbox-root.js +25 -7
- package/dist/line-chart/root/line-chart-root.d.ts +5 -0
- package/dist/line-chart/root/line-chart-root.js +4 -2
- package/dist/list/item/list-item.d.ts +32 -0
- package/dist/list/item/list-item.js +34 -7
- package/dist/list/root/list-root.d.ts +87 -0
- package/dist/list/root/list-root.js +119 -23
- package/dist/listbox/reorder/index.d.ts +1 -0
- package/dist/listbox/reorder/index.js +4 -0
- package/dist/listbox/reorder/listbox-reorder.d.ts +83 -0
- package/dist/listbox/reorder/listbox-reorder.js +151 -0
- package/dist/listbox/root/listbox-root.d.ts +185 -33
- package/dist/listbox/root/listbox-root.js +166 -136
- package/dist/loader/root/loader-root.d.ts +5 -0
- package/dist/loader/root/loader-root.js +3 -1
- package/dist/map/area/map-area.d.ts +5 -0
- package/dist/map/area/map-area.js +3 -1
- package/dist/map/buildings/map-buildings.d.ts +5 -0
- package/dist/map/buildings/map-buildings.js +3 -1
- package/dist/map/contours/map-contours.d.ts +5 -0
- package/dist/map/contours/map-contours.js +3 -1
- package/dist/map/landcover/map-landcover.d.ts +5 -0
- package/dist/map/landcover/map-landcover.js +3 -1
- package/dist/map/marker/map-marker.d.ts +18 -2
- package/dist/map/marker/map-marker.js +13 -5
- package/dist/map/points/map-points.d.ts +5 -0
- package/dist/map/points/map-points.js +6 -4
- package/dist/map/position/map-position.d.ts +5 -0
- package/dist/map/position/map-position.js +3 -1
- package/dist/map/raster/map-raster.d.ts +5 -0
- package/dist/map/raster/map-raster.js +3 -1
- package/dist/map/root/map-root.d.ts +73 -16
- package/dist/map/root/map-root.js +122 -44
- package/dist/map/route/map-route.d.ts +5 -0
- package/dist/map/route/map-route.js +3 -1
- package/dist/map/terrain/map-terrain.d.ts +5 -0
- package/dist/map/terrain/map-terrain.js +3 -1
- package/dist/megamenu/root/megamenu-root.js +4 -11
- package/dist/menu/root/menu-root.d.ts +7 -2
- package/dist/menu/root/menu-root.js +3 -1
- package/dist/meter/root/meter-root.d.ts +16 -3
- package/dist/meter/root/meter-root.js +12 -5
- package/dist/navigation/root/navigation-root.d.ts +5 -0
- package/dist/navigation/root/navigation-root.js +7 -8
- package/dist/notifications/group/notification-group.d.ts +8 -1
- package/dist/notifications/group/notification-group.js +12 -6
- package/dist/notifications/notification/notification.d.ts +17 -1
- package/dist/notifications/notification/notification.js +6 -2
- package/dist/notifications/root/notifications-root.d.ts +49 -5
- package/dist/notifications/root/notifications-root.js +36 -8
- package/dist/number-input/root/number-input-root.d.ts +21 -8
- package/dist/number-input/root/number-input-root.js +26 -11
- package/dist/object-inspector/root/object-inspector-root.d.ts +56 -13
- package/dist/object-inspector/root/object-inspector-root.js +41 -30
- package/dist/outline/root/outline-root.d.ts +5 -0
- package/dist/outline/root/outline-root.js +3 -1
- package/dist/pagination/root/pagination-root.d.ts +7 -1
- package/dist/pagination/root/pagination-root.js +16 -7
- package/dist/pagination/size/pagination-size.d.ts +8 -3
- package/dist/pagination/size/pagination-size.js +5 -3
- package/dist/pagination/summary/pagination-summary.d.ts +8 -6
- package/dist/pagination/summary/pagination-summary.js +4 -9
- package/dist/pin-input/code.d.ts +23 -0
- package/dist/pin-input/code.js +21 -0
- package/dist/pin-input/root/pin-input-root.d.ts +9 -3
- package/dist/pin-input/root/pin-input-root.js +13 -23
- package/dist/popover/root/popover-root.d.ts +12 -2
- package/dist/popover/root/popover-root.js +10 -4
- package/dist/progress/root/progress-root.d.ts +7 -2
- package/dist/progress/root/progress-root.js +5 -2
- package/dist/qr-code/name.d.ts +3 -2
- package/dist/qr-code/name.js +2 -2
- package/dist/qr-code/root/qr-code-root.d.ts +26 -5
- package/dist/qr-code/root/qr-code-root.js +27 -6
- package/dist/radio/group/radio-group.d.ts +11 -0
- package/dist/radio/group/radio-group.js +8 -2
- package/dist/rating/root/rating-root.d.ts +12 -1
- package/dist/rating/root/rating-root.js +10 -3
- package/dist/scatter-chart/measures.d.ts +22 -0
- package/dist/scatter-chart/measures.js +11 -0
- package/dist/scatter-chart/root/scatter-chart-root.d.ts +22 -8
- package/dist/scatter-chart/root/scatter-chart-root.js +25 -23
- package/dist/select/root/select-root.d.ts +67 -8
- package/dist/select/root/select-root.js +45 -11
- package/dist/skip-link/root/skip-link-root.d.ts +5 -0
- package/dist/skip-link/root/skip-link-root.js +3 -1
- package/dist/slider/root/slider-root.d.ts +7 -2
- package/dist/slider/root/slider-root.js +11 -5
- package/dist/sparkline/readings.d.ts +15 -5
- package/dist/sparkline/readings.js +3 -3
- package/dist/sparkline/root/sparkline-root.d.ts +9 -4
- package/dist/sparkline/root/sparkline-root.js +9 -3
- package/dist/speed-dial/group/speed-dial-group.d.ts +48 -0
- package/dist/speed-dial/group/speed-dial-group.js +43 -0
- package/dist/speed-dial/index.d.ts +1 -0
- package/dist/speed-dial/index.js +1 -0
- package/dist/speed-dial/item/speed-dial-item.d.ts +26 -1
- package/dist/speed-dial/item/speed-dial-item.js +41 -3
- package/dist/speed-dial/long-press.d.ts +50 -0
- package/dist/speed-dial/long-press.js +48 -0
- package/dist/speed-dial/root/speed-dial-root.d.ts +85 -1
- package/dist/speed-dial/root/speed-dial-root.js +117 -5
- package/dist/splitter/root/splitter-root.d.ts +12 -3
- package/dist/splitter/root/splitter-root.js +22 -4
- package/dist/steps/root/steps-root.d.ts +9 -2
- package/dist/steps/root/steps-root.js +6 -3
- package/dist/steps/step/step.d.ts +12 -0
- package/dist/steps/step/step.js +11 -2
- package/dist/switch/root/switch-root.d.ts +11 -0
- package/dist/switch/root/switch-root.js +8 -2
- package/dist/table/cell/table-cell.d.ts +8 -1
- package/dist/table/cell/table-cell.js +6 -2
- package/dist/table/column/table-column.d.ts +11 -4
- package/dist/table/column/table-column.js +15 -10
- package/dist/table/grid-controller.d.ts +122 -0
- package/dist/table/grid-controller.js +299 -0
- package/dist/table/root/table-root.d.ts +154 -8
- package/dist/table/root/table-root.js +197 -38
- package/dist/table/row/table-row.d.ts +55 -1
- package/dist/table/row/table-row.js +60 -7
- package/dist/tabs/root/tabs-root.d.ts +5 -0
- package/dist/tabs/root/tabs-root.js +3 -1
- package/dist/tag/group/tag-group.d.ts +5 -0
- package/dist/tag/group/tag-group.js +8 -15
- package/dist/tag/root/tag-root.d.ts +14 -1
- package/dist/tag/root/tag-root.js +11 -8
- package/dist/textarea/root/textarea-root.d.ts +5 -0
- package/dist/textarea/root/textarea-root.js +3 -1
- package/dist/time-input/root/time-input-root.d.ts +14 -7
- package/dist/time-input/root/time-input-root.js +43 -32
- package/dist/time-picker/root/time-picker-root.d.ts +16 -7
- package/dist/time-picker/root/time-picker-root.js +28 -12
- package/dist/toast/item/toast-item.d.ts +13 -3
- package/dist/toast/item/toast-item.js +2 -0
- package/dist/toast/root/toast-root.d.ts +22 -2
- package/dist/toast/root/toast-root.js +24 -17
- package/dist/toggle/group/toggle-group.js +3 -5
- package/dist/toolbar/root/toolbar-root.d.ts +36 -0
- package/dist/toolbar/root/toolbar-root.js +43 -9
- package/dist/tooltip/root/tooltip-root.d.ts +27 -17
- package/dist/tooltip/root/tooltip-root.js +1 -2
- package/dist/tour/root/tour-root.d.ts +8 -2
- package/dist/tour/root/tour-root.js +4 -2
- package/dist/tour/stop/tour-stop.d.ts +5 -0
- package/dist/tour/stop/tour-stop.js +6 -1
- package/dist/tree/grip.d.ts +5 -0
- package/dist/tree/grip.js +1 -0
- package/dist/tree/item/tree-item.d.ts +24 -0
- package/dist/tree/item/tree-item.js +27 -5
- package/dist/tree/root/tree-root.d.ts +66 -1
- package/dist/tree/root/tree-root.js +77 -5
- package/dist/trend/root/trend-root.d.ts +20 -4
- package/dist/trend/root/trend-root.js +20 -5
- package/dist/video/root/video-root.d.ts +23 -3
- package/dist/video/root/video-root.js +56 -15
- package/dist/video-playlist/menu/video-playlist-menu.d.ts +5 -0
- package/dist/video-playlist/menu/video-playlist-menu.js +3 -1
- package/dist/video-playlist/root/video-playlist-root.d.ts +5 -0
- package/dist/video-playlist/root/video-playlist-root.js +3 -1
- package/dist/virtual-list/root/virtual-list-root.d.ts +19 -3
- package/dist/virtual-list/root/virtual-list-root.js +10 -19
- package/lint.json +1 -1
- package/package.json +7 -6
- package/types/jsx.d.ts +6005 -2114
- package/types/svelte.d.ts +1 -0
- package/types/vue.d.ts +1594 -676
- package/types/words.d.ts +3280 -0
- package/dist/kbd/keys.d.ts +0 -29
- package/dist/kbd/keys.js +0 -52
- package/dist/toast/hotkey.d.ts +0 -22
- package/dist/toast/hotkey.js +0 -23
- package/dist/tooltip/focus-target.d.ts +0 -6
- package/dist/tooltip/focus-target.js +0 -9
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type GraphSignalDetail, HelixElement, type
|
|
1
|
+
import { type GraphSignalDetail, HelixElement, type ViewportPanDetail, type ViewportZoomDetail } from '@fusion.dev/helix-core';
|
|
2
2
|
import { nothing, type PropertyValues, type TemplateResult } from 'lit';
|
|
3
3
|
import { type GraphLink, type GraphNode } from './graph-model.js';
|
|
4
4
|
declare const HelixHeadlessGraph_base: (new (...args: any[]) => import("@fusion.dev/helix-core").ViewportElement) & (new (...args: any[]) => import("@fusion.dev/helix-core").MixinControllerActiveInterface) & typeof HelixElement;
|
|
@@ -41,17 +41,24 @@ declare const HelixHeadlessGraph_base: (new (...args: any[]) => import("@fusion.
|
|
|
41
41
|
* @slot - The renderer's box, which the drawing is made in.
|
|
42
42
|
* @slot filter-icon - The icon in the search field. Defaults to a magnifying glass.
|
|
43
43
|
* @slot footer - Content below the graph.
|
|
44
|
+
* @slot fullscreen-icon - Replaces the glyph inside the fullscreen button.
|
|
44
45
|
* @slot header - Content above the graph.
|
|
46
|
+
* @slot pan-down-icon - Replaces the glyph inside the pan down button.
|
|
47
|
+
* @slot pan-end-icon - Replaces the glyph inside the button that pans toward the end of a line of text.
|
|
48
|
+
* @slot pan-start-icon - Replaces the glyph inside the button that pans toward the start of a line of text.
|
|
49
|
+
* @slot pan-up-icon - Replaces the glyph inside the pan up button.
|
|
50
|
+
* @slot zoom-in-icon - Replaces the glyph inside the zoom-in button.
|
|
51
|
+
* @slot zoom-out-icon - Replaces the glyph inside the zoom-out button.
|
|
45
52
|
*
|
|
46
53
|
* @event {HelixActivateEvent} helix-activate - A note was selected, in the list or in the drawing. The detail's `value` is its `id`.
|
|
47
54
|
* @event {HelixBeforeActivateEvent} helix-before-activate - A note is about to be selected. Cancelable: cancel it to keep the selection in your own state.
|
|
48
55
|
* @event {HelixGraphFilterEvent} helix-graph-filter - A group in the legend was pressed, to show or hide its notes. The detail's `hidden` is every group that would be hidden. Cancelable: cancel it to keep the groups as they were, or to set `hiddenGroups` yourself.
|
|
49
56
|
* @event {HelixGraphLayoutEvent} helix-graph-layout - A layout settled, with where it put each note, sent by `laidOut()`. Keep the positions and pass them back as each note's `x` and `y`, and `z` where a renderer draws in three dimensions.
|
|
50
|
-
* @event {HelixGraphPanEvent} helix-graph-pan - A pan button or arrow key was pressed. `connectGraph` moves the drawing
|
|
57
|
+
* @event {HelixGraphPanEvent} helix-graph-pan - A pan button or arrow key was pressed. `connectGraph` moves the drawing, then calls `moved()`.
|
|
51
58
|
* @event {HelixGraphPartChangeEvent} helix-graph-part-change - The notes, the links, the selection, the depth or the gestures changed. Used by `connectGraph`; pages do not need to listen for it.
|
|
52
59
|
* @event {HelixGraphReadyEvent} helix-graph-ready - The graph has been drawn whole, laid out and settled. Sent each time `drawn()` says it is drawn after it was not.
|
|
53
60
|
* @event {HelixGraphSignalEvent} helix-graph-signal - Something passed between two notes, sent by `signal()`. Used by `connectGraph`; pages do not need to listen for it.
|
|
54
|
-
* @event {HelixGraphZoomEvent} helix-graph-zoom - A zoom button or key was pressed. `connectGraph` zooms the drawing
|
|
61
|
+
* @event {HelixGraphZoomEvent} helix-graph-zoom - A zoom button or key was pressed. `connectGraph` zooms the drawing, then calls `moved()`.
|
|
55
62
|
*
|
|
56
63
|
* @csspart after - The room the notes after those drawn would take, so the list scrolls its whole length.
|
|
57
64
|
* @csspart before - The room the notes before those drawn would take.
|
|
@@ -70,7 +77,7 @@ declare const HelixHeadlessGraph_base: (new (...args: any[]) => import("@fusion.
|
|
|
70
77
|
* @csspart legend-item-hidden - A group in the legend whose notes are hidden.
|
|
71
78
|
* @csspart legend-swatch - The mark in a group's color, before its name.
|
|
72
79
|
* @csspart list - The list of notes, which draws only the rows in view.
|
|
73
|
-
* @csspart live - What screen readers hear when a search changes
|
|
80
|
+
* @csspart live - What screen readers hear: how many notes there are when a search or the legend changes it, and which way the drawing went after a key or a control moved it.
|
|
74
81
|
* @csspart note - One note in the list.
|
|
75
82
|
* @csspart note-cursor - The note the keyboard is on in the list.
|
|
76
83
|
* @csspart note-linked - A note linked to or from the selected one.
|
|
@@ -91,20 +98,48 @@ declare const HelixHeadlessGraph_base: (new (...args: any[]) => import("@fusion.
|
|
|
91
98
|
* @csspart zoom-in - The zoom in button.
|
|
92
99
|
* @csspart zoom-out - The zoom out button.
|
|
93
100
|
*
|
|
101
|
+
* @cssstate empty - The list holds no notes: the graph has none, or a search or the groups hid them all.
|
|
94
102
|
* @cssstate fullscreen - The graph fills the screen.
|
|
95
103
|
* @cssstate idle - The user has been still long enough for the header and footer to fade.
|
|
104
|
+
* @cssstate local - The drawing shows the selected note's local graph, with `depth`.
|
|
105
|
+
* @cssstate panel-open - A graph with `no-panel` has the search and the list open over the drawing.
|
|
96
106
|
* @cssstate ready - The graph has been drawn whole, after `helix-graph-ready`.
|
|
107
|
+
* @cssstate searching - The search field holds words, and the list holds only the notes they find.
|
|
108
|
+
* @cssstate selected - A note is selected, in the list or in the drawing.
|
|
97
109
|
* @cssstate sharing - The page keeps the plain wheel and one finger, with `gestures="cooperative"` or while a graph with `gestures="activate"` waits to be pressed.
|
|
98
110
|
* @cssstate using - A graph with `gestures="activate"` has been pressed and has the gestures.
|
|
99
111
|
*/
|
|
100
112
|
export declare class HelixHeadlessGraph extends HelixHeadlessGraph_base {
|
|
101
|
-
/**
|
|
113
|
+
/**
|
|
114
|
+
* The key this family's words are registered under, its styled tag:
|
|
115
|
+
* `registerWords('de', { 'helix-graph': { searchLabel: 'Notiz suchen' } })`.
|
|
116
|
+
*/
|
|
117
|
+
static words: string;
|
|
118
|
+
/**
|
|
119
|
+
* The hint shown when the graph, waiting to be pressed with
|
|
120
|
+
* `gestures="activate"`, is scrolled or swiped over.
|
|
121
|
+
*/
|
|
122
|
+
activateHintLabel: string;
|
|
123
|
+
/**
|
|
124
|
+
* The name of the group of controls, read by screen readers, which names
|
|
125
|
+
* what the controls drive rather than the mechanism.
|
|
126
|
+
*/
|
|
127
|
+
controlsLabel: string;
|
|
128
|
+
/**
|
|
129
|
+
* What the list says of how many notes it holds. `{count}` is the count,
|
|
130
|
+
* written in the locale, and each language writes the forms it has.
|
|
131
|
+
*/
|
|
102
132
|
countLabel: string;
|
|
103
133
|
/**
|
|
104
134
|
* How many links from the selected note to show, for its local graph. Unset
|
|
105
135
|
* shows every note. The list holds what the drawing shows.
|
|
106
136
|
*/
|
|
107
137
|
depth?: number;
|
|
138
|
+
/**
|
|
139
|
+
* The graph's name where `label` is empty and the host has no
|
|
140
|
+
* `aria-label`.
|
|
141
|
+
*/
|
|
142
|
+
fallbackLabel: string;
|
|
108
143
|
/** The groups turned off in the legend, by name, whose notes neither the drawing nor the list shows. A property, never an attribute. */
|
|
109
144
|
hiddenGroups: readonly string[];
|
|
110
145
|
/**
|
|
@@ -127,6 +162,14 @@ export declare class HelixHeadlessGraph extends HelixHeadlessGraph_base {
|
|
|
127
162
|
links: readonly GraphLink[];
|
|
128
163
|
/** How a note that links to the selected one is described, with `{note}`. */
|
|
129
164
|
linksToLabel: string;
|
|
165
|
+
/** What screen readers hear once the drawing has moved down, after `moved()`. */
|
|
166
|
+
movedDownLabel: string;
|
|
167
|
+
/** What screen readers hear once the drawing has moved left, after `moved()`. */
|
|
168
|
+
movedLeftLabel: string;
|
|
169
|
+
/** What screen readers hear once the drawing has moved right, after `moved()`. */
|
|
170
|
+
movedRightLabel: string;
|
|
171
|
+
/** What screen readers hear once the drawing has moved up, after `moved()`. */
|
|
172
|
+
movedUpLabel: string;
|
|
130
173
|
/** The notes. A property, never an attribute. */
|
|
131
174
|
nodes: readonly GraphNode[];
|
|
132
175
|
/**
|
|
@@ -141,6 +184,19 @@ export declare class HelixHeadlessGraph extends HelixHeadlessGraph_base {
|
|
|
141
184
|
searchLabel: string;
|
|
142
185
|
/** How the selected note is described in the list. */
|
|
143
186
|
selectedLabel: string;
|
|
187
|
+
/** The hint shown when one finger swipes over the graph with `gestures="cooperative"`. */
|
|
188
|
+
twoFingerHintLabel: string;
|
|
189
|
+
/** The line shown while the graph, with `gestures="activate"`, has the gestures. */
|
|
190
|
+
usingLabel: string;
|
|
191
|
+
/**
|
|
192
|
+
* The hint shown when the wheel scrolls past the graph with
|
|
193
|
+
* `gestures="cooperative"`. `{key}` is ⌘ on a Mac and Ctrl elsewhere.
|
|
194
|
+
*/
|
|
195
|
+
wheelHintLabel: string;
|
|
196
|
+
/** What screen readers hear once the drawing has zoomed in, after `moved()`. */
|
|
197
|
+
zoomedInLabel: string;
|
|
198
|
+
/** What screen readers hear once the drawing has zoomed out, after `moved()`. */
|
|
199
|
+
zoomedOutLabel: string;
|
|
144
200
|
/** What the search field holds. */
|
|
145
201
|
private query;
|
|
146
202
|
/** The row the keyboard is on, as an index into the list. */
|
|
@@ -163,8 +219,15 @@ export declare class HelixHeadlessGraph extends HelixHeadlessGraph_base {
|
|
|
163
219
|
private groups;
|
|
164
220
|
/** Whether the graph has been drawn whole, which `drawn()` says. */
|
|
165
221
|
private whole;
|
|
166
|
-
/**
|
|
222
|
+
/** What the live region says now. */
|
|
167
223
|
private said;
|
|
224
|
+
/**
|
|
225
|
+
* Which way a reader last asked the drawing to go, by a key or a control,
|
|
226
|
+
* until `moved()` says it went: a side, `in` or `out`.
|
|
227
|
+
*/
|
|
228
|
+
private asked;
|
|
229
|
+
/** Whether the next change of the list's rows is one a reader asked for by the legend, whose count is then said. */
|
|
230
|
+
private countAsked;
|
|
168
231
|
private readonly virtualize;
|
|
169
232
|
/**
|
|
170
233
|
* @internal The notes the drawing shows, which `connectGraph` reads: those
|
|
@@ -205,16 +268,34 @@ export declare class HelixHeadlessGraph extends HelixHeadlessGraph_base {
|
|
|
205
268
|
signal(from: string, to: string, options?: {
|
|
206
269
|
tone?: GraphSignalDetail['tone'];
|
|
207
270
|
}): void;
|
|
271
|
+
/**
|
|
272
|
+
* Says the drawing moved the way a reader asked, by a key or a control:
|
|
273
|
+
* the live region says "Moved right" or "Zoomed in" in the frame's words.
|
|
274
|
+
* Called by `connectGraph` once the renderer has moved; a page answering
|
|
275
|
+
* `helix-graph-pan` and `helix-graph-zoom` itself calls it once its view
|
|
276
|
+
* has moved.
|
|
277
|
+
*
|
|
278
|
+
* **Said once the drawing has moved, and only then.** The frame asks and
|
|
279
|
+
* the renderer moves, so a frame with nothing to answer it says nothing: a
|
|
280
|
+
* move said that never happened is worse than silence.
|
|
281
|
+
*/
|
|
282
|
+
moved(): void;
|
|
283
|
+
/**
|
|
284
|
+
* Puts words in the live region. **The same words twice differ by a space
|
|
285
|
+
* no reader hears**, since a region whose text does not change is not read
|
|
286
|
+
* again, and a second "Moved left" is news as much as the first.
|
|
287
|
+
*/
|
|
288
|
+
private say;
|
|
289
|
+
protected firstUpdated(changed: PropertyValues): void;
|
|
208
290
|
protected willUpdate(changed: PropertyValues): void;
|
|
209
291
|
protected updated(changed: PropertyValues): void;
|
|
292
|
+
/** The pan request, and the side it goes to, which `moved()` then says. */
|
|
210
293
|
protected panEvent(detail: ViewportPanDetail): Event;
|
|
294
|
+
/** The zoom request, and which way it goes, which `moved()` then says. */
|
|
211
295
|
protected zoomEvent(detail: ViewportZoomDetail): Event;
|
|
212
296
|
protected get restingControls(): string;
|
|
213
|
-
protected get restingControlsLabel(): string;
|
|
214
297
|
/** Which gestures the renderer takes, which `connectGraph` hears from here. */
|
|
215
298
|
protected gesturesChanged(): void;
|
|
216
|
-
/** What the graph says about its gestures where the page does not say it. */
|
|
217
|
-
protected get restingGestureLabels(): ViewportGestureLabels;
|
|
218
299
|
/** How many notes the list holds, in the page's numbers. */
|
|
219
300
|
private countText;
|
|
220
301
|
/** How a row stands to the selected note, in words, or nothing where it does not. */
|
|
@@ -255,14 +336,20 @@ export declare class HelixHeadlessGraph extends HelixHeadlessGraph_base {
|
|
|
255
336
|
* drawing: a reader moving through the list was moving the graph under it.
|
|
256
337
|
*/
|
|
257
338
|
private readonly handleListKeydown;
|
|
258
|
-
/** What has been typed toward a note's name
|
|
259
|
-
private typed;
|
|
339
|
+
/** What has been typed toward a note's name. */
|
|
340
|
+
private readonly typed;
|
|
260
341
|
/**
|
|
261
|
-
* Moves to the next note whose name starts with what was typed,
|
|
262
|
-
* listbox does
|
|
263
|
-
* and a repeated letter steps through the names that start with it.
|
|
342
|
+
* Moves to the next note whose name starts with what was typed, through
|
|
343
|
+
* core's `Typeahead`, as a listbox does: letters within half a second run
|
|
344
|
+
* together, and a repeated letter steps through the names that start with it.
|
|
264
345
|
*/
|
|
265
346
|
private typeahead;
|
|
347
|
+
/**
|
|
348
|
+
* How many rows Page Down and Page Up move: the rows that fit in the list's
|
|
349
|
+
* box, or in the window where the list does not scroll, less one, so the
|
|
350
|
+
* row at one edge lands at the other.
|
|
351
|
+
*/
|
|
352
|
+
private pageRows;
|
|
266
353
|
/**
|
|
267
354
|
* The search field's keys, which belong to the field and never pan the
|
|
268
355
|
* graph. Escape empties a search that has words in it, and passes through
|
|
@@ -4,18 +4,20 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
import {
|
|
7
|
+
import { auditName, customElement, formatWords, HelixElement, HelixGraphFilterEvent, HelixGraphLayoutEvent, HelixGraphPanEvent, HelixGraphPartChangeEvent, HelixGraphReadyEvent, HelixGraphSignalEvent, HelixGraphZoomEvent, MixinControllerActive, MixinViewport, scrollItemIntoView, scrollRoom, Typeahead, VirtualizeController, words, wordsLocale, } from '@fusion.dev/helix-core';
|
|
8
8
|
import { list, magnifyingGlass } from '@fusion.dev/helix-icons';
|
|
9
9
|
import { html, nothing } from 'lit';
|
|
10
10
|
import { property, state } from 'lit/decorators.js';
|
|
11
11
|
import { repeat } from 'lit/directives/repeat.js';
|
|
12
12
|
import { unsafeSVG } from 'lit/directives/unsafe-svg.js';
|
|
13
|
-
import { adjacencyOf, entriesOf, groupsOf, nameOf, sortedOf, within, withoutGroups, } from './graph-model.js';
|
|
14
|
-
const PAGE = 10;
|
|
13
|
+
import { adjacencyOf, cursorAfter, entriesOf, groupsOf, nameOf, sortedOf, within, withoutGroups, } from './graph-model.js';
|
|
15
14
|
let HelixHeadlessGraph = class HelixHeadlessGraph extends MixinViewport(MixinControllerActive(HelixElement)) {
|
|
16
15
|
constructor() {
|
|
17
16
|
super(...arguments);
|
|
18
|
-
this.
|
|
17
|
+
this.activateHintLabel = 'Press the graph to use it';
|
|
18
|
+
this.controlsLabel = 'Graph controls';
|
|
19
|
+
this.countLabel = '{count, plural, one {# note} other {# notes}}';
|
|
20
|
+
this.fallbackLabel = 'Graph';
|
|
19
21
|
this.hiddenGroups = [];
|
|
20
22
|
this.label = '';
|
|
21
23
|
this.legend = false;
|
|
@@ -24,11 +26,20 @@ let HelixHeadlessGraph = class HelixHeadlessGraph extends MixinViewport(MixinCon
|
|
|
24
26
|
this.linkedFromLabel = 'Linked from {note}';
|
|
25
27
|
this.links = [];
|
|
26
28
|
this.linksToLabel = 'Links to {note}';
|
|
29
|
+
this.movedDownLabel = 'Moved down';
|
|
30
|
+
this.movedLeftLabel = 'Moved left';
|
|
31
|
+
this.movedRightLabel = 'Moved right';
|
|
32
|
+
this.movedUpLabel = 'Moved up';
|
|
27
33
|
this.nodes = [];
|
|
28
34
|
this.noPanel = false;
|
|
29
35
|
this.notesLabel = 'Notes';
|
|
30
36
|
this.searchLabel = 'Find a note';
|
|
31
37
|
this.selectedLabel = 'Selected';
|
|
38
|
+
this.twoFingerHintLabel = 'Use two fingers to move the graph';
|
|
39
|
+
this.usingLabel = 'Using the graph. Press Escape to scroll the page again.';
|
|
40
|
+
this.wheelHintLabel = 'Use {key} and scroll to zoom the graph';
|
|
41
|
+
this.zoomedInLabel = 'Zoomed in';
|
|
42
|
+
this.zoomedOutLabel = 'Zoomed out';
|
|
32
43
|
this.query = '';
|
|
33
44
|
this.cursor = 0;
|
|
34
45
|
this.panelOpen = false;
|
|
@@ -38,6 +49,7 @@ let HelixHeadlessGraph = class HelixHeadlessGraph extends MixinViewport(MixinCon
|
|
|
38
49
|
this.groups = [];
|
|
39
50
|
this.whole = false;
|
|
40
51
|
this.said = '';
|
|
52
|
+
this.countAsked = false;
|
|
41
53
|
this.virtualize = new VirtualizeController(this, {
|
|
42
54
|
container: () => this.partNamed('list'),
|
|
43
55
|
count: () => this.entries.length,
|
|
@@ -53,8 +65,8 @@ let HelixHeadlessGraph = class HelixHeadlessGraph extends MixinViewport(MixinCon
|
|
|
53
65
|
ArrowUp: this.cursor - 1,
|
|
54
66
|
End: this.entries.length - 1,
|
|
55
67
|
Home: 0,
|
|
56
|
-
PageDown: this.cursor +
|
|
57
|
-
PageUp: this.cursor -
|
|
68
|
+
PageDown: this.cursor + this.pageRows(),
|
|
69
|
+
PageUp: this.cursor - this.pageRows(),
|
|
58
70
|
};
|
|
59
71
|
if (event.key in moves) {
|
|
60
72
|
event.preventDefault();
|
|
@@ -74,7 +86,7 @@ let HelixHeadlessGraph = class HelixHeadlessGraph extends MixinViewport(MixinCon
|
|
|
74
86
|
this.typeahead(event.key);
|
|
75
87
|
}
|
|
76
88
|
};
|
|
77
|
-
this.typed =
|
|
89
|
+
this.typed = new Typeahead();
|
|
78
90
|
this.handleSearchKeydown = (event) => {
|
|
79
91
|
if (event.key === 'ArrowDown') {
|
|
80
92
|
event.preventDefault();
|
|
@@ -100,6 +112,7 @@ let HelixHeadlessGraph = class HelixHeadlessGraph extends MixinViewport(MixinCon
|
|
|
100
112
|
this.query = event.target.value;
|
|
101
113
|
};
|
|
102
114
|
}
|
|
115
|
+
static { this.words = 'helix-graph'; }
|
|
103
116
|
get shown() {
|
|
104
117
|
return this.kept;
|
|
105
118
|
}
|
|
@@ -122,15 +135,40 @@ let HelixHeadlessGraph = class HelixHeadlessGraph extends MixinViewport(MixinCon
|
|
|
122
135
|
signal(from, to, options = {}) {
|
|
123
136
|
this.dispatchEvent(new HelixGraphSignalEvent({ from, to, tone: options.tone }));
|
|
124
137
|
}
|
|
138
|
+
moved() {
|
|
139
|
+
const asked = this.asked;
|
|
140
|
+
this.asked = undefined;
|
|
141
|
+
const words = {
|
|
142
|
+
down: this.movedDownLabel,
|
|
143
|
+
in: this.zoomedInLabel,
|
|
144
|
+
left: this.movedLeftLabel,
|
|
145
|
+
out: this.zoomedOutLabel,
|
|
146
|
+
right: this.movedRightLabel,
|
|
147
|
+
up: this.movedUpLabel,
|
|
148
|
+
};
|
|
149
|
+
if (asked !== undefined) {
|
|
150
|
+
this.say(words[asked] ?? '');
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
say(words) {
|
|
154
|
+
this.said = words !== '' && words === this.said ? `${words}\u00a0` : words;
|
|
155
|
+
}
|
|
156
|
+
firstUpdated(changed) {
|
|
157
|
+
super.firstUpdated(changed);
|
|
158
|
+
auditName(this, () => null, 'Give it a `label` that says what the notes are, such as "Research notes".', () => this.label !== '');
|
|
159
|
+
}
|
|
125
160
|
willUpdate(changed) {
|
|
126
161
|
super.willUpdate(changed);
|
|
127
162
|
this.toggleState('fullscreen', this.filled);
|
|
128
163
|
this.toggleState('idle', this.resting);
|
|
164
|
+
this.toggleState('panel-open', this.noPanel && this.panelOpen);
|
|
165
|
+
this.toggleState('searching', this.query.trim() !== '');
|
|
166
|
+
this.toggleState('selected', this.active !== '');
|
|
129
167
|
if (changed.has('links')) {
|
|
130
168
|
this.adjacency = adjacencyOf(this.links);
|
|
131
169
|
}
|
|
132
170
|
if (changed.has('nodes')) {
|
|
133
|
-
this.sorted = sortedOf(this.nodes, this
|
|
171
|
+
this.sorted = sortedOf(this.nodes, wordsLocale(this));
|
|
134
172
|
}
|
|
135
173
|
if (changed.has('nodes')) {
|
|
136
174
|
this.groups = groupsOf(this.nodes);
|
|
@@ -141,13 +179,29 @@ let HelixHeadlessGraph = class HelixHeadlessGraph extends MixinViewport(MixinCon
|
|
|
141
179
|
? within(this.adjacency, this.active, Math.max(0, this.depth))
|
|
142
180
|
: undefined;
|
|
143
181
|
this.kept = withoutGroups(this.nodes, local, this.hiddenGroups);
|
|
182
|
+
this.toggleState('local', local !== undefined);
|
|
144
183
|
}
|
|
145
184
|
if (['nodes', 'links', 'active', 'depth', 'hiddenGroups', 'query'].some((name) => changed.has(name))) {
|
|
185
|
+
const was = this.entries[this.cursor]?.node.id;
|
|
146
186
|
this.entries = entriesOf(this.sorted, this.adjacency, this.active, this.query, this.kept);
|
|
147
|
-
this.
|
|
187
|
+
this.toggleState('empty', this.entries.length === 0);
|
|
148
188
|
const list = this.partNamed('list');
|
|
149
|
-
if (
|
|
150
|
-
|
|
189
|
+
if (['active', 'depth', 'hiddenGroups', 'query'].some((name) => changed.has(name)) ||
|
|
190
|
+
!this.hasUpdated) {
|
|
191
|
+
this.cursor = 0;
|
|
192
|
+
if (list) {
|
|
193
|
+
list.scrollTop = 0;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
this.cursor = cursorAfter(this.entries, was, this.cursor);
|
|
198
|
+
if (list && this.shadowRoot?.activeElement === list) {
|
|
199
|
+
void this.updateComplete.then(() => this.revealCursor());
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
if ((changed.has('query') && changed.get('query') !== undefined) || this.countAsked) {
|
|
203
|
+
this.countAsked = false;
|
|
204
|
+
this.say(this.countText());
|
|
151
205
|
}
|
|
152
206
|
}
|
|
153
207
|
}
|
|
@@ -160,36 +214,23 @@ let HelixHeadlessGraph = class HelixHeadlessGraph extends MixinViewport(MixinCon
|
|
|
160
214
|
else if (changed.has('active') || changed.has('depth') || changed.has('hiddenGroups')) {
|
|
161
215
|
this.dispatchEvent(new HelixGraphPartChangeEvent({ kind: 'focus' }));
|
|
162
216
|
}
|
|
163
|
-
if (changed.has('query') && changed.get('query') !== undefined) {
|
|
164
|
-
this.said = this.countText();
|
|
165
|
-
}
|
|
166
217
|
}
|
|
167
218
|
panEvent(detail) {
|
|
219
|
+
this.asked = this.sideOf(detail.to);
|
|
168
220
|
return new HelixGraphPanEvent(detail);
|
|
169
221
|
}
|
|
170
222
|
zoomEvent(detail) {
|
|
223
|
+
this.asked = detail.by > 0 ? 'in' : detail.by < 0 ? 'out' : undefined;
|
|
171
224
|
return new HelixGraphZoomEvent(detail);
|
|
172
225
|
}
|
|
173
226
|
get restingControls() {
|
|
174
227
|
return 'zoom fullscreen';
|
|
175
228
|
}
|
|
176
|
-
get restingControlsLabel() {
|
|
177
|
-
return 'Graph controls';
|
|
178
|
-
}
|
|
179
229
|
gesturesChanged() {
|
|
180
230
|
this.dispatchEvent(new HelixGraphPartChangeEvent({ kind: 'gestures' }));
|
|
181
231
|
}
|
|
182
|
-
get restingGestureLabels() {
|
|
183
|
-
return {
|
|
184
|
-
activate: 'Press the graph to use it',
|
|
185
|
-
twoFinger: 'Use two fingers to move the graph',
|
|
186
|
-
using: 'Using the graph. Press Escape to scroll the page again.',
|
|
187
|
-
wheel: 'Use {key} and scroll to zoom the graph',
|
|
188
|
-
};
|
|
189
|
-
}
|
|
190
232
|
countText() {
|
|
191
|
-
|
|
192
|
-
return fillTemplate(this.countLabel, { count: formatNumbers(lang)(this.entries.length) });
|
|
233
|
+
return formatWords(this, 'countLabel', { count: this.entries.length });
|
|
193
234
|
}
|
|
194
235
|
relationText(entry) {
|
|
195
236
|
const selected = this.nodes.find((node) => node.id === this.active);
|
|
@@ -198,11 +239,11 @@ let HelixHeadlessGraph = class HelixHeadlessGraph extends MixinViewport(MixinCon
|
|
|
198
239
|
case 'selected':
|
|
199
240
|
return this.selectedLabel;
|
|
200
241
|
case 'to':
|
|
201
|
-
return
|
|
242
|
+
return formatWords(this, 'linkedFromLabel', { note });
|
|
202
243
|
case 'from':
|
|
203
|
-
return
|
|
244
|
+
return formatWords(this, 'linksToLabel', { note });
|
|
204
245
|
case 'both':
|
|
205
|
-
return
|
|
246
|
+
return formatWords(this, 'linkedBothLabel', { note });
|
|
206
247
|
default:
|
|
207
248
|
return '';
|
|
208
249
|
}
|
|
@@ -213,6 +254,7 @@ let HelixHeadlessGraph = class HelixHeadlessGraph extends MixinViewport(MixinCon
|
|
|
213
254
|
: [...this.hiddenGroups, name];
|
|
214
255
|
if (this.dispatchEvent(new HelixGraphFilterEvent({ hidden }))) {
|
|
215
256
|
this.hiddenGroups = hidden;
|
|
257
|
+
this.countAsked = true;
|
|
216
258
|
}
|
|
217
259
|
}
|
|
218
260
|
renderLegend() {
|
|
@@ -272,23 +314,16 @@ let HelixHeadlessGraph = class HelixHeadlessGraph extends MixinViewport(MixinCon
|
|
|
272
314
|
return this.entries.length > 0 && (cursor < first || cursor >= last) ? cursor : undefined;
|
|
273
315
|
}
|
|
274
316
|
typeahead(letter) {
|
|
275
|
-
const
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
const wanted = text.toLocaleLowerCase();
|
|
279
|
-
const repeated = [...wanted].every((one) => one === wanted[0]);
|
|
280
|
-
const prefix = repeated ? (wanted[0] ?? '') : wanted;
|
|
281
|
-
const entries = this.entries;
|
|
282
|
-
const start = repeated ? this.cursor + 1 : this.cursor;
|
|
283
|
-
for (let step = 0; step < entries.length; step += 1) {
|
|
284
|
-
const at = (start + step) % entries.length;
|
|
285
|
-
const entry = entries[at];
|
|
286
|
-
if (entry && nameOf(entry.node).toLocaleLowerCase().startsWith(prefix)) {
|
|
287
|
-
this.moveTo(at);
|
|
288
|
-
return;
|
|
289
|
-
}
|
|
317
|
+
const at = this.typed.match(letter, this.entries.map((entry) => nameOf(entry.node)), this.cursor);
|
|
318
|
+
if (at >= 0) {
|
|
319
|
+
this.moveTo(at);
|
|
290
320
|
}
|
|
291
321
|
}
|
|
322
|
+
pageRows() {
|
|
323
|
+
const room = scrollRoom(this.partNamed('list'));
|
|
324
|
+
const tall = this.virtualize.sizeOf(this.cursor) || 32;
|
|
325
|
+
return Math.max(1, Math.floor(room / tall) - 1);
|
|
326
|
+
}
|
|
292
327
|
togglePanel(open = !this.panelOpen) {
|
|
293
328
|
const inside = this.panelOpen && this.partNamed('panel')?.contains(this.shadowRoot?.activeElement ?? null);
|
|
294
329
|
this.panelOpen = open;
|
|
@@ -373,7 +408,7 @@ let HelixHeadlessGraph = class HelixHeadlessGraph extends MixinViewport(MixinCon
|
|
|
373
408
|
return html `<div
|
|
374
409
|
part="region"
|
|
375
410
|
role="group"
|
|
376
|
-
aria-label=${this.label || this.getAttribute?.('aria-label') ||
|
|
411
|
+
aria-label=${this.label || this.getAttribute?.('aria-label') || this.fallbackLabel}
|
|
377
412
|
tabindex="0"
|
|
378
413
|
@focusin=${this.idle.stir}
|
|
379
414
|
@keydown=${this.handleKeydown}
|
|
@@ -436,11 +471,24 @@ let HelixHeadlessGraph = class HelixHeadlessGraph extends MixinViewport(MixinCon
|
|
|
436
471
|
}
|
|
437
472
|
};
|
|
438
473
|
__decorate([
|
|
474
|
+
words,
|
|
475
|
+
property({ attribute: 'activate-hint-label' })
|
|
476
|
+
], HelixHeadlessGraph.prototype, "activateHintLabel", void 0);
|
|
477
|
+
__decorate([
|
|
478
|
+
words,
|
|
479
|
+
property({ attribute: 'controls-label' })
|
|
480
|
+
], HelixHeadlessGraph.prototype, "controlsLabel", void 0);
|
|
481
|
+
__decorate([
|
|
482
|
+
words,
|
|
439
483
|
property({ attribute: 'count-label' })
|
|
440
484
|
], HelixHeadlessGraph.prototype, "countLabel", void 0);
|
|
441
485
|
__decorate([
|
|
442
486
|
property({ type: Number })
|
|
443
487
|
], HelixHeadlessGraph.prototype, "depth", void 0);
|
|
488
|
+
__decorate([
|
|
489
|
+
words,
|
|
490
|
+
property({ attribute: 'fallback-label' })
|
|
491
|
+
], HelixHeadlessGraph.prototype, "fallbackLabel", void 0);
|
|
444
492
|
__decorate([
|
|
445
493
|
property({ attribute: false })
|
|
446
494
|
], HelixHeadlessGraph.prototype, "hiddenGroups", void 0);
|
|
@@ -451,20 +499,40 @@ __decorate([
|
|
|
451
499
|
property({ type: Boolean })
|
|
452
500
|
], HelixHeadlessGraph.prototype, "legend", void 0);
|
|
453
501
|
__decorate([
|
|
502
|
+
words,
|
|
454
503
|
property({ attribute: 'legend-label' })
|
|
455
504
|
], HelixHeadlessGraph.prototype, "legendLabel", void 0);
|
|
456
505
|
__decorate([
|
|
506
|
+
words,
|
|
457
507
|
property({ attribute: 'linked-both-label' })
|
|
458
508
|
], HelixHeadlessGraph.prototype, "linkedBothLabel", void 0);
|
|
459
509
|
__decorate([
|
|
510
|
+
words,
|
|
460
511
|
property({ attribute: 'linked-from-label' })
|
|
461
512
|
], HelixHeadlessGraph.prototype, "linkedFromLabel", void 0);
|
|
462
513
|
__decorate([
|
|
463
514
|
property({ attribute: false })
|
|
464
515
|
], HelixHeadlessGraph.prototype, "links", void 0);
|
|
465
516
|
__decorate([
|
|
517
|
+
words,
|
|
466
518
|
property({ attribute: 'links-to-label' })
|
|
467
519
|
], HelixHeadlessGraph.prototype, "linksToLabel", void 0);
|
|
520
|
+
__decorate([
|
|
521
|
+
words,
|
|
522
|
+
property({ attribute: 'moved-down-label' })
|
|
523
|
+
], HelixHeadlessGraph.prototype, "movedDownLabel", void 0);
|
|
524
|
+
__decorate([
|
|
525
|
+
words,
|
|
526
|
+
property({ attribute: 'moved-left-label' })
|
|
527
|
+
], HelixHeadlessGraph.prototype, "movedLeftLabel", void 0);
|
|
528
|
+
__decorate([
|
|
529
|
+
words,
|
|
530
|
+
property({ attribute: 'moved-right-label' })
|
|
531
|
+
], HelixHeadlessGraph.prototype, "movedRightLabel", void 0);
|
|
532
|
+
__decorate([
|
|
533
|
+
words,
|
|
534
|
+
property({ attribute: 'moved-up-label' })
|
|
535
|
+
], HelixHeadlessGraph.prototype, "movedUpLabel", void 0);
|
|
468
536
|
__decorate([
|
|
469
537
|
property({ attribute: false })
|
|
470
538
|
], HelixHeadlessGraph.prototype, "nodes", void 0);
|
|
@@ -472,14 +540,37 @@ __decorate([
|
|
|
472
540
|
property({ attribute: 'no-panel', reflect: true, type: Boolean })
|
|
473
541
|
], HelixHeadlessGraph.prototype, "noPanel", void 0);
|
|
474
542
|
__decorate([
|
|
543
|
+
words,
|
|
475
544
|
property({ attribute: 'notes-label' })
|
|
476
545
|
], HelixHeadlessGraph.prototype, "notesLabel", void 0);
|
|
477
546
|
__decorate([
|
|
547
|
+
words,
|
|
478
548
|
property({ attribute: 'search-label' })
|
|
479
549
|
], HelixHeadlessGraph.prototype, "searchLabel", void 0);
|
|
480
550
|
__decorate([
|
|
551
|
+
words,
|
|
481
552
|
property({ attribute: 'selected-label' })
|
|
482
553
|
], HelixHeadlessGraph.prototype, "selectedLabel", void 0);
|
|
554
|
+
__decorate([
|
|
555
|
+
words,
|
|
556
|
+
property({ attribute: 'two-finger-hint-label' })
|
|
557
|
+
], HelixHeadlessGraph.prototype, "twoFingerHintLabel", void 0);
|
|
558
|
+
__decorate([
|
|
559
|
+
words,
|
|
560
|
+
property({ attribute: 'using-label' })
|
|
561
|
+
], HelixHeadlessGraph.prototype, "usingLabel", void 0);
|
|
562
|
+
__decorate([
|
|
563
|
+
words,
|
|
564
|
+
property({ attribute: 'wheel-hint-label' })
|
|
565
|
+
], HelixHeadlessGraph.prototype, "wheelHintLabel", void 0);
|
|
566
|
+
__decorate([
|
|
567
|
+
words,
|
|
568
|
+
property({ attribute: 'zoomed-in-label' })
|
|
569
|
+
], HelixHeadlessGraph.prototype, "zoomedInLabel", void 0);
|
|
570
|
+
__decorate([
|
|
571
|
+
words,
|
|
572
|
+
property({ attribute: 'zoomed-out-label' })
|
|
573
|
+
], HelixHeadlessGraph.prototype, "zoomedOutLabel", void 0);
|
|
483
574
|
__decorate([
|
|
484
575
|
state()
|
|
485
576
|
], HelixHeadlessGraph.prototype, "query", void 0);
|
|
@@ -489,6 +580,9 @@ __decorate([
|
|
|
489
580
|
__decorate([
|
|
490
581
|
state()
|
|
491
582
|
], HelixHeadlessGraph.prototype, "panelOpen", void 0);
|
|
583
|
+
__decorate([
|
|
584
|
+
state()
|
|
585
|
+
], HelixHeadlessGraph.prototype, "said", void 0);
|
|
492
586
|
HelixHeadlessGraph = __decorate([
|
|
493
587
|
customElement('helix-headless-graph')
|
|
494
588
|
], HelixHeadlessGraph);
|
|
@@ -110,7 +110,13 @@ declare const HelixHeadlessHeatmap_base: typeof HelixElement & (new (...args: an
|
|
|
110
110
|
*/
|
|
111
111
|
export declare class HelixHeadlessHeatmap extends HelixHeadlessHeatmap_base {
|
|
112
112
|
/**
|
|
113
|
-
* The
|
|
113
|
+
* The key this family's words are registered under, its styled tag:
|
|
114
|
+
* `registerWords('de', { 'helix-heatmap': { emptyText: 'Keine Werte' } })`.
|
|
115
|
+
*/
|
|
116
|
+
static words: string;
|
|
117
|
+
/**
|
|
118
|
+
* The name the `overview` gives the busiest reading, `{busiestLabel}` in
|
|
119
|
+
* `overview-label`.
|
|
114
120
|
*/
|
|
115
121
|
busiestLabel: string;
|
|
116
122
|
/**
|
|
@@ -145,6 +151,13 @@ export declare class HelixHeadlessHeatmap extends HelixHeadlessHeatmap_base {
|
|
|
145
151
|
* container that cannot get narrow.
|
|
146
152
|
*/
|
|
147
153
|
minCell: number;
|
|
154
|
+
/**
|
|
155
|
+
* The `overview`'s sentence. `{busiestLabel}` and `{totalLabel}` are
|
|
156
|
+
* `busiest-label` and `total-label`, `{busiest}` the busiest reading's name
|
|
157
|
+
* and its reading as the table writes it, and `{total}` the total of the
|
|
158
|
+
* readings drawn, written in the locale.
|
|
159
|
+
*/
|
|
160
|
+
overviewLabel: string;
|
|
148
161
|
/**
|
|
149
162
|
* How many rows the strip has.
|
|
150
163
|
*
|
|
@@ -156,8 +169,16 @@ export declare class HelixHeadlessHeatmap extends HelixHeadlessHeatmap_base {
|
|
|
156
169
|
*/
|
|
157
170
|
rows: number;
|
|
158
171
|
/**
|
|
159
|
-
* What the
|
|
160
|
-
*
|
|
172
|
+
* What the readout adds for a selected cell, under `selection-mode`, after
|
|
173
|
+
* where the cell stands: "Day 1: 0 (1 of 14, selected)". Empty adds
|
|
174
|
+
* nothing.
|
|
175
|
+
*/
|
|
176
|
+
selectedLabel: string;
|
|
177
|
+
/**
|
|
178
|
+
* What the `selection` part says after the selection changes. `{count}` is
|
|
179
|
+
* how many cells are selected, written in the locale, and a language that
|
|
180
|
+
* needs plural forms writes them: `{count, plural, one {# wybrany} few
|
|
181
|
+
* {# wybrane} many {# wybranych} other {# wybranego}}`.
|
|
161
182
|
*/
|
|
162
183
|
selectionLabel: string;
|
|
163
184
|
/**
|
|
@@ -166,6 +187,11 @@ export declare class HelixHeadlessHeatmap extends HelixHeadlessHeatmap_base {
|
|
|
166
187
|
* Absent selects nothing, and a press or Space does what it did.
|
|
167
188
|
*/
|
|
168
189
|
selectionMode?: 'multiple' | 'single';
|
|
190
|
+
/**
|
|
191
|
+
* The strip's name where the chart has none: no `aria-label`, `label`, or
|
|
192
|
+
* table caption.
|
|
193
|
+
*/
|
|
194
|
+
stripLabel: string;
|
|
169
195
|
/**
|
|
170
196
|
* Lower bounds for the tone buckets, in the order the tones are given.
|
|
171
197
|
*
|
|
@@ -189,7 +215,8 @@ export declare class HelixHeadlessHeatmap extends HelixHeadlessHeatmap_base {
|
|
|
189
215
|
*/
|
|
190
216
|
tones: string;
|
|
191
217
|
/**
|
|
192
|
-
* The
|
|
218
|
+
* The name the `overview` gives the total of the readings drawn,
|
|
219
|
+
* `{totalLabel}` in `overview-label`.
|
|
193
220
|
*/
|
|
194
221
|
totalLabel: string;
|
|
195
222
|
/**
|
|
@@ -409,6 +436,12 @@ export declare class HelixHeadlessHeatmap extends HelixHeadlessHeatmap_base {
|
|
|
409
436
|
* pitch is `cell + gap` and both are measured.
|
|
410
437
|
*/
|
|
411
438
|
protected renderTooltip(): TemplateResult | typeof nothing;
|
|
439
|
+
/**
|
|
440
|
+
* The readout's cursor: the pointer, with the selected word after where a
|
|
441
|
+
* selected cell stands, so a reader moving through the strip hears which
|
|
442
|
+
* cells are in the selection and not only how many.
|
|
443
|
+
*/
|
|
444
|
+
private reading;
|
|
412
445
|
/**
|
|
413
446
|
* Which drawn cell the pointer is over, or -1.
|
|
414
447
|
*
|