@fusion.dev/helix-core 0.144.0 → 0.145.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 +990 -96
- package/dist/controllers/aria-forward-controller/aria-forward-controller.js +1 -0
- package/dist/controllers/countdown-controller/countdown-controller.d.ts +55 -0
- package/dist/controllers/countdown-controller/countdown-controller.js +57 -0
- package/dist/controllers/keyboard-navigation-controller/keyboard-navigation-controller.d.ts +11 -2
- package/dist/controllers/keyboard-navigation-controller/keyboard-navigation-controller.js +4 -1
- package/dist/controllers/virtualize-controller/virtualize-controller.d.ts +68 -35
- package/dist/controllers/virtualize-controller/virtualize-controller.js +77 -10
- package/dist/events/events.d.ts +186 -0
- package/dist/events/events.js +138 -0
- package/dist/helix-element/helix-element.js +14 -1
- package/dist/helix-element/react-bridge.d.ts +9 -4
- package/dist/helix-element/react-bridge.js +14 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.js +3 -1
- package/dist/utils/draw-icon/draw-icon.d.ts +7 -6
- package/dist/utils/range-add/range-add.d.ts +19 -0
- package/dist/utils/range-add/range-add.js +5 -0
- package/dist/utils/reflect-elements/reflect-elements.d.ts +3 -3
- package/dist/utils/report-runtime/report-runtime.d.ts +3 -1
- package/dist/utils/write-time/write-time.d.ts +4 -4
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +4 -4
package/dist/events/events.d.ts
CHANGED
|
@@ -827,6 +827,17 @@ export declare class HelixBeforeSplitEvent extends CustomEvent<ChangeDetail> {
|
|
|
827
827
|
static readonly eventName = "helix-before-split";
|
|
828
828
|
constructor(detail: ChangeDetail);
|
|
829
829
|
}
|
|
830
|
+
/**
|
|
831
|
+
* The divider between a sandbox's panes settled somewhere new.
|
|
832
|
+
*
|
|
833
|
+
* The notification half of `helix-before-split`, sent once `split` has moved,
|
|
834
|
+
* with the lead pane's new share. Not cancelable: the decision was the
|
|
835
|
+
* request's.
|
|
836
|
+
*/
|
|
837
|
+
export declare class HelixSplitEvent extends CustomEvent<ChangeDetail> {
|
|
838
|
+
static readonly eventName = "helix-split";
|
|
839
|
+
constructor(detail: ChangeDetail);
|
|
840
|
+
}
|
|
830
841
|
/**
|
|
831
842
|
* A sandbox's panel is about to change height, and can be refused.
|
|
832
843
|
*
|
|
@@ -839,6 +850,17 @@ export declare class HelixBeforePanelResizeEvent extends CustomEvent<ChangeDetai
|
|
|
839
850
|
static readonly eventName = "helix-before-panel-resize";
|
|
840
851
|
constructor(detail: ChangeDetail);
|
|
841
852
|
}
|
|
853
|
+
/**
|
|
854
|
+
* A sandbox's panel settled at a new height.
|
|
855
|
+
*
|
|
856
|
+
* The notification half of `helix-before-panel-resize`, sent once `panelSize`
|
|
857
|
+
* has moved, with the height in pixels. Not cancelable: the decision was the
|
|
858
|
+
* request's.
|
|
859
|
+
*/
|
|
860
|
+
export declare class HelixPanelResizeEvent extends CustomEvent<ChangeDetail> {
|
|
861
|
+
static readonly eventName = "helix-panel-resize";
|
|
862
|
+
constructor(detail: ChangeDetail);
|
|
863
|
+
}
|
|
842
864
|
/** A pane is about to collapse or reopen, and can be refused. */
|
|
843
865
|
export declare class HelixBeforeCollapseEvent extends CustomEvent<ChangeDetail> {
|
|
844
866
|
static readonly eventName = "helix-before-collapse";
|
|
@@ -860,6 +882,17 @@ export declare class HelixBeforeEditEvent extends CustomEvent<ChangeDetail> {
|
|
|
860
882
|
static readonly eventName = "helix-before-edit";
|
|
861
883
|
constructor(detail: ChangeDetail);
|
|
862
884
|
}
|
|
885
|
+
/**
|
|
886
|
+
* Source was edited.
|
|
887
|
+
*
|
|
888
|
+
* The notification half of `helix-before-edit`, sent once the pane holds the
|
|
889
|
+
* new source, with that source. Not cancelable: the decision was the
|
|
890
|
+
* request's.
|
|
891
|
+
*/
|
|
892
|
+
export declare class HelixEditEvent extends CustomEvent<ChangeDetail> {
|
|
893
|
+
static readonly eventName = "helix-edit";
|
|
894
|
+
constructor(detail: ChangeDetail);
|
|
895
|
+
}
|
|
863
896
|
/**
|
|
864
897
|
* A value is about to change, and the change can be refused.
|
|
865
898
|
*
|
|
@@ -942,6 +975,145 @@ export declare class HelixCreateEvent extends CustomEvent<CreateDetail> {
|
|
|
942
975
|
static readonly eventName = "helix-create";
|
|
943
976
|
constructor(detail: CreateDetail);
|
|
944
977
|
}
|
|
978
|
+
/** Detail carried by `helix-aura-fallback`. */
|
|
979
|
+
export interface AuraFallbackDetail {
|
|
980
|
+
/**
|
|
981
|
+
* Why the gradient shows: `software` for a renderer that draws on the CPU,
|
|
982
|
+
* `unavailable` for no WebGL or a shader the browser refused, and `lost` for
|
|
983
|
+
* a context the browser took back, on a GPU reset or past its limit of about
|
|
984
|
+
* sixteen.
|
|
985
|
+
*/
|
|
986
|
+
reason: 'lost' | 'software' | 'unavailable';
|
|
987
|
+
}
|
|
988
|
+
/**
|
|
989
|
+
* An aura stopped drawing its shader and shows its gradient, and says why.
|
|
990
|
+
*
|
|
991
|
+
* Sent each time it falls back, from the aura, which then matches
|
|
992
|
+
* `:state(fallback)` until it draws again. Not cancelable: there is nothing
|
|
993
|
+
* left to refuse.
|
|
994
|
+
*/
|
|
995
|
+
export declare class HelixAuraFallbackEvent extends CustomEvent<AuraFallbackDetail> {
|
|
996
|
+
static readonly eventName = "helix-aura-fallback";
|
|
997
|
+
constructor(detail: AuraFallbackDetail);
|
|
998
|
+
}
|
|
999
|
+
/**
|
|
1000
|
+
* A reader cleared the value: an input's clear button emptied the field, or a
|
|
1001
|
+
* clearable rating went back to unrated.
|
|
1002
|
+
*
|
|
1003
|
+
* Sent after the value is cleared, and after the `input` and `change` the
|
|
1004
|
+
* clear sends. Carries nothing, because the value is the cleared one.
|
|
1005
|
+
*/
|
|
1006
|
+
export declare class HelixClearEvent extends Event {
|
|
1007
|
+
static readonly eventName = "helix-clear";
|
|
1008
|
+
constructor();
|
|
1009
|
+
}
|
|
1010
|
+
/**
|
|
1011
|
+
* A press put nothing on the clipboard: the browser did not allow the write,
|
|
1012
|
+
* such as on a page without the clipboard permission, or there was nothing to
|
|
1013
|
+
* copy.
|
|
1014
|
+
*/
|
|
1015
|
+
export declare class HelixCopyErrorEvent extends Event {
|
|
1016
|
+
static readonly eventName = "helix-copy-error";
|
|
1017
|
+
constructor();
|
|
1018
|
+
}
|
|
1019
|
+
/**
|
|
1020
|
+
* A reader asked for more items: a feed's or a table's `load-more` button, or
|
|
1021
|
+
* a list scrolled near its end. Append them, and set `loading` while they are
|
|
1022
|
+
* on their way.
|
|
1023
|
+
*
|
|
1024
|
+
* Carries nothing, because what comes next is the consumer's to know. Not
|
|
1025
|
+
* cancelable: nothing is loaded until the consumer loads it.
|
|
1026
|
+
*/
|
|
1027
|
+
export declare class HelixLoadMoreEvent extends Event {
|
|
1028
|
+
static readonly eventName = "helix-load-more";
|
|
1029
|
+
constructor();
|
|
1030
|
+
}
|
|
1031
|
+
/**
|
|
1032
|
+
* A lazy branch opened and asks for its children: a tree item with `lazy`.
|
|
1033
|
+
* Sent from the item, so `target` is the branch to fill.
|
|
1034
|
+
*
|
|
1035
|
+
* Carries nothing, because the children are the consumer's to fetch. Not
|
|
1036
|
+
* cancelable: the branch is already open, and says it is busy until children
|
|
1037
|
+
* arrive.
|
|
1038
|
+
*/
|
|
1039
|
+
export declare class HelixLoadEvent extends Event {
|
|
1040
|
+
static readonly eventName = "helix-load";
|
|
1041
|
+
constructor();
|
|
1042
|
+
}
|
|
1043
|
+
/** Detail carried by `helix-range-change`. */
|
|
1044
|
+
export interface RangeDetail {
|
|
1045
|
+
/** The index of the first item on screen. */
|
|
1046
|
+
first: number;
|
|
1047
|
+
/** One past the index of the last item on screen. */
|
|
1048
|
+
last: number;
|
|
1049
|
+
}
|
|
1050
|
+
/**
|
|
1051
|
+
* The items on screen changed: a virtual list was scrolled or resized, or its
|
|
1052
|
+
* items changed. Carries the new range, which the list's `range` also holds.
|
|
1053
|
+
* Not cancelable: the list has already moved.
|
|
1054
|
+
*/
|
|
1055
|
+
export declare class HelixRangeChangeEvent extends CustomEvent<RangeDetail> {
|
|
1056
|
+
static readonly eventName = "helix-range-change";
|
|
1057
|
+
constructor(detail: RangeDetail);
|
|
1058
|
+
}
|
|
1059
|
+
/**
|
|
1060
|
+
* Rows opened or closed in place: a data table's tree of rows. Carries every
|
|
1061
|
+
* open row's key, separated by commas, which the table's `expanded` also
|
|
1062
|
+
* holds. Not cancelable: the rows have already moved.
|
|
1063
|
+
*/
|
|
1064
|
+
export declare class HelixExpandEvent extends CustomEvent<ChangeDetail> {
|
|
1065
|
+
static readonly eventName = "helix-expand";
|
|
1066
|
+
constructor(detail: ChangeDetail);
|
|
1067
|
+
}
|
|
1068
|
+
/**
|
|
1069
|
+
* A sequence played to its last entry and stopped there: a video playlist
|
|
1070
|
+
* with no `repeat`. Carries nothing, because the playlist still holds the last
|
|
1071
|
+
* entry. Not cancelable: playback has already ended.
|
|
1072
|
+
*/
|
|
1073
|
+
export declare class HelixEndEvent extends Event {
|
|
1074
|
+
static readonly eventName = "helix-end";
|
|
1075
|
+
constructor();
|
|
1076
|
+
}
|
|
1077
|
+
/** Detail carried by `helix-typing`. */
|
|
1078
|
+
export interface TypingDetail {
|
|
1079
|
+
/** Whether the user is writing now, as a boolean and not a word that reads like one. */
|
|
1080
|
+
typing: boolean;
|
|
1081
|
+
}
|
|
1082
|
+
/**
|
|
1083
|
+
* The user started or stopped writing: a chat composer, for a typing
|
|
1084
|
+
* indicator on the other side. Carries which, as the composer's `typing` does.
|
|
1085
|
+
* Not cancelable: it reports what the user did.
|
|
1086
|
+
*/
|
|
1087
|
+
export declare class HelixTypingEvent extends CustomEvent<TypingDetail> {
|
|
1088
|
+
static readonly eventName = "helix-typing";
|
|
1089
|
+
constructor(detail: TypingDetail);
|
|
1090
|
+
}
|
|
1091
|
+
/**
|
|
1092
|
+
* A reader acted on a row: Enter on a list row, or a press in a list that
|
|
1093
|
+
* selects nothing. Sent from the row, so `target` is the row acted on.
|
|
1094
|
+
*
|
|
1095
|
+
* Carries nothing, because the row is the whole of the answer. Not cancelable:
|
|
1096
|
+
* a row with a link follows it and sends nothing, so there is no default left
|
|
1097
|
+
* to refuse.
|
|
1098
|
+
*/
|
|
1099
|
+
export declare class HelixActionEvent extends Event {
|
|
1100
|
+
static readonly eventName = "helix-action";
|
|
1101
|
+
constructor();
|
|
1102
|
+
}
|
|
1103
|
+
/**
|
|
1104
|
+
* A checked state changed after `helix-before-toggle` let it: a map layer
|
|
1105
|
+
* shown or hidden from the layers menu. Sent from what changed, with the state
|
|
1106
|
+
* it now holds.
|
|
1107
|
+
*
|
|
1108
|
+
* **Not the native `toggle`.** That one is a `ToggleEvent` saying a popover or
|
|
1109
|
+
* a `<details>` opened or closed, with `newState` of `open` or `closed`, and a
|
|
1110
|
+
* layer shown on a map is neither: it is the request's own verb without
|
|
1111
|
+
* `before`, carrying the same `checked` the request did.
|
|
1112
|
+
*/
|
|
1113
|
+
export declare class HelixToggleEvent extends CustomEvent<ToggleDetail> {
|
|
1114
|
+
static readonly eventName = "helix-toggle";
|
|
1115
|
+
constructor(detail: ToggleDetail);
|
|
1116
|
+
}
|
|
945
1117
|
/** Detail carried by `helix-copy`. */
|
|
946
1118
|
export interface CopyDetail {
|
|
947
1119
|
/** What was put on the clipboard. */
|
|
@@ -1319,7 +1491,9 @@ export declare class HelixHistoryEvent extends CustomEvent<Record<string, never>
|
|
|
1319
1491
|
* forgotten.
|
|
1320
1492
|
*/
|
|
1321
1493
|
declare const registry: {
|
|
1494
|
+
readonly HelixActionEvent: typeof HelixActionEvent;
|
|
1322
1495
|
readonly HelixActivateEvent: typeof HelixActivateEvent;
|
|
1496
|
+
readonly HelixAuraFallbackEvent: typeof HelixAuraFallbackEvent;
|
|
1323
1497
|
readonly HelixBeforeActivateEvent: typeof HelixBeforeActivateEvent;
|
|
1324
1498
|
readonly HelixBeforeChangeEvent: typeof HelixBeforeChangeEvent;
|
|
1325
1499
|
readonly HelixBeforeCloseEvent: typeof HelixBeforeCloseEvent;
|
|
@@ -1339,13 +1513,18 @@ declare const registry: {
|
|
|
1339
1513
|
readonly HelixCanvasViewEvent: typeof HelixCanvasViewEvent;
|
|
1340
1514
|
readonly HelixCanvasZoomEvent: typeof HelixCanvasZoomEvent;
|
|
1341
1515
|
readonly HelixCaretEvent: typeof HelixCaretEvent;
|
|
1516
|
+
readonly HelixClearEvent: typeof HelixClearEvent;
|
|
1342
1517
|
readonly HelixCollapseEvent: typeof HelixCollapseEvent;
|
|
1343
1518
|
readonly HelixCompleteEvent: typeof HelixCompleteEvent;
|
|
1344
1519
|
readonly HelixConnectEvent: typeof HelixConnectEvent;
|
|
1345
1520
|
readonly HelixConsoleEvent: typeof HelixConsoleEvent;
|
|
1521
|
+
readonly HelixCopyErrorEvent: typeof HelixCopyErrorEvent;
|
|
1346
1522
|
readonly HelixCopyEvent: typeof HelixCopyEvent;
|
|
1347
1523
|
readonly HelixCreateEvent: typeof HelixCreateEvent;
|
|
1348
1524
|
readonly HelixDismissEvent: typeof HelixDismissEvent;
|
|
1525
|
+
readonly HelixEditEvent: typeof HelixEditEvent;
|
|
1526
|
+
readonly HelixEndEvent: typeof HelixEndEvent;
|
|
1527
|
+
readonly HelixExpandEvent: typeof HelixExpandEvent;
|
|
1349
1528
|
readonly HelixFacetEvent: typeof HelixFacetEvent;
|
|
1350
1529
|
readonly HelixFilterEvent: typeof HelixFilterEvent;
|
|
1351
1530
|
readonly HelixFilteredEvent: typeof HelixFilteredEvent;
|
|
@@ -1357,6 +1536,8 @@ declare const registry: {
|
|
|
1357
1536
|
readonly HelixGraphSignalEvent: typeof HelixGraphSignalEvent;
|
|
1358
1537
|
readonly HelixGraphZoomEvent: typeof HelixGraphZoomEvent;
|
|
1359
1538
|
readonly HelixHistoryEvent: typeof HelixHistoryEvent;
|
|
1539
|
+
readonly HelixLoadEvent: typeof HelixLoadEvent;
|
|
1540
|
+
readonly HelixLoadMoreEvent: typeof HelixLoadMoreEvent;
|
|
1360
1541
|
readonly HelixMapClusterEvent: typeof HelixMapClusterEvent;
|
|
1361
1542
|
readonly HelixMapPanEvent: typeof HelixMapPanEvent;
|
|
1362
1543
|
readonly HelixMapPartChangeEvent: typeof HelixMapPartChangeEvent;
|
|
@@ -1367,8 +1548,10 @@ declare const registry: {
|
|
|
1367
1548
|
readonly HelixMoveEvent: typeof HelixMoveEvent;
|
|
1368
1549
|
readonly HelixNavigateEvent: typeof HelixNavigateEvent;
|
|
1369
1550
|
readonly HelixNextEvent: typeof HelixNextEvent;
|
|
1551
|
+
readonly HelixPanelResizeEvent: typeof HelixPanelResizeEvent;
|
|
1370
1552
|
readonly HelixPinEvent: typeof HelixPinEvent;
|
|
1371
1553
|
readonly HelixPreviousEvent: typeof HelixPreviousEvent;
|
|
1554
|
+
readonly HelixRangeChangeEvent: typeof HelixRangeChangeEvent;
|
|
1372
1555
|
readonly HelixReadEvent: typeof HelixReadEvent;
|
|
1373
1556
|
readonly HelixReconnectEvent: typeof HelixReconnectEvent;
|
|
1374
1557
|
readonly HelixRejectEvent: typeof HelixRejectEvent;
|
|
@@ -1387,7 +1570,10 @@ declare const registry: {
|
|
|
1387
1570
|
readonly HelixShortcutEvent: typeof HelixShortcutEvent;
|
|
1388
1571
|
readonly HelixSortEvent: typeof HelixSortEvent;
|
|
1389
1572
|
readonly HelixSortedEvent: typeof HelixSortedEvent;
|
|
1573
|
+
readonly HelixSplitEvent: typeof HelixSplitEvent;
|
|
1574
|
+
readonly HelixToggleEvent: typeof HelixToggleEvent;
|
|
1390
1575
|
readonly HelixTourAskEvent: typeof HelixTourAskEvent;
|
|
1576
|
+
readonly HelixTypingEvent: typeof HelixTypingEvent;
|
|
1391
1577
|
};
|
|
1392
1578
|
/**
|
|
1393
1579
|
* Every name this library dispatches.
|
package/dist/events/events.js
CHANGED
|
@@ -440,6 +440,17 @@ export class HelixBeforeSplitEvent extends CustomEvent {
|
|
|
440
440
|
});
|
|
441
441
|
}
|
|
442
442
|
}
|
|
443
|
+
export class HelixSplitEvent extends CustomEvent {
|
|
444
|
+
static { this.eventName = 'helix-split'; }
|
|
445
|
+
constructor(detail) {
|
|
446
|
+
super(HelixSplitEvent.eventName, {
|
|
447
|
+
bubbles: true,
|
|
448
|
+
cancelable: false,
|
|
449
|
+
composed: true,
|
|
450
|
+
detail,
|
|
451
|
+
});
|
|
452
|
+
}
|
|
453
|
+
}
|
|
443
454
|
export class HelixBeforePanelResizeEvent extends CustomEvent {
|
|
444
455
|
static { this.eventName = 'helix-before-panel-resize'; }
|
|
445
456
|
constructor(detail) {
|
|
@@ -451,6 +462,17 @@ export class HelixBeforePanelResizeEvent extends CustomEvent {
|
|
|
451
462
|
});
|
|
452
463
|
}
|
|
453
464
|
}
|
|
465
|
+
export class HelixPanelResizeEvent extends CustomEvent {
|
|
466
|
+
static { this.eventName = 'helix-panel-resize'; }
|
|
467
|
+
constructor(detail) {
|
|
468
|
+
super(HelixPanelResizeEvent.eventName, {
|
|
469
|
+
bubbles: true,
|
|
470
|
+
cancelable: false,
|
|
471
|
+
composed: true,
|
|
472
|
+
detail,
|
|
473
|
+
});
|
|
474
|
+
}
|
|
475
|
+
}
|
|
454
476
|
export class HelixBeforeCollapseEvent extends CustomEvent {
|
|
455
477
|
static { this.eventName = 'helix-before-collapse'; }
|
|
456
478
|
constructor(detail) {
|
|
@@ -484,6 +506,17 @@ export class HelixBeforeEditEvent extends CustomEvent {
|
|
|
484
506
|
});
|
|
485
507
|
}
|
|
486
508
|
}
|
|
509
|
+
export class HelixEditEvent extends CustomEvent {
|
|
510
|
+
static { this.eventName = 'helix-edit'; }
|
|
511
|
+
constructor(detail) {
|
|
512
|
+
super(HelixEditEvent.eventName, {
|
|
513
|
+
bubbles: true,
|
|
514
|
+
cancelable: false,
|
|
515
|
+
composed: true,
|
|
516
|
+
detail,
|
|
517
|
+
});
|
|
518
|
+
}
|
|
519
|
+
}
|
|
487
520
|
export class HelixBeforeChangeEvent extends CustomEvent {
|
|
488
521
|
static { this.eventName = 'helix-before-change'; }
|
|
489
522
|
constructor(detail) {
|
|
@@ -517,6 +550,97 @@ export class HelixCreateEvent extends CustomEvent {
|
|
|
517
550
|
});
|
|
518
551
|
}
|
|
519
552
|
}
|
|
553
|
+
export class HelixAuraFallbackEvent extends CustomEvent {
|
|
554
|
+
static { this.eventName = 'helix-aura-fallback'; }
|
|
555
|
+
constructor(detail) {
|
|
556
|
+
super(HelixAuraFallbackEvent.eventName, {
|
|
557
|
+
bubbles: true,
|
|
558
|
+
cancelable: false,
|
|
559
|
+
composed: true,
|
|
560
|
+
detail,
|
|
561
|
+
});
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
export class HelixClearEvent extends Event {
|
|
565
|
+
static { this.eventName = 'helix-clear'; }
|
|
566
|
+
constructor() {
|
|
567
|
+
super(HelixClearEvent.eventName, { bubbles: true, cancelable: false, composed: true });
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
export class HelixCopyErrorEvent extends Event {
|
|
571
|
+
static { this.eventName = 'helix-copy-error'; }
|
|
572
|
+
constructor() {
|
|
573
|
+
super(HelixCopyErrorEvent.eventName, { bubbles: true, cancelable: false, composed: true });
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
export class HelixLoadMoreEvent extends Event {
|
|
577
|
+
static { this.eventName = 'helix-load-more'; }
|
|
578
|
+
constructor() {
|
|
579
|
+
super(HelixLoadMoreEvent.eventName, { bubbles: true, cancelable: false, composed: true });
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
export class HelixLoadEvent extends Event {
|
|
583
|
+
static { this.eventName = 'helix-load'; }
|
|
584
|
+
constructor() {
|
|
585
|
+
super(HelixLoadEvent.eventName, { bubbles: true, cancelable: false, composed: true });
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
export class HelixRangeChangeEvent extends CustomEvent {
|
|
589
|
+
static { this.eventName = 'helix-range-change'; }
|
|
590
|
+
constructor(detail) {
|
|
591
|
+
super(HelixRangeChangeEvent.eventName, {
|
|
592
|
+
bubbles: true,
|
|
593
|
+
cancelable: false,
|
|
594
|
+
composed: true,
|
|
595
|
+
detail,
|
|
596
|
+
});
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
export class HelixExpandEvent extends CustomEvent {
|
|
600
|
+
static { this.eventName = 'helix-expand'; }
|
|
601
|
+
constructor(detail) {
|
|
602
|
+
super(HelixExpandEvent.eventName, {
|
|
603
|
+
bubbles: true,
|
|
604
|
+
cancelable: false,
|
|
605
|
+
composed: true,
|
|
606
|
+
detail,
|
|
607
|
+
});
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
export class HelixEndEvent extends Event {
|
|
611
|
+
static { this.eventName = 'helix-end'; }
|
|
612
|
+
constructor() {
|
|
613
|
+
super(HelixEndEvent.eventName, { bubbles: true, cancelable: false, composed: true });
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
export class HelixTypingEvent extends CustomEvent {
|
|
617
|
+
static { this.eventName = 'helix-typing'; }
|
|
618
|
+
constructor(detail) {
|
|
619
|
+
super(HelixTypingEvent.eventName, {
|
|
620
|
+
bubbles: true,
|
|
621
|
+
cancelable: false,
|
|
622
|
+
composed: true,
|
|
623
|
+
detail,
|
|
624
|
+
});
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
export class HelixActionEvent extends Event {
|
|
628
|
+
static { this.eventName = 'helix-action'; }
|
|
629
|
+
constructor() {
|
|
630
|
+
super(HelixActionEvent.eventName, { bubbles: true, cancelable: false, composed: true });
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
export class HelixToggleEvent extends CustomEvent {
|
|
634
|
+
static { this.eventName = 'helix-toggle'; }
|
|
635
|
+
constructor(detail) {
|
|
636
|
+
super(HelixToggleEvent.eventName, {
|
|
637
|
+
bubbles: true,
|
|
638
|
+
cancelable: false,
|
|
639
|
+
composed: true,
|
|
640
|
+
detail,
|
|
641
|
+
});
|
|
642
|
+
}
|
|
643
|
+
}
|
|
520
644
|
export class HelixCopyEvent extends CustomEvent {
|
|
521
645
|
static { this.eventName = 'helix-copy'; }
|
|
522
646
|
constructor(detail) {
|
|
@@ -737,7 +861,9 @@ export class HelixHistoryEvent extends CustomEvent {
|
|
|
737
861
|
}
|
|
738
862
|
}
|
|
739
863
|
const registry = {
|
|
864
|
+
HelixActionEvent,
|
|
740
865
|
HelixActivateEvent,
|
|
866
|
+
HelixAuraFallbackEvent,
|
|
741
867
|
HelixBeforeActivateEvent,
|
|
742
868
|
HelixBeforeChangeEvent,
|
|
743
869
|
HelixBeforeCloseEvent,
|
|
@@ -757,13 +883,18 @@ const registry = {
|
|
|
757
883
|
HelixCanvasViewEvent,
|
|
758
884
|
HelixCanvasZoomEvent,
|
|
759
885
|
HelixCaretEvent,
|
|
886
|
+
HelixClearEvent,
|
|
760
887
|
HelixCollapseEvent,
|
|
761
888
|
HelixCompleteEvent,
|
|
762
889
|
HelixConnectEvent,
|
|
763
890
|
HelixConsoleEvent,
|
|
891
|
+
HelixCopyErrorEvent,
|
|
764
892
|
HelixCopyEvent,
|
|
765
893
|
HelixCreateEvent,
|
|
766
894
|
HelixDismissEvent,
|
|
895
|
+
HelixEditEvent,
|
|
896
|
+
HelixEndEvent,
|
|
897
|
+
HelixExpandEvent,
|
|
767
898
|
HelixFacetEvent,
|
|
768
899
|
HelixFilterEvent,
|
|
769
900
|
HelixFilteredEvent,
|
|
@@ -775,6 +906,8 @@ const registry = {
|
|
|
775
906
|
HelixGraphSignalEvent,
|
|
776
907
|
HelixGraphZoomEvent,
|
|
777
908
|
HelixHistoryEvent,
|
|
909
|
+
HelixLoadEvent,
|
|
910
|
+
HelixLoadMoreEvent,
|
|
778
911
|
HelixMapClusterEvent,
|
|
779
912
|
HelixMapPanEvent,
|
|
780
913
|
HelixMapPartChangeEvent,
|
|
@@ -785,8 +918,10 @@ const registry = {
|
|
|
785
918
|
HelixMoveEvent,
|
|
786
919
|
HelixNavigateEvent,
|
|
787
920
|
HelixNextEvent,
|
|
921
|
+
HelixPanelResizeEvent,
|
|
788
922
|
HelixPinEvent,
|
|
789
923
|
HelixPreviousEvent,
|
|
924
|
+
HelixRangeChangeEvent,
|
|
790
925
|
HelixReadEvent,
|
|
791
926
|
HelixReconnectEvent,
|
|
792
927
|
HelixRejectEvent,
|
|
@@ -805,6 +940,9 @@ const registry = {
|
|
|
805
940
|
HelixShortcutEvent,
|
|
806
941
|
HelixSortEvent,
|
|
807
942
|
HelixSortedEvent,
|
|
943
|
+
HelixSplitEvent,
|
|
944
|
+
HelixToggleEvent,
|
|
808
945
|
HelixTourAskEvent,
|
|
946
|
+
HelixTypingEvent,
|
|
809
947
|
};
|
|
810
948
|
export const helixEventNames = new Set(Object.values(registry).map((event) => event.eventName));
|
|
@@ -20,6 +20,11 @@ const SCROLLER = css `
|
|
|
20
20
|
overflow: auto;
|
|
21
21
|
}
|
|
22
22
|
`;
|
|
23
|
+
const VIRTUAL = css `
|
|
24
|
+
[data-virtual] {
|
|
25
|
+
overflow-anchor: none;
|
|
26
|
+
}
|
|
27
|
+
`;
|
|
23
28
|
const MIRROR = css `
|
|
24
29
|
:host(:dir(rtl)) [data-mirror] {
|
|
25
30
|
scale: -1 1;
|
|
@@ -112,7 +117,15 @@ export class HelixElement extends LitElement {
|
|
|
112
117
|
}));
|
|
113
118
|
}
|
|
114
119
|
static finalizeStyles(styles) {
|
|
115
|
-
return [
|
|
120
|
+
return [
|
|
121
|
+
BOX_SIZING,
|
|
122
|
+
HIDDEN,
|
|
123
|
+
SCROLLER,
|
|
124
|
+
VIRTUAL,
|
|
125
|
+
MIRROR,
|
|
126
|
+
SETTLED,
|
|
127
|
+
...LitElement.finalizeStyles(styles),
|
|
128
|
+
];
|
|
116
129
|
}
|
|
117
130
|
performUpdate() {
|
|
118
131
|
if (this.hasUpdated || !measuring()) {
|
|
@@ -52,12 +52,17 @@ export declare const auditReactProps: (host: EventTarget, props: Record<string,
|
|
|
52
52
|
* declared public API and all of them otherwise silent in React.
|
|
53
53
|
*
|
|
54
54
|
* The name is React's own casing, `onError` rather than `onerror`, because that
|
|
55
|
-
* is what a consumer writes and therefore what is in the props bag.
|
|
56
|
-
*
|
|
57
|
-
* whole of the rule; a two-word name like `loadeddata` would be `onLoadedData`
|
|
58
|
-
* and needs the list extending rather than the rule generalising.
|
|
55
|
+
* is what a consumer writes and therefore what is in the props bag. See
|
|
56
|
+
* `reactNativeProp`.
|
|
59
57
|
*/
|
|
60
58
|
export declare const reactPropFor: (event: Event) => string | undefined;
|
|
59
|
+
/**
|
|
60
|
+
* The prop React reads for a native event: `onError` for `error`, and
|
|
61
|
+
* `onTimeUpdate` for `timeupdate`.
|
|
62
|
+
*
|
|
63
|
+
* The JSX typings name the same props, so a consumer writes what this binds.
|
|
64
|
+
*/
|
|
65
|
+
export declare const reactNativeProp: (type: string) => string;
|
|
61
66
|
export declare const bindReactHandler: (host: EventTarget, event: Event) => void;
|
|
62
67
|
/**
|
|
63
68
|
* Assigns the object and function properties React is holding and never applied.
|
|
@@ -76,8 +76,21 @@ export const reactPropFor = (event) => {
|
|
|
76
76
|
if (event.bubbles || REACT_WIRES.has(event.type)) {
|
|
77
77
|
return undefined;
|
|
78
78
|
}
|
|
79
|
-
return
|
|
79
|
+
return reactNativeProp(event.type);
|
|
80
80
|
};
|
|
81
|
+
const REACT_CASING = {
|
|
82
|
+
canplay: 'onCanPlay',
|
|
83
|
+
canplaythrough: 'onCanPlayThrough',
|
|
84
|
+
durationchange: 'onDurationChange',
|
|
85
|
+
loadeddata: 'onLoadedData',
|
|
86
|
+
loadedmetadata: 'onLoadedMetadata',
|
|
87
|
+
loadstart: 'onLoadStart',
|
|
88
|
+
ratechange: 'onRateChange',
|
|
89
|
+
scrollend: 'onScrollEnd',
|
|
90
|
+
timeupdate: 'onTimeUpdate',
|
|
91
|
+
volumechange: 'onVolumeChange',
|
|
92
|
+
};
|
|
93
|
+
export const reactNativeProp = (type) => REACT_CASING[type] ?? `on${type.charAt(0).toUpperCase()}${type.slice(1)}`;
|
|
81
94
|
const lowercasePropFor = (event) => event.type.includes('-') || REACT_WIRES.has(event.type) ? undefined : `on${event.type}`;
|
|
82
95
|
export const bindReactHandler = (host, event) => {
|
|
83
96
|
const props = reactPropsOf(host);
|
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export { ArrivalController, type ArrivalOptions, } from './controllers/arrival-c
|
|
|
3
3
|
export { ChartPointerController, type ChartPointerHost, } from './controllers/chart-pointer-controller/chart-pointer-controller.js';
|
|
4
4
|
export { CommandController, type CommandOptions, HelixFallbackCommandEvent, supportsInvokers, } from './controllers/command-controller/command-controller.js';
|
|
5
5
|
export { CopyController, type CopyOptions, } from './controllers/copy-controller/copy-controller.js';
|
|
6
|
+
export { CountdownController, type CountdownOptions, } from './controllers/countdown-controller/countdown-controller.js';
|
|
6
7
|
export { activeCue, adoptTrack, type Caption, CueController, captionsAmong, captionTracks, showCaption, } from './controllers/cue-controller/cue-controller.js';
|
|
7
8
|
export { DelayController, type DelayOptions, } from './controllers/delay-controller/delay-controller.js';
|
|
8
9
|
export { DisabledCascadeController, type DisabledCascadeOptions, } from './controllers/disabled-cascade-controller/disabled-cascade-controller.js';
|
|
@@ -14,7 +15,7 @@ export { FullscreenController } from './controllers/fullscreen-controller/fullsc
|
|
|
14
15
|
export { HostClickController } from './controllers/host-click-controller/host-click-controller.js';
|
|
15
16
|
export { IdleController } from './controllers/idle-controller/idle-controller.js';
|
|
16
17
|
export { IndicatorController, type IndicatorOptions, } from './controllers/indicator-controller/indicator-controller.js';
|
|
17
|
-
export { KeyboardNavigationController, type KeyboardNavigationOptions, type NavigableItem, Typeahead, typesCharacter, } from './controllers/keyboard-navigation-controller/keyboard-navigation-controller.js';
|
|
18
|
+
export { KeyboardNavigationController, type KeyboardNavigationOptions, type KeyboardOrigin, type NavigableItem, Typeahead, typesCharacter, } from './controllers/keyboard-navigation-controller/keyboard-navigation-controller.js';
|
|
18
19
|
export { MediaSessionController, type SessionHandlers, SKIP_SECONDS, } from './controllers/media-session-controller/media-session-controller.js';
|
|
19
20
|
export { animationsSettled, type OpenPhase, OpenPhaseController, type OpenPhaseOptions, } from './controllers/open-phase-controller/open-phase-controller.js';
|
|
20
21
|
export { MAX_FRAME_STEP, PaintGateController, type PaintGateOptions, } from './controllers/paint-gate-controller/paint-gate-controller.js';
|
|
@@ -27,7 +28,7 @@ export { SwipeController, type SwipeOptions, } from './controllers/swipe-control
|
|
|
27
28
|
export { type TokenColor, TokenColorController, } from './controllers/token-color-controller/token-color-controller.js';
|
|
28
29
|
export { type Rendered, VirtualizeController, type VirtualizeOptions, type Window as VirtualizeWindow, } from './controllers/virtualize-controller/virtualize-controller.js';
|
|
29
30
|
export { eventsForTag, registerElementEvents } from './events/element-events.js';
|
|
30
|
-
export { type CanvasView, type CaretDetail, type ChangeDetail, type CompleteDetail, type ConnectDetail, type ConsoleDetail, type CopyDetail, type CreateDetail, type DismissDetail, type FacetDetail, type FilterDetail, type GraphFilterDetail, type GraphLayoutDetail, type GraphPartChangeDetail, type GraphSignalDetail, HelixActivateEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeMoveEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePinEvent, HelixBeforeReconnectEvent, HelixBeforeRelabelEvent, HelixBeforeResizeEvent, HelixBeforeSplitEvent, HelixBeforeToggleEvent, HelixCanvasEditEvent, HelixCanvasPanEvent, HelixCanvasViewEvent, HelixCanvasZoomEvent, HelixCaretEvent, HelixCollapseEvent, HelixCompleteEvent, HelixConnectEvent, HelixConsoleEvent, HelixCopyEvent, HelixCreateEvent, HelixDismissEvent, HelixFacetEvent, HelixFilterEvent, HelixFilteredEvent, HelixGraphFilterEvent, HelixGraphLayoutEvent, HelixGraphPanEvent, HelixGraphPartChangeEvent, HelixGraphReadyEvent, HelixGraphSignalEvent, HelixGraphZoomEvent, HelixHistoryEvent, HelixMapClusterEvent, HelixMapPanEvent, HelixMapPartChangeEvent, HelixMapReadyEvent, HelixMapRotateEvent, HelixMapTiltEvent, HelixMapZoomEvent, HelixMoveEvent, HelixNavigateEvent, HelixNextEvent, HelixPinEvent, HelixPreviousEvent, HelixReadEvent, HelixReconnectEvent, HelixRejectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixReorderedEvent, HelixResizedEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSelectedEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixSortedEvent, HelixTourAskEvent, type MapClusterDetail, type MapPanDetail, type MapPartChangeDetail, type MapRotateDetail, type MapTiltDetail, type MapZoomDetail, type MoveDetail, type NavigateDetail, type OpenDetail, type ReadDetail, type ReconnectDetail, type Refusal, type RefusedFile, type RejectDetail, type RelabelDetail, type RemoveDetail, type ResizeDetail, type ScrolledDetail, type SelectDetail, type SendDetail, type ShortcutDetail, type SkipDetail, type SortDetail, type ToggleDetail, type ViewportPanDetail, type ViewportZoomDetail, } from './events/events.js';
|
|
31
|
+
export { type AuraFallbackDetail, type CanvasView, type CaretDetail, type ChangeDetail, type CompleteDetail, type ConnectDetail, type ConsoleDetail, type CopyDetail, type CreateDetail, type DismissDetail, type FacetDetail, type FilterDetail, type GraphFilterDetail, type GraphLayoutDetail, type GraphPartChangeDetail, type GraphSignalDetail, HelixActionEvent, HelixActivateEvent, HelixAuraFallbackEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeMoveEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePinEvent, HelixBeforeReconnectEvent, HelixBeforeRelabelEvent, HelixBeforeResizeEvent, HelixBeforeSplitEvent, HelixBeforeToggleEvent, HelixCanvasEditEvent, HelixCanvasPanEvent, HelixCanvasViewEvent, HelixCanvasZoomEvent, HelixCaretEvent, HelixClearEvent, HelixCollapseEvent, HelixCompleteEvent, HelixConnectEvent, HelixConsoleEvent, HelixCopyErrorEvent, HelixCopyEvent, HelixCreateEvent, HelixDismissEvent, HelixEditEvent, HelixEndEvent, HelixExpandEvent, HelixFacetEvent, HelixFilterEvent, HelixFilteredEvent, HelixGraphFilterEvent, HelixGraphLayoutEvent, HelixGraphPanEvent, HelixGraphPartChangeEvent, HelixGraphReadyEvent, HelixGraphSignalEvent, HelixGraphZoomEvent, HelixHistoryEvent, HelixLoadEvent, HelixLoadMoreEvent, HelixMapClusterEvent, HelixMapPanEvent, HelixMapPartChangeEvent, HelixMapReadyEvent, HelixMapRotateEvent, HelixMapTiltEvent, HelixMapZoomEvent, HelixMoveEvent, HelixNavigateEvent, HelixNextEvent, HelixPanelResizeEvent, HelixPinEvent, HelixPreviousEvent, HelixRangeChangeEvent, HelixReadEvent, HelixReconnectEvent, HelixRejectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixReorderedEvent, HelixResizedEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSelectedEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixSortedEvent, HelixSplitEvent, HelixToggleEvent, HelixTourAskEvent, HelixTypingEvent, type MapClusterDetail, type MapPanDetail, type MapPartChangeDetail, type MapRotateDetail, type MapTiltDetail, type MapZoomDetail, type MoveDetail, type NavigateDetail, type OpenDetail, type RangeDetail, type ReadDetail, type ReconnectDetail, type Refusal, type RefusedFile, type RejectDetail, type RelabelDetail, type RemoveDetail, type ResizeDetail, type ScrolledDetail, type SelectDetail, type SendDetail, type ShortcutDetail, type SkipDetail, type SortDetail, type ToggleDetail, type TypingDetail, type ViewportPanDetail, type ViewportZoomDetail, } from './events/events.js';
|
|
31
32
|
export { HelixElement, whenHydrated } from './helix-element/helix-element.js';
|
|
32
33
|
export { HelixFormElement } from './helix-form-element/helix-form-element.js';
|
|
33
34
|
export { MixinChartSource, type MixinChartSourceInterface, PALETTE, PLOT_HEIGHT, PLOT_WIDTH, seriesIndex, seriesNames, } from './mixins/mixin-chart-source/mixin-chart-source.js';
|
|
@@ -77,6 +78,7 @@ export { copiesOf, type MediaCopy, sameCopies, } from './utils/media-copy/media-
|
|
|
77
78
|
export { formatNumber, parseNumber } from './utils/number-format/number-format.js';
|
|
78
79
|
export { onUnlessFalse } from './utils/on-unless-false/on-unless-false.js';
|
|
79
80
|
export { appleTouch, onApple, type Platform } from './utils/platform/platform.js';
|
|
81
|
+
export { rangeAdd } from './utils/range-add/range-add.js';
|
|
80
82
|
export { type ColorBytes, readColor, rgbOf } from './utils/read-color/read-color.js';
|
|
81
83
|
export { byRow, type Row, type RowCell, readRows, readSeries, type Series, type SeriesPoint, seriesKey, unbroken, } from './utils/read-series/read-series.js';
|
|
82
84
|
export { type ElementsProperty, linkDescription, reflectElements, unlinkDescription, } from './utils/reflect-elements/reflect-elements.js';
|
package/dist/index.js
CHANGED
|
@@ -3,6 +3,7 @@ export { ArrivalController, } from './controllers/arrival-controller/arrival-con
|
|
|
3
3
|
export { ChartPointerController, } from './controllers/chart-pointer-controller/chart-pointer-controller.js';
|
|
4
4
|
export { CommandController, HelixFallbackCommandEvent, supportsInvokers, } from './controllers/command-controller/command-controller.js';
|
|
5
5
|
export { CopyController, } from './controllers/copy-controller/copy-controller.js';
|
|
6
|
+
export { CountdownController, } from './controllers/countdown-controller/countdown-controller.js';
|
|
6
7
|
export { activeCue, adoptTrack, CueController, captionsAmong, captionTracks, showCaption, } from './controllers/cue-controller/cue-controller.js';
|
|
7
8
|
export { DelayController, } from './controllers/delay-controller/delay-controller.js';
|
|
8
9
|
export { DisabledCascadeController, } from './controllers/disabled-cascade-controller/disabled-cascade-controller.js';
|
|
@@ -27,7 +28,7 @@ export { SwipeController, } from './controllers/swipe-controller/swipe-controlle
|
|
|
27
28
|
export { TokenColorController, } from './controllers/token-color-controller/token-color-controller.js';
|
|
28
29
|
export { VirtualizeController, } from './controllers/virtualize-controller/virtualize-controller.js';
|
|
29
30
|
export { eventsForTag, registerElementEvents } from './events/element-events.js';
|
|
30
|
-
export { HelixActivateEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeMoveEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePinEvent, HelixBeforeReconnectEvent, HelixBeforeRelabelEvent, HelixBeforeResizeEvent, HelixBeforeSplitEvent, HelixBeforeToggleEvent, HelixCanvasEditEvent, HelixCanvasPanEvent, HelixCanvasViewEvent, HelixCanvasZoomEvent, HelixCaretEvent, HelixCollapseEvent, HelixCompleteEvent, HelixConnectEvent, HelixConsoleEvent, HelixCopyEvent, HelixCreateEvent, HelixDismissEvent, HelixFacetEvent, HelixFilterEvent, HelixFilteredEvent, HelixGraphFilterEvent, HelixGraphLayoutEvent, HelixGraphPanEvent, HelixGraphPartChangeEvent, HelixGraphReadyEvent, HelixGraphSignalEvent, HelixGraphZoomEvent, HelixHistoryEvent, HelixMapClusterEvent, HelixMapPanEvent, HelixMapPartChangeEvent, HelixMapReadyEvent, HelixMapRotateEvent, HelixMapTiltEvent, HelixMapZoomEvent, HelixMoveEvent, HelixNavigateEvent, HelixNextEvent, HelixPinEvent, HelixPreviousEvent, HelixReadEvent, HelixReconnectEvent, HelixRejectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixReorderedEvent, HelixResizedEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSelectedEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixSortedEvent, HelixTourAskEvent, } from './events/events.js';
|
|
31
|
+
export { HelixActionEvent, HelixActivateEvent, HelixAuraFallbackEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeMoveEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePinEvent, HelixBeforeReconnectEvent, HelixBeforeRelabelEvent, HelixBeforeResizeEvent, HelixBeforeSplitEvent, HelixBeforeToggleEvent, HelixCanvasEditEvent, HelixCanvasPanEvent, HelixCanvasViewEvent, HelixCanvasZoomEvent, HelixCaretEvent, HelixClearEvent, HelixCollapseEvent, HelixCompleteEvent, HelixConnectEvent, HelixConsoleEvent, HelixCopyErrorEvent, HelixCopyEvent, HelixCreateEvent, HelixDismissEvent, HelixEditEvent, HelixEndEvent, HelixExpandEvent, HelixFacetEvent, HelixFilterEvent, HelixFilteredEvent, HelixGraphFilterEvent, HelixGraphLayoutEvent, HelixGraphPanEvent, HelixGraphPartChangeEvent, HelixGraphReadyEvent, HelixGraphSignalEvent, HelixGraphZoomEvent, HelixHistoryEvent, HelixLoadEvent, HelixLoadMoreEvent, HelixMapClusterEvent, HelixMapPanEvent, HelixMapPartChangeEvent, HelixMapReadyEvent, HelixMapRotateEvent, HelixMapTiltEvent, HelixMapZoomEvent, HelixMoveEvent, HelixNavigateEvent, HelixNextEvent, HelixPanelResizeEvent, HelixPinEvent, HelixPreviousEvent, HelixRangeChangeEvent, HelixReadEvent, HelixReconnectEvent, HelixRejectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixReorderedEvent, HelixResizedEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSelectedEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixSortedEvent, HelixSplitEvent, HelixToggleEvent, HelixTourAskEvent, HelixTypingEvent, } from './events/events.js';
|
|
31
32
|
export { HelixElement, whenHydrated } from './helix-element/helix-element.js';
|
|
32
33
|
export { HelixFormElement } from './helix-form-element/helix-form-element.js';
|
|
33
34
|
export { MixinChartSource, PALETTE, PLOT_HEIGHT, PLOT_WIDTH, seriesIndex, seriesNames, } from './mixins/mixin-chart-source/mixin-chart-source.js';
|
|
@@ -77,6 +78,7 @@ export { copiesOf, sameCopies, } from './utils/media-copy/media-copy.js';
|
|
|
77
78
|
export { formatNumber, parseNumber } from './utils/number-format/number-format.js';
|
|
78
79
|
export { onUnlessFalse } from './utils/on-unless-false/on-unless-false.js';
|
|
79
80
|
export { appleTouch, onApple } from './utils/platform/platform.js';
|
|
81
|
+
export { rangeAdd } from './utils/range-add/range-add.js';
|
|
80
82
|
export { readColor, rgbOf } from './utils/read-color/read-color.js';
|
|
81
83
|
export { byRow, readRows, readSeries, seriesKey, unbroken, } from './utils/read-series/read-series.js';
|
|
82
84
|
export { linkDescription, reflectElements, unlinkDescription, } from './utils/reflect-elements/reflect-elements.js';
|
|
@@ -10,16 +10,17 @@ export interface DrawIconOptions {
|
|
|
10
10
|
/**
|
|
11
11
|
* Draws an icon that was imported by name, rather than looked up by string.
|
|
12
12
|
*
|
|
13
|
-
* **`<helix-icon name="play">`
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* path data: measured at 50,814 bytes raw and 15,010 gzipped for 102 icons, and
|
|
13
|
+
* **`<helix-icon name="play">` looks its glyph up in a registry at runtime.**
|
|
14
|
+
* The registry holds the whole set once `@fusion.dev/helix-headless/icon`
|
|
15
|
+
* registers it, and no bundler can shake a lookup by string, so every consumer
|
|
16
|
+
* of any component that renders one ships all of the generated path data: measured at 50,814 bytes raw and 15,010 gzipped for 102 icons, and
|
|
17
17
|
* growing about 147 gzipped bytes per icon added. A named import ships one path
|
|
18
18
|
* and is checked when the package compiles rather than by a name lookup later.
|
|
19
19
|
*
|
|
20
20
|
* That element still earns its place as *public* API, where a consumer writes a
|
|
21
|
-
* name in markup and a lookup is the only thing that can work
|
|
22
|
-
*
|
|
21
|
+
* name in markup and a lookup is the only thing that can work, and
|
|
22
|
+
* `@fusion.dev/helix-headless/icon/root` names glyphs without registering the
|
|
23
|
+
* set. What it should not be is how this library draws its own marks.
|
|
23
24
|
*
|
|
24
25
|
* **There is no `part` option, and there cannot be.** A part name behind an
|
|
25
26
|
* interpolation is a part the manifest cannot see, so the component's own
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a range adds to a selection of many, as arithmetic over the items on
|
|
3
|
+
* show.
|
|
4
|
+
*
|
|
5
|
+
* Pure and in core, because Listbox (Shift with Home or End) and Data Table
|
|
6
|
+
* (Shift with an arrow, Home or End, over rows) take in a range the same way,
|
|
7
|
+
* and a spec can hold it without a page.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* The selection after Shift with Home or End: every option shown from the
|
|
11
|
+
* highlight to the end the key went to, added after what was selected, or
|
|
12
|
+
* `null` where nothing new is taken in.
|
|
13
|
+
*
|
|
14
|
+
* `from` is where the highlight was, as an index into `shown`, or `-1` for no
|
|
15
|
+
* highlight, which takes in the end alone. `to` is the end the key went to.
|
|
16
|
+
* APG's multiple-selection listbox, and the same rule over a data table's
|
|
17
|
+
* rows.
|
|
18
|
+
*/
|
|
19
|
+
export declare const rangeAdd: (values: readonly string[], shown: readonly string[], from: number, to: number) => string[] | null;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export const rangeAdd = (values, shown, from, to) => {
|
|
2
|
+
const [start, end] = from < 0 ? [to, to] : [Math.min(from, to), Math.max(from, to)];
|
|
3
|
+
const added = shown.slice(start, end + 1).filter((value) => !values.includes(value));
|
|
4
|
+
return added.length > 0 ? [...values, ...added] : null;
|
|
5
|
+
};
|