@fusion.dev/helix 0.116.0 → 0.117.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.
@@ -61521,6 +61521,2225 @@
61521
61521
  }
61522
61522
  ]
61523
61523
  },
61524
+ {
61525
+ "kind": "javascript-module",
61526
+ "path": "src/graph/index.ts",
61527
+ "declarations": [],
61528
+ "exports": [
61529
+ {
61530
+ "kind": "js",
61531
+ "name": "HelixGraph",
61532
+ "declaration": {
61533
+ "name": "HelixGraph",
61534
+ "module": "./root/graph-root.js"
61535
+ }
61536
+ }
61537
+ ]
61538
+ },
61539
+ {
61540
+ "kind": "javascript-module",
61541
+ "path": "src/graph/root/graph-root.css.ts",
61542
+ "declarations": [
61543
+ {
61544
+ "kind": "variable",
61545
+ "name": "styles"
61546
+ }
61547
+ ],
61548
+ "exports": [
61549
+ {
61550
+ "kind": "js",
61551
+ "name": "styles",
61552
+ "declaration": {
61553
+ "name": "styles",
61554
+ "module": "src/graph/root/graph-root.css.ts"
61555
+ }
61556
+ }
61557
+ ]
61558
+ },
61559
+ {
61560
+ "kind": "javascript-module",
61561
+ "path": "src/graph/root/graph-root.ts",
61562
+ "declarations": [
61563
+ {
61564
+ "kind": "class",
61565
+ "description": "The styled frame: the drawing with its zoom and fullscreen buttons, and the\nlist of notes beside it, which moves below the drawing where the frame is\nnarrower than 40rem. The selected note leads the list on a surface of its\nown, and the notes linked to it are named by how they link.",
61566
+ "name": "HelixGraph",
61567
+ "cssProperties": [
61568
+ {
61569
+ "description": "The color behind the drawing while it loads.",
61570
+ "name": "--graph-background-color"
61571
+ },
61572
+ {
61573
+ "description": "The frame's height, as a length.",
61574
+ "name": "--graph-block-size"
61575
+ },
61576
+ {
61577
+ "description": "The frame's border color.",
61578
+ "name": "--graph-border-color"
61579
+ },
61580
+ {
61581
+ "description": "The list's width beside the drawing.",
61582
+ "name": "--graph-panel-size"
61583
+ },
61584
+ {
61585
+ "description": "The background of the zoom and fullscreen buttons. Map and Canvas use the same property.",
61586
+ "name": "--viewport-control-background-color"
61587
+ }
61588
+ ],
61589
+ "members": [
61590
+ {
61591
+ "kind": "field",
61592
+ "name": "controls",
61593
+ "type": {
61594
+ "text": "string | undefined"
61595
+ },
61596
+ "description": "Which controls to show, as a list such as `pan zoom fullscreen`, or\n`none`. A family can add words of its own.\n\n**A list rather than a switch, because the overlap is not symmetric.** A\nsurface a consumer brings often has zoom controls of its own and almost\nnever has pan buttons, so a single switch would make them choose between\na duplicate and nothing.\n\n`none` draws none of them, which is the right answer where what was\nslotted already has controls a reader can find: what this argues for is\nthat *a* findable control exists, never that it is ours. The methods stay\npublic either way, so a consumer drawing their own chrome can still drive\nthe surface.\n\nAbsent is whatever the family rests at, which is this library's rule that\na resting value is an attribute's absence: zoom, the compass and\nfullscreen for a map, whose pan buttons a page asks for, and zoom and\nfullscreen for a board, which a reader drags and whose pad took a third\nof the frame. The\nstylesheet lays the cluster out by which buttons are in it rather than by\nthis attribute, so the two defaults need no rule each.",
61597
+ "attribute": "controls",
61598
+ "reflects": true,
61599
+ "inheritedFrom": {
61600
+ "name": "MixinViewport",
61601
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
61602
+ }
61603
+ },
61604
+ {
61605
+ "kind": "field",
61606
+ "name": "controlsLabel",
61607
+ "type": {
61608
+ "text": "string | undefined"
61609
+ },
61610
+ "description": "The name of the group of controls, read by screen readers.\n\nAbsent is the family's own name for it, \"Map controls\" or \"Board\ncontrols\", which names what the controls drive rather than the\nmechanism. Written here to say it in another language, which every other\nstring this surface speaks already allowed and this one did not.",
61611
+ "attribute": "controls-label",
61612
+ "inheritedFrom": {
61613
+ "name": "MixinViewport",
61614
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
61615
+ }
61616
+ },
61617
+ {
61618
+ "kind": "field",
61619
+ "name": "controlsPlacement",
61620
+ "type": {
61621
+ "text": "'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | undefined"
61622
+ },
61623
+ "description": "Which corner the controls sit in.\n\n**Configurable because there is no safe default**, which is a collision\nrather than a taste: whatever a consumer slots may put its own controls\nin any corner, and every library that draws some made this a setting for\nthe same reason.\n\nLogical corners rather than left and right, so a right-to-left page moves\nthem without a consumer writing a second rule. Absent is the top end, a\nresting value being an attribute's absence: a default that reflected\nwould write an attribute onto every host that no server sent.",
61624
+ "attribute": "controls-placement",
61625
+ "reflects": true,
61626
+ "inheritedFrom": {
61627
+ "name": "MixinViewport",
61628
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
61629
+ }
61630
+ },
61631
+ {
61632
+ "kind": "field",
61633
+ "name": "fullscreenLabel",
61634
+ "type": {
61635
+ "text": "string"
61636
+ },
61637
+ "default": "'Fill the screen'",
61638
+ "description": "The fullscreen button's label.",
61639
+ "attribute": "fullscreen-label",
61640
+ "inheritedFrom": {
61641
+ "name": "MixinViewport",
61642
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
61643
+ }
61644
+ },
61645
+ {
61646
+ "kind": "field",
61647
+ "name": "idleDelay",
61648
+ "type": {
61649
+ "text": "number"
61650
+ },
61651
+ "default": "0",
61652
+ "description": "How long, in milliseconds, before the header and footer hide when the user is inactive. `0` keeps them visible.\n\nZero keeps it up, which is the default: these controls are how a keyboard\nreader operates the surface, and chrome that hid itself by default would\nbe the component undoing its own argument. Set it for a display nobody\ndrives.",
61653
+ "attribute": "idle-delay",
61654
+ "inheritedFrom": {
61655
+ "name": "MixinViewport",
61656
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
61657
+ }
61658
+ },
61659
+ {
61660
+ "kind": "field",
61661
+ "name": "panDownLabel",
61662
+ "type": {
61663
+ "text": "string"
61664
+ },
61665
+ "default": "'Pan down'",
61666
+ "description": "The pan down button's label.\n\n**A label for each way rather than one with the way filled in**, which is\nwhat this was: `Pan {way}` filled in with `left`, so a page that said it\nin French read out \"Déplacer left\". The word for a direction is as much\nthe translator's as the word for panning, and a language can put it\nanywhere in the phrase.",
61667
+ "attribute": "pan-down-label",
61668
+ "inheritedFrom": {
61669
+ "name": "MixinViewport",
61670
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
61671
+ }
61672
+ },
61673
+ {
61674
+ "kind": "field",
61675
+ "name": "panLeftLabel",
61676
+ "type": {
61677
+ "text": "string"
61678
+ },
61679
+ "default": "'Pan left'",
61680
+ "description": "The pan left button's label.",
61681
+ "attribute": "pan-left-label",
61682
+ "inheritedFrom": {
61683
+ "name": "MixinViewport",
61684
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
61685
+ }
61686
+ },
61687
+ {
61688
+ "kind": "field",
61689
+ "name": "panRightLabel",
61690
+ "type": {
61691
+ "text": "string"
61692
+ },
61693
+ "default": "'Pan right'",
61694
+ "description": "The pan right button's label.",
61695
+ "attribute": "pan-right-label",
61696
+ "inheritedFrom": {
61697
+ "name": "MixinViewport",
61698
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
61699
+ }
61700
+ },
61701
+ {
61702
+ "kind": "field",
61703
+ "name": "panStep",
61704
+ "type": {
61705
+ "text": "number"
61706
+ },
61707
+ "default": "0.25",
61708
+ "description": "How far one press pans the view, as a fraction of its size.\n\nA fraction rather than a distance, because this surface does not know the\nscale of what is inside it: a quarter of the viewport is the same gesture\nat any zoom, and a consumer who wants their own units multiplies by them.",
61709
+ "attribute": "pan-step",
61710
+ "inheritedFrom": {
61711
+ "name": "MixinViewport",
61712
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
61713
+ }
61714
+ },
61715
+ {
61716
+ "kind": "field",
61717
+ "name": "panUpLabel",
61718
+ "type": {
61719
+ "text": "string"
61720
+ },
61721
+ "default": "'Pan up'",
61722
+ "description": "The pan up button's label.",
61723
+ "attribute": "pan-up-label",
61724
+ "inheritedFrom": {
61725
+ "name": "MixinViewport",
61726
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
61727
+ }
61728
+ },
61729
+ {
61730
+ "kind": "field",
61731
+ "name": "zoomInLabel",
61732
+ "type": {
61733
+ "text": "string"
61734
+ },
61735
+ "default": "'Zoom in'",
61736
+ "description": "The zoom in button's label.",
61737
+ "attribute": "zoom-in-label",
61738
+ "inheritedFrom": {
61739
+ "name": "MixinViewport",
61740
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
61741
+ }
61742
+ },
61743
+ {
61744
+ "kind": "field",
61745
+ "name": "resting",
61746
+ "type": {
61747
+ "text": "boolean"
61748
+ },
61749
+ "privacy": "protected",
61750
+ "default": "false",
61751
+ "description": "Whether the reader has been still long enough to hide the chrome.",
61752
+ "inheritedFrom": {
61753
+ "name": "MixinViewport",
61754
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
61755
+ }
61756
+ },
61757
+ {
61758
+ "kind": "field",
61759
+ "name": "filled",
61760
+ "type": {
61761
+ "text": "boolean"
61762
+ },
61763
+ "privacy": "protected",
61764
+ "default": "false",
61765
+ "description": "Whether the surface is filling the screen.",
61766
+ "inheritedFrom": {
61767
+ "name": "MixinViewport",
61768
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
61769
+ }
61770
+ },
61771
+ {
61772
+ "kind": "field",
61773
+ "name": "fullscreen",
61774
+ "privacy": "protected",
61775
+ "readonly": true,
61776
+ "default": "new FullscreenController(this, (full) => { this.filled = full })",
61777
+ "inheritedFrom": {
61778
+ "name": "MixinViewport",
61779
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
61780
+ }
61781
+ },
61782
+ {
61783
+ "kind": "field",
61784
+ "name": "idle",
61785
+ "privacy": "protected",
61786
+ "readonly": true,
61787
+ "default": "new IdleController( this, () => this.idleDelay, (resting) => { this.resting = resting }, )",
61788
+ "inheritedFrom": {
61789
+ "name": "MixinViewport",
61790
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
61791
+ }
61792
+ },
61793
+ {
61794
+ "kind": "field",
61795
+ "name": "zoomOutLabel",
61796
+ "type": {
61797
+ "text": "string"
61798
+ },
61799
+ "default": "'Zoom out'",
61800
+ "description": "The zoom out button's label.",
61801
+ "attribute": "zoom-out-label",
61802
+ "inheritedFrom": {
61803
+ "name": "MixinViewport",
61804
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
61805
+ }
61806
+ },
61807
+ {
61808
+ "kind": "field",
61809
+ "name": "restingControlsLabel",
61810
+ "type": {
61811
+ "text": "string"
61812
+ },
61813
+ "privacy": "protected",
61814
+ "description": "What the group of controls is called where the page does not say.\n\nA getter a family overrides rather than a default on the property, the\nway `restingControls` is: a default would reflect nothing and still be\none value for every family composing this.",
61815
+ "readonly": true,
61816
+ "inheritedFrom": {
61817
+ "name": "MixinViewport",
61818
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
61819
+ }
61820
+ },
61821
+ {
61822
+ "kind": "method",
61823
+ "name": "panEvent",
61824
+ "privacy": "protected",
61825
+ "return": {
61826
+ "type": {
61827
+ "text": "Event"
61828
+ }
61829
+ },
61830
+ "parameters": [
61831
+ {
61832
+ "name": "_detail",
61833
+ "type": {
61834
+ "text": "ViewportPanDetail"
61835
+ }
61836
+ }
61837
+ ],
61838
+ "description": "The pan event, which the family names and this one does not.\n\n**No default, and the analyzer is why as much as the taste is.** A mixin\nthat built a `helix-map-pan` would put it in the manifest of every family\nthat composed the surface, since a mixin's code is resolved into its\nusers: a canvas would be documented as dispatching a map's event, and a\nconsumer reading the reference page would believe it. So the surface\ncarries no event name at all, and a family that forgets to name one hears\nabout it the first time a reader presses an arrow.",
61839
+ "inheritedFrom": {
61840
+ "name": "MixinViewport",
61841
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
61842
+ }
61843
+ },
61844
+ {
61845
+ "kind": "method",
61846
+ "name": "zoomEvent",
61847
+ "privacy": "protected",
61848
+ "return": {
61849
+ "type": {
61850
+ "text": "Event"
61851
+ }
61852
+ },
61853
+ "parameters": [
61854
+ {
61855
+ "name": "_detail",
61856
+ "type": {
61857
+ "text": "ViewportZoomDetail"
61858
+ }
61859
+ }
61860
+ ],
61861
+ "description": "The zoom event, which the family names, for the same reason.",
61862
+ "inheritedFrom": {
61863
+ "name": "MixinViewport",
61864
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
61865
+ }
61866
+ },
61867
+ {
61868
+ "kind": "method",
61869
+ "name": "pan",
61870
+ "return": {
61871
+ "type": {
61872
+ "text": "void"
61873
+ }
61874
+ },
61875
+ "parameters": [
61876
+ {
61877
+ "name": "to",
61878
+ "type": {
61879
+ "text": "ViewportWay"
61880
+ }
61881
+ }
61882
+ ],
61883
+ "description": "Pans the view one step in a direction.",
61884
+ "inheritedFrom": {
61885
+ "name": "MixinViewport",
61886
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
61887
+ },
61888
+ "type": {
61889
+ "text": "pan(to: ViewportWay) => void"
61890
+ }
61891
+ },
61892
+ {
61893
+ "kind": "method",
61894
+ "name": "zoom",
61895
+ "return": {
61896
+ "type": {
61897
+ "text": "void"
61898
+ }
61899
+ },
61900
+ "parameters": [
61901
+ {
61902
+ "name": "by",
61903
+ "type": {
61904
+ "text": "number"
61905
+ }
61906
+ }
61907
+ ],
61908
+ "description": "Zooms the view one step: `1` zooms in and `-1` zooms out.",
61909
+ "inheritedFrom": {
61910
+ "name": "MixinViewport",
61911
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
61912
+ },
61913
+ "type": {
61914
+ "text": "zoom(by: number) => void"
61915
+ }
61916
+ },
61917
+ {
61918
+ "kind": "method",
61919
+ "name": "toggleFullscreen",
61920
+ "return": {
61921
+ "type": {
61922
+ "text": "void"
61923
+ }
61924
+ },
61925
+ "description": "Turns fullscreen on or off.",
61926
+ "inheritedFrom": {
61927
+ "name": "MixinViewport",
61928
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
61929
+ },
61930
+ "type": {
61931
+ "text": "toggleFullscreen() => void"
61932
+ }
61933
+ },
61934
+ {
61935
+ "kind": "field",
61936
+ "name": "restingControls",
61937
+ "type": {
61938
+ "text": "string"
61939
+ },
61940
+ "privacy": "protected",
61941
+ "description": "Which controls the surface draws while `controls` is absent.\n\nAll three here, and a family overrides it where its reader has a better\nway to do one of them already.",
61942
+ "readonly": true,
61943
+ "inheritedFrom": {
61944
+ "name": "MixinViewport",
61945
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
61946
+ }
61947
+ },
61948
+ {
61949
+ "kind": "method",
61950
+ "name": "drawsControls",
61951
+ "privacy": "protected",
61952
+ "return": {
61953
+ "type": {
61954
+ "text": "boolean"
61955
+ }
61956
+ },
61957
+ "parameters": [
61958
+ {
61959
+ "name": "group",
61960
+ "type": {
61961
+ "text": "string"
61962
+ }
61963
+ }
61964
+ ],
61965
+ "description": "Whether `controls`, or the resting controls, names a group.",
61966
+ "inheritedFrom": {
61967
+ "name": "MixinViewport",
61968
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
61969
+ }
61970
+ },
61971
+ {
61972
+ "kind": "method",
61973
+ "name": "renderMoreControls",
61974
+ "privacy": "protected",
61975
+ "return": {
61976
+ "type": {
61977
+ "text": "TemplateResult | typeof nothing"
61978
+ }
61979
+ },
61980
+ "description": "More buttons for the group of controls, after zoom. None here; a family adds its own.",
61981
+ "inheritedFrom": {
61982
+ "name": "MixinViewport",
61983
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
61984
+ }
61985
+ },
61986
+ {
61987
+ "kind": "method",
61988
+ "name": "handleMoreKeys",
61989
+ "privacy": "protected",
61990
+ "return": {
61991
+ "type": {
61992
+ "text": "boolean"
61993
+ }
61994
+ },
61995
+ "parameters": [
61996
+ {
61997
+ "name": "_event",
61998
+ "type": {
61999
+ "text": "KeyboardEvent"
62000
+ }
62001
+ }
62002
+ ],
62003
+ "description": "Answers a key the family adds, and says whether it did. None here.",
62004
+ "inheritedFrom": {
62005
+ "name": "MixinViewport",
62006
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
62007
+ }
62008
+ },
62009
+ {
62010
+ "kind": "method",
62011
+ "name": "sideOf",
62012
+ "privacy": "protected",
62013
+ "return": {
62014
+ "type": {
62015
+ "text": "string"
62016
+ }
62017
+ },
62018
+ "parameters": [
62019
+ {
62020
+ "name": "way",
62021
+ "type": {
62022
+ "text": "ViewportWay"
62023
+ }
62024
+ }
62025
+ ],
62026
+ "description": "The side of the screen a reading-order way is on, left or right.\n\n**Start is left only where the text runs that way.** The pad's grid is\nlaid out in reading order, so on a right-to-left page the start button\nsits on the right, and it said \"left\" and pointed left from there.",
62027
+ "inheritedFrom": {
62028
+ "name": "MixinViewport",
62029
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
62030
+ }
62031
+ },
62032
+ {
62033
+ "kind": "field",
62034
+ "name": "rightToLeft",
62035
+ "type": {
62036
+ "text": "boolean"
62037
+ },
62038
+ "privacy": "private",
62039
+ "description": "Whether the page runs right to left, as far as this render may say.\n\n**Not while hydrating.** A server cannot measure direction, so it drew\nthe left-to-right pad; Lit hydrates by keeping what the server drew and\nrecording the client's value unwritten, so a right-to-left answer in the\nhydrating render would never reach the page. It answers once hydration\nis over, and `firstUpdated` asks for that render.",
62040
+ "readonly": true,
62041
+ "inheritedFrom": {
62042
+ "name": "MixinViewport",
62043
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
62044
+ }
62045
+ },
62046
+ {
62047
+ "kind": "method",
62048
+ "name": "panLabel",
62049
+ "privacy": "protected",
62050
+ "return": {
62051
+ "type": {
62052
+ "text": "string"
62053
+ }
62054
+ },
62055
+ "parameters": [
62056
+ {
62057
+ "name": "way",
62058
+ "type": {
62059
+ "text": "ViewportWay"
62060
+ }
62061
+ }
62062
+ ],
62063
+ "description": "What one pan control is called, with the way it goes filled in.\n\nLeft and right rather than start and end, because the label is read aloud\nand a reader knows which way left is. The event keeps the reading-order\nname, which is the one a right-to-left page needs.",
62064
+ "inheritedFrom": {
62065
+ "name": "MixinViewport",
62066
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
62067
+ }
62068
+ },
62069
+ {
62070
+ "kind": "method",
62071
+ "name": "panGlyph",
62072
+ "privacy": "protected",
62073
+ "return": {
62074
+ "type": {
62075
+ "text": "string"
62076
+ }
62077
+ },
62078
+ "parameters": [
62079
+ {
62080
+ "name": "way",
62081
+ "type": {
62082
+ "text": "ViewportWay"
62083
+ }
62084
+ }
62085
+ ],
62086
+ "description": "The arrow drawn on a pan control, pointing the way it goes on screen.",
62087
+ "inheritedFrom": {
62088
+ "name": "MixinViewport",
62089
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
62090
+ }
62091
+ },
62092
+ {
62093
+ "kind": "field",
62094
+ "name": "handleKeydown",
62095
+ "privacy": "protected",
62096
+ "readonly": true,
62097
+ "description": "The arrow keys, which are the second way rather than the only one.\n\n`inlineStep` rather than a test against `ArrowLeft`, so the reader on a\nright-to-left page moves the way their text runs, which is what the pan\ncontrols say too.\n\n**Only from the surface's own frame, and that is the difference between\none move and two.** What a consumer slots may answer the arrow keys\nitself, and a press relayed from inside it moves their view once on its\nown and once more on the event this would send. The rule is the region\nand the controls rather than the whole shadow root, because a family with\nits own focusable content in there, a list of notes beside a canvas,\nwould otherwise pan the surface out from under a reader arrowing through\nit.",
62098
+ "inheritedFrom": {
62099
+ "name": "MixinViewport",
62100
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
62101
+ }
62102
+ },
62103
+ {
62104
+ "kind": "field",
62105
+ "name": "controlsElement",
62106
+ "type": {
62107
+ "text": "Element | null"
62108
+ },
62109
+ "privacy": "protected",
62110
+ "description": "The group of controls as drawn, or nothing where none are.\n\n**Here, because this is what renders it.** A family that measures the\ncluster, as a board does to keep its fit clear of the buttons, would\notherwise look up a part its own template never writes, and a lookup\nlike that is one a later edit to this template breaks without a word.",
62111
+ "readonly": true,
62112
+ "inheritedFrom": {
62113
+ "name": "MixinViewport",
62114
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
62115
+ }
62116
+ },
62117
+ {
62118
+ "kind": "method",
62119
+ "name": "renderControls",
62120
+ "privacy": "protected",
62121
+ "return": {
62122
+ "type": {
62123
+ "text": "TemplateResult | typeof nothing"
62124
+ }
62125
+ },
62126
+ "description": "The controls, or nothing where a consumer kept none of them.\n\n**Written out rather than generated**, because a part name behind an\ninterpolation is a part the manifest cannot see: a loop would publish\n`pan-` and a consumer's `::part(pan-up)` would match nothing.",
62127
+ "inheritedFrom": {
62128
+ "name": "MixinViewport",
62129
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
62130
+ }
62131
+ },
62132
+ {
62133
+ "kind": "field",
62134
+ "name": "active",
62135
+ "type": {
62136
+ "text": "string"
62137
+ },
62138
+ "description": "The `value` of the current item.\n\nNot `option.active`, which is the option the keyboard is on: that is a\ndifferent question from which one is chosen.\n\nWriting always applies, so `<helix-tabs active=\"one\">` starts on that\ntab, and `default-active` is how markup says where to start without\nnaming the current one.",
62139
+ "attribute": "active",
62140
+ "inheritedFrom": {
62141
+ "name": "MixinControllerActive",
62142
+ "module": "src/mixins/mixin-controller-active/mixin-controller-active.ts"
62143
+ }
62144
+ },
62145
+ {
62146
+ "kind": "field",
62147
+ "name": "defaultActive",
62148
+ "type": {
62149
+ "text": "string"
62150
+ },
62151
+ "default": "''",
62152
+ "description": "The `value` of the item declared current in markup.\n\nIgnored once `active` is written.",
62153
+ "attribute": "default-active",
62154
+ "inheritedFrom": {
62155
+ "name": "MixinControllerActive",
62156
+ "module": "src/mixins/mixin-controller-active/mixin-controller-active.ts"
62157
+ }
62158
+ },
62159
+ {
62160
+ "kind": "field",
62161
+ "name": "activeState",
62162
+ "type": {
62163
+ "text": "string | undefined"
62164
+ },
62165
+ "privacy": "private",
62166
+ "default": "undefined",
62167
+ "description": "The state, whoever set it, and `undefined` until somebody has.\n\nOne field and not two. Writing always applies, the way a native control\ndoes when a script assigns to it.",
62168
+ "inheritedFrom": {
62169
+ "name": "MixinControllerActive",
62170
+ "module": "src/mixins/mixin-controller-active/mixin-controller-active.ts"
62171
+ }
62172
+ },
62173
+ {
62174
+ "kind": "method",
62175
+ "name": "requestActive",
62176
+ "return": {
62177
+ "type": {
62178
+ "text": "boolean"
62179
+ }
62180
+ },
62181
+ "parameters": [
62182
+ {
62183
+ "name": "next",
62184
+ "type": {
62185
+ "text": "string"
62186
+ }
62187
+ }
62188
+ ],
62189
+ "description": "Requests a new current item, and returns whether the change was applied.\n\nAnnounces before it acts, so `preventDefault()` on the `helix-before-activate` is\na refusal and nothing moves. Unlike a native control, nothing has moved\nby the time this runs, so refusing is simply not writing: there is\nnothing to put back. Nobody refusing means the set updates itself,\nwhether or not a consumer declared `active`, a declared property being a\nseed and a correction.",
62190
+ "inheritedFrom": {
62191
+ "name": "MixinControllerActive",
62192
+ "module": "src/mixins/mixin-controller-active/mixin-controller-active.ts"
62193
+ },
62194
+ "type": {
62195
+ "text": "requestActive(next: string) => boolean"
62196
+ }
62197
+ },
62198
+ {
62199
+ "kind": "method",
62200
+ "name": "announceActivated",
62201
+ "privacy": "private",
62202
+ "return": {
62203
+ "type": {
62204
+ "text": "void"
62205
+ }
62206
+ },
62207
+ "parameters": [
62208
+ {
62209
+ "name": "value",
62210
+ "type": {
62211
+ "text": "string"
62212
+ }
62213
+ }
62214
+ ],
62215
+ "description": "Says the current child moved, once it has.\n\n`helix-activate` rather than a native word: nothing on the platform means\n\"a set chose a different member\", and borrowing `change` would be a lie\nabout what moved.\n\nA consumer who only wants to know which child is current cannot use\n`helix-before-activate` for it, that one firing *before* `apply`, so\n`currentTarget.active` is the previous value inside the handler and\n`detail.value` is a proposal another listener may refuse. `helix-select`\nis no substitute either: it fires when an item is *chosen* and not when\n`active` is assigned.\n\n**After `apply`, which is the whole reason it is a second event**, so the\nstate is on the element by the time a handler reads it. Not cancelable:\nthe decision was taken by the event before this one, and two refusable\nevents for one transition are two answers to one question.",
62216
+ "inheritedFrom": {
62217
+ "name": "MixinControllerActive",
62218
+ "module": "src/mixins/mixin-controller-active/mixin-controller-active.ts"
62219
+ }
62220
+ },
62221
+ {
62222
+ "kind": "method",
62223
+ "name": "resolveActive",
62224
+ "privacy": "protected",
62225
+ "return": {
62226
+ "type": {
62227
+ "text": "Item | undefined"
62228
+ }
62229
+ },
62230
+ "parameters": [
62231
+ {
62232
+ "name": "items",
62233
+ "type": {
62234
+ "text": "Item[]"
62235
+ }
62236
+ }
62237
+ ],
62238
+ "description": "Which item is current, given what there is to choose from.\n\nThe first enabled one when `active` names nothing, which is a set before\nits consumer has chosen and a set whose current item has just been\nremoved. Disabled items are skipped in the fallback but not in the match:\na consumer who names a disabled item meant it, and quietly moving to\nanother would be the component overruling them.",
62239
+ "inheritedFrom": {
62240
+ "name": "MixinControllerActive",
62241
+ "module": "src/mixins/mixin-controller-active/mixin-controller-active.ts"
62242
+ }
62243
+ },
62244
+ {
62245
+ "kind": "field",
62246
+ "name": "countLabel",
62247
+ "type": {
62248
+ "text": "string"
62249
+ },
62250
+ "default": "'{count} notes'",
62251
+ "description": "What the list says of a note's count, with `{count}`.",
62252
+ "attribute": "count-label",
62253
+ "inheritedFrom": {
62254
+ "name": "HelixHeadlessGraph",
62255
+ "module": "src/graph/root/graph-root.ts"
62256
+ }
62257
+ },
62258
+ {
62259
+ "kind": "field",
62260
+ "name": "depth",
62261
+ "type": {
62262
+ "text": "number | undefined"
62263
+ },
62264
+ "description": "How many links from the selected note to show, for its local graph. Unset\nshows every note. The list holds what the drawing shows.",
62265
+ "attribute": "depth",
62266
+ "inheritedFrom": {
62267
+ "name": "HelixHeadlessGraph",
62268
+ "module": "src/graph/root/graph-root.ts"
62269
+ }
62270
+ },
62271
+ {
62272
+ "kind": "field",
62273
+ "name": "label",
62274
+ "type": {
62275
+ "text": "string"
62276
+ },
62277
+ "default": "''",
62278
+ "description": "The graph's name, read by screen readers, such as \"Research notes\".\nRequired.",
62279
+ "attribute": "label",
62280
+ "inheritedFrom": {
62281
+ "name": "HelixHeadlessGraph",
62282
+ "module": "src/graph/root/graph-root.ts"
62283
+ }
62284
+ },
62285
+ {
62286
+ "kind": "field",
62287
+ "name": "linkedBothLabel",
62288
+ "type": {
62289
+ "text": "string"
62290
+ },
62291
+ "default": "'Linked both ways with {note}'",
62292
+ "description": "How a note linked both to and from the selected one is described, with `{note}`.",
62293
+ "attribute": "linked-both-label",
62294
+ "inheritedFrom": {
62295
+ "name": "HelixHeadlessGraph",
62296
+ "module": "src/graph/root/graph-root.ts"
62297
+ }
62298
+ },
62299
+ {
62300
+ "kind": "field",
62301
+ "name": "linkedFromLabel",
62302
+ "type": {
62303
+ "text": "string"
62304
+ },
62305
+ "default": "'Linked from {note}'",
62306
+ "description": "How a note the selected one links to is described, with `{note}`, the selected note's name.",
62307
+ "attribute": "linked-from-label",
62308
+ "inheritedFrom": {
62309
+ "name": "HelixHeadlessGraph",
62310
+ "module": "src/graph/root/graph-root.ts"
62311
+ }
62312
+ },
62313
+ {
62314
+ "kind": "field",
62315
+ "name": "links",
62316
+ "type": {
62317
+ "text": "readonly GraphLink[]"
62318
+ },
62319
+ "default": "[]",
62320
+ "description": "The links between notes, each from `source` to `target`. A property, never an attribute.",
62321
+ "inheritedFrom": {
62322
+ "name": "HelixHeadlessGraph",
62323
+ "module": "src/graph/root/graph-root.ts"
62324
+ }
62325
+ },
62326
+ {
62327
+ "kind": "field",
62328
+ "name": "linksToLabel",
62329
+ "type": {
62330
+ "text": "string"
62331
+ },
62332
+ "default": "'Links to {note}'",
62333
+ "description": "How a note that links to the selected one is described, with `{note}`.",
62334
+ "attribute": "links-to-label",
62335
+ "inheritedFrom": {
62336
+ "name": "HelixHeadlessGraph",
62337
+ "module": "src/graph/root/graph-root.ts"
62338
+ }
62339
+ },
62340
+ {
62341
+ "kind": "field",
62342
+ "name": "nodes",
62343
+ "type": {
62344
+ "text": "readonly GraphNode[]"
62345
+ },
62346
+ "default": "[]",
62347
+ "description": "The notes. A property, never an attribute.",
62348
+ "inheritedFrom": {
62349
+ "name": "HelixHeadlessGraph",
62350
+ "module": "src/graph/root/graph-root.ts"
62351
+ }
62352
+ },
62353
+ {
62354
+ "kind": "field",
62355
+ "name": "notesLabel",
62356
+ "type": {
62357
+ "text": "string"
62358
+ },
62359
+ "default": "'Notes'",
62360
+ "description": "The list's name, read by screen readers.",
62361
+ "attribute": "notes-label",
62362
+ "inheritedFrom": {
62363
+ "name": "HelixHeadlessGraph",
62364
+ "module": "src/graph/root/graph-root.ts"
62365
+ }
62366
+ },
62367
+ {
62368
+ "kind": "field",
62369
+ "name": "searchLabel",
62370
+ "type": {
62371
+ "text": "string"
62372
+ },
62373
+ "default": "'Find a note'",
62374
+ "description": "The search field's name.",
62375
+ "attribute": "search-label",
62376
+ "inheritedFrom": {
62377
+ "name": "HelixHeadlessGraph",
62378
+ "module": "src/graph/root/graph-root.ts"
62379
+ }
62380
+ },
62381
+ {
62382
+ "kind": "field",
62383
+ "name": "selectedLabel",
62384
+ "type": {
62385
+ "text": "string"
62386
+ },
62387
+ "default": "'Selected'",
62388
+ "description": "How the selected note is described in the list.",
62389
+ "attribute": "selected-label",
62390
+ "inheritedFrom": {
62391
+ "name": "HelixHeadlessGraph",
62392
+ "module": "src/graph/root/graph-root.ts"
62393
+ }
62394
+ },
62395
+ {
62396
+ "kind": "field",
62397
+ "name": "query",
62398
+ "type": {
62399
+ "text": "string"
62400
+ },
62401
+ "privacy": "private",
62402
+ "default": "''",
62403
+ "description": "What the search field holds.",
62404
+ "inheritedFrom": {
62405
+ "name": "HelixHeadlessGraph",
62406
+ "module": "src/graph/root/graph-root.ts"
62407
+ }
62408
+ },
62409
+ {
62410
+ "kind": "field",
62411
+ "name": "cursor",
62412
+ "type": {
62413
+ "text": "number"
62414
+ },
62415
+ "privacy": "private",
62416
+ "default": "0",
62417
+ "description": "The row the keyboard is on, as an index into the list.",
62418
+ "inheritedFrom": {
62419
+ "name": "HelixHeadlessGraph",
62420
+ "module": "src/graph/root/graph-root.ts"
62421
+ }
62422
+ },
62423
+ {
62424
+ "kind": "field",
62425
+ "name": "adjacency",
62426
+ "type": {
62427
+ "text": "Adjacency"
62428
+ },
62429
+ "privacy": "private",
62430
+ "default": "new Map()",
62431
+ "description": "Which notes link to and from each, read again when `links` changes.",
62432
+ "inheritedFrom": {
62433
+ "name": "HelixHeadlessGraph",
62434
+ "module": "src/graph/root/graph-root.ts"
62435
+ }
62436
+ },
62437
+ {
62438
+ "kind": "field",
62439
+ "name": "sorted",
62440
+ "type": {
62441
+ "text": "GraphNode[]"
62442
+ },
62443
+ "privacy": "private",
62444
+ "default": "[]",
62445
+ "description": "The notes in the order of their names, read again when `nodes` changes.",
62446
+ "inheritedFrom": {
62447
+ "name": "HelixHeadlessGraph",
62448
+ "module": "src/graph/root/graph-root.ts"
62449
+ }
62450
+ },
62451
+ {
62452
+ "kind": "field",
62453
+ "name": "entries",
62454
+ "type": {
62455
+ "text": "Entry[]"
62456
+ },
62457
+ "privacy": "private",
62458
+ "default": "[]",
62459
+ "description": "The list's rows, read again when anything they come from changes.",
62460
+ "inheritedFrom": {
62461
+ "name": "HelixHeadlessGraph",
62462
+ "module": "src/graph/root/graph-root.ts"
62463
+ }
62464
+ },
62465
+ {
62466
+ "kind": "field",
62467
+ "name": "kept",
62468
+ "type": {
62469
+ "text": "Set<string> | undefined"
62470
+ },
62471
+ "privacy": "private",
62472
+ "description": "The notes the local graph keeps, or every note where there is no `depth`.",
62473
+ "inheritedFrom": {
62474
+ "name": "HelixHeadlessGraph",
62475
+ "module": "src/graph/root/graph-root.ts"
62476
+ }
62477
+ },
62478
+ {
62479
+ "kind": "field",
62480
+ "name": "whole",
62481
+ "type": {
62482
+ "text": "boolean"
62483
+ },
62484
+ "privacy": "private",
62485
+ "default": "false",
62486
+ "description": "Whether the graph has been drawn whole, which `drawn()` says.",
62487
+ "inheritedFrom": {
62488
+ "name": "HelixHeadlessGraph",
62489
+ "module": "src/graph/root/graph-root.ts"
62490
+ }
62491
+ },
62492
+ {
62493
+ "kind": "field",
62494
+ "name": "said",
62495
+ "type": {
62496
+ "text": "string"
62497
+ },
62498
+ "privacy": "private",
62499
+ "default": "''",
62500
+ "description": "How many notes there were when the count was last said.",
62501
+ "inheritedFrom": {
62502
+ "name": "HelixHeadlessGraph",
62503
+ "module": "src/graph/root/graph-root.ts"
62504
+ }
62505
+ },
62506
+ {
62507
+ "kind": "field",
62508
+ "name": "virtualize",
62509
+ "privacy": "private",
62510
+ "readonly": true,
62511
+ "default": "new VirtualizeController(this, { container: () => this.partNamed('list'), count: () => this.entries.length, estimate: () => 32, rows: () => [...(this.renderRoot.querySelectorAll?.('[data-index]') ?? [])].map((element) => ({ element: element as HTMLElement, index: Number((element as HTMLElement).dataset.index), })), })",
62512
+ "inheritedFrom": {
62513
+ "name": "HelixHeadlessGraph",
62514
+ "module": "src/graph/root/graph-root.ts"
62515
+ }
62516
+ },
62517
+ {
62518
+ "kind": "field",
62519
+ "name": "ready",
62520
+ "type": {
62521
+ "text": "boolean"
62522
+ },
62523
+ "description": "Whether the graph has been drawn whole. For code that runs after `helix-graph-ready`.",
62524
+ "readonly": true,
62525
+ "inheritedFrom": {
62526
+ "name": "HelixHeadlessGraph",
62527
+ "module": "src/graph/root/graph-root.ts"
62528
+ }
62529
+ },
62530
+ {
62531
+ "kind": "method",
62532
+ "name": "drawn",
62533
+ "return": {
62534
+ "type": {
62535
+ "text": "void"
62536
+ }
62537
+ },
62538
+ "parameters": [
62539
+ {
62540
+ "name": "whole",
62541
+ "default": "true"
62542
+ }
62543
+ ],
62544
+ "description": "Says the graph has been drawn whole, or with `false`, that it no longer\nis. Call it when the renderer's layout has settled and the graph is\nfinished. The first call after\nthe graph was not drawn sends `helix-graph-ready` and turns on\n`:state(ready)`.",
62545
+ "type": {
62546
+ "text": "drawn(whole = true) => void"
62547
+ },
62548
+ "inheritedFrom": {
62549
+ "name": "HelixHeadlessGraph",
62550
+ "module": "src/graph/root/graph-root.ts"
62551
+ }
62552
+ },
62553
+ {
62554
+ "kind": "method",
62555
+ "name": "countText",
62556
+ "privacy": "private",
62557
+ "return": {
62558
+ "type": {
62559
+ "text": "string"
62560
+ }
62561
+ },
62562
+ "description": "How many notes the list holds, in the page's numbers.",
62563
+ "inheritedFrom": {
62564
+ "name": "HelixHeadlessGraph",
62565
+ "module": "src/graph/root/graph-root.ts"
62566
+ }
62567
+ },
62568
+ {
62569
+ "kind": "method",
62570
+ "name": "relationText",
62571
+ "privacy": "private",
62572
+ "return": {
62573
+ "type": {
62574
+ "text": "string"
62575
+ }
62576
+ },
62577
+ "parameters": [
62578
+ {
62579
+ "name": "entry",
62580
+ "type": {
62581
+ "text": "Entry"
62582
+ }
62583
+ }
62584
+ ],
62585
+ "description": "How a row stands to the selected note, in words, or nothing where it does not.",
62586
+ "inheritedFrom": {
62587
+ "name": "HelixHeadlessGraph",
62588
+ "module": "src/graph/root/graph-root.ts"
62589
+ }
62590
+ },
62591
+ {
62592
+ "kind": "method",
62593
+ "name": "choose",
62594
+ "privacy": "private",
62595
+ "return": {
62596
+ "type": {
62597
+ "text": "void"
62598
+ }
62599
+ },
62600
+ "parameters": [
62601
+ {
62602
+ "name": "index",
62603
+ "type": {
62604
+ "text": "number"
62605
+ }
62606
+ }
62607
+ ],
62608
+ "description": "Selects the note a row names, through the request a page can refuse.",
62609
+ "inheritedFrom": {
62610
+ "name": "HelixHeadlessGraph",
62611
+ "module": "src/graph/root/graph-root.ts"
62612
+ }
62613
+ },
62614
+ {
62615
+ "kind": "method",
62616
+ "name": "moveTo",
62617
+ "privacy": "private",
62618
+ "return": {
62619
+ "type": {
62620
+ "text": "void"
62621
+ }
62622
+ },
62623
+ "parameters": [
62624
+ {
62625
+ "name": "index",
62626
+ "type": {
62627
+ "text": "number"
62628
+ }
62629
+ }
62630
+ ],
62631
+ "description": "Moves the keyboard to a row, and the list to show it.\n\n**Scrolled by the row's own box where it is drawn, and by the estimate\nwhere it is not**, so a jump to the end of ten thousand notes lands there\nand the row is drawn by the update the scroll asks for.",
62632
+ "inheritedFrom": {
62633
+ "name": "HelixHeadlessGraph",
62634
+ "module": "src/graph/root/graph-root.ts"
62635
+ }
62636
+ },
62637
+ {
62638
+ "kind": "field",
62639
+ "name": "handleListKeydown",
62640
+ "privacy": "private",
62641
+ "readonly": true,
62642
+ "description": "The keys in the list. **Kept from the frame**, whose arrows pan the\ndrawing: a reader moving through the list was moving the graph under it.",
62643
+ "inheritedFrom": {
62644
+ "name": "HelixHeadlessGraph",
62645
+ "module": "src/graph/root/graph-root.ts"
62646
+ }
62647
+ },
62648
+ {
62649
+ "kind": "field",
62650
+ "name": "handleSearchKeydown",
62651
+ "privacy": "private",
62652
+ "readonly": true,
62653
+ "description": "The search field's keys, which belong to the field and never pan the\ngraph. Escape empties a search that has words in it, and passes through\nan empty one to whatever the page does with it.",
62654
+ "inheritedFrom": {
62655
+ "name": "HelixHeadlessGraph",
62656
+ "module": "src/graph/root/graph-root.ts"
62657
+ }
62658
+ },
62659
+ {
62660
+ "kind": "field",
62661
+ "name": "handleSearch",
62662
+ "privacy": "private",
62663
+ "readonly": true,
62664
+ "inheritedFrom": {
62665
+ "name": "HelixHeadlessGraph",
62666
+ "module": "src/graph/root/graph-root.ts"
62667
+ }
62668
+ },
62669
+ {
62670
+ "kind": "method",
62671
+ "name": "renderFilterIcon",
62672
+ "privacy": "protected",
62673
+ "return": {
62674
+ "type": {
62675
+ "text": "TemplateResult"
62676
+ }
62677
+ },
62678
+ "description": "The mark in the search field, behind a seam: a slot for the page, and a\nmethod for the tier above, as the listbox's filter has.",
62679
+ "inheritedFrom": {
62680
+ "name": "HelixHeadlessGraph",
62681
+ "module": "src/graph/root/graph-root.ts"
62682
+ }
62683
+ },
62684
+ {
62685
+ "kind": "method",
62686
+ "name": "renderRows",
62687
+ "privacy": "private",
62688
+ "return": {
62689
+ "type": {
62690
+ "text": "TemplateResult[]"
62691
+ }
62692
+ },
62693
+ "inheritedFrom": {
62694
+ "name": "HelixHeadlessGraph",
62695
+ "module": "src/graph/root/graph-root.ts"
62696
+ }
62697
+ },
62698
+ {
62699
+ "kind": "field",
62700
+ "name": "tier",
62701
+ "type": {
62702
+ "text": "string"
62703
+ },
62704
+ "static": true,
62705
+ "default": "'helix-headless-'",
62706
+ "description": "The prefix this tier registers its elements under.\n\n**A component that renders another renders its own tier's version of it**,\nso `helix-headless-pagination-size` composes `helix-headless-select` and\n`helix-pagination-size` composes `helix-select`. One template says\n`${this.tag('select')}` and each tier answers with its own name.\n\n**The public tag may not be the composed one, in either tier.** Using it\ncosts three things: the name means two different things depending on what a\nconsumer imported, the headless tier composes an element it does not ship,\nand the composition cannot be tested there at all, because there is no\n`helix-select` on that tier to test it against.\n\n**A prefix rather than an override per composition**, which was the first\nplan and does not compile. An override re-renders the fragment from the\nsubclass, and the fragment reads members the base keeps private:\n`PaginationSize` alone would have had to widen `options`, `current` and\n`handleChange` to `protected` so a subclass could say the same thing again.\nSixteen families of that is a lot of encapsulation spent on saying one\nword differently.",
62707
+ "inheritedFrom": {
62708
+ "name": "HelixElement",
62709
+ "module": "src/helix-element/helix-element.ts"
62710
+ }
62711
+ },
62712
+ {
62713
+ "kind": "method",
62714
+ "name": "tag",
62715
+ "privacy": "protected",
62716
+ "return": {
62717
+ "type": {
62718
+ "text": "StaticValue"
62719
+ }
62720
+ },
62721
+ "parameters": [
62722
+ {
62723
+ "name": "name",
62724
+ "type": {
62725
+ "text": "string"
62726
+ }
62727
+ }
62728
+ ],
62729
+ "description": "One composed tag, as a static value a template can interpolate.\n\n`unsafeStatic` is safe by construction: the name is a literal in our own\nsource and the prefix is one of two strings this class defines. Called per\nrender and not cached, which costs nothing, because `static-html` keys its\ntemplate cache on the joined string rather than on the object.",
62730
+ "inheritedFrom": {
62731
+ "name": "HelixElement",
62732
+ "module": "src/helix-element/helix-element.ts"
62733
+ }
62734
+ },
62735
+ {
62736
+ "kind": "method",
62737
+ "name": "partNamed",
62738
+ "privacy": "protected",
62739
+ "return": {
62740
+ "type": {
62741
+ "text": "T | null"
62742
+ }
62743
+ },
62744
+ "parameters": [
62745
+ {
62746
+ "name": "name",
62747
+ "type": {
62748
+ "text": "string"
62749
+ }
62750
+ }
62751
+ ],
62752
+ "description": "One of this element's own parts, by name, or null where it is not rendered.\n\nNot `part`, which every element already has: `Element.part` is the\n`DOMTokenList` of the names the element itself carries, and a method under\nthat name is a type error on every subclass.\n\n**One guard for every lookup.** Lit's server shim has no `querySelector`\non the render root, so a lookup reached during a server render, from a\ngetter a template reads or from `willUpdate`, throws there and nowhere\nelse. Four spellings of the same guard had grown across the library, and\na fifth site with none. Null on the server, which is what the rest of the\ncode already treats a part that has not rendered as.\n\n**`~=` and not `=`.** A part drawn in a state carries a second name while\nthe state holds, `part=\"page page-current\"`, and an exact match stops\nfinding it for exactly as long as it is the one that matters.\n\n`helix component`'s `selectors` reads these calls the way it reads a\n`querySelector('[part=\"x\"]')`, so a name nothing renders is a finding\nrather than a null an optional chain swallows.",
62753
+ "inheritedFrom": {
62754
+ "name": "HelixElement",
62755
+ "module": "src/helix-element/helix-element.ts"
62756
+ }
62757
+ },
62758
+ {
62759
+ "kind": "field",
62760
+ "name": "internals",
62761
+ "type": {
62762
+ "text": "ElementInternals"
62763
+ },
62764
+ "privacy": "protected",
62765
+ "readonly": true,
62766
+ "description": "The element's semantics, set without touching the DOM.\n\n`ElementInternals` sets the implicit role, which an author's own `role`\nattribute still overrides, and it writes no attribute. Setting `role` on the\nhost directly would: that is an attribute the element gives itself after it\nupgrades, which a React consumer's server markup never had, and hydration\nreports it as a mismatch.\n\nAvailable during server rendering. Lit's shim implements `attachInternals`,\nso nothing here needs a guard.",
62767
+ "inheritedFrom": {
62768
+ "name": "HelixElement",
62769
+ "module": "src/helix-element/helix-element.ts"
62770
+ }
62771
+ },
62772
+ {
62773
+ "kind": "method",
62774
+ "name": "toggleState",
62775
+ "privacy": "protected",
62776
+ "return": {
62777
+ "type": {
62778
+ "text": "void"
62779
+ }
62780
+ },
62781
+ "parameters": [
62782
+ {
62783
+ "name": "name",
62784
+ "type": {
62785
+ "text": "string"
62786
+ }
62787
+ },
62788
+ {
62789
+ "name": "on",
62790
+ "type": {
62791
+ "text": "boolean"
62792
+ }
62793
+ }
62794
+ ],
62795
+ "description": "Records a boolean fact about this element as a custom state.\n\n**The host belongs to whoever rendered it, and a component's own\nbookkeeping may not be kept there.** An attribute written on the first\nupdate is markup a consumer's server never sent, so a React consumer\nhydrates a DOM that has gained attributes since and reports a mismatch it\nwill not patch up. A custom state is not in the DOM at all: it carries the\nfact to a stylesheet through `:state()` and leaves the markup alone, so the\nserver's output and the client's agree by construction.\n\n`SETTLED` carries the long version of that argument; `checked`, `open`,\n`invalid` and `has-label` are recorded the same way, each of them a state a\n`default-*` attribute resolves before React reaches the node.\n\n**Deferring the definitions is not a fix and could not be.** Importing them\nfrom an effect so the upgrades fall the other side of hydration works only\nwhile hydration is one pass: anything that splits it, a streamed segment or\na suspended boundary, puts an upgrade back inside the window. Timing cannot\nbe the guarantee when the fact is kept somewhere React reconciles.\n\nFeature-tested rather than assumed, the way `hostAria` tests element\nreferences. An engine without `CustomStateSet` records nothing and keeps\nwhatever the resting rule draws, which is the safe direction to fail.\n\n**The engines the test is for are browsers**: Safari below 17.4 and Firefox\nbelow 126, where the write is a `TypeError`, so a component bypassing this\nfails to render rather than rendering without whatever the state draws.\nLit's server shim sets `states`, so the guard passes there and records a\nstate nothing reads, which is harmless.",
62796
+ "inheritedFrom": {
62797
+ "name": "HelixElement",
62798
+ "module": "src/helix-element/helix-element.ts"
62799
+ }
62800
+ },
62801
+ {
62802
+ "kind": "field",
62803
+ "name": "whenSettled",
62804
+ "type": {
62805
+ "text": "Promise<void>"
62806
+ },
62807
+ "readonly": true,
62808
+ "description": "Resolves a frame after the first update, when transitions are switched on.\n\n**Named `whenSettled` because `settled` is taken four times over**, by\nImage, Splitter and both color controls, none of them about transitions. A\nbase class takes the name every subclass then cannot use.\n\n**The state it reports cannot be watched, which is why this exists.** A\ncustom state is deliberately not in the DOM, so there is no\n`MutationObserver` equivalent for `ElementInternals.states`. Await this\ninstead.\n\nSeparate from `updateComplete`, which resolves in the microtask checkpoint\nthe suppression is still active in. That is the distinction `readyToMove`\nin `@fusion.dev/helix-testing` is written around.\n\nIt never resolves where `requestAnimationFrame` never fires, which is a\nserver, a hidden tab, and happy-dom. Callers that must not hang there race\nit against a timeout, as the happy-dom harness's `readyToMove` does. The\nbrowser harness's awaits it alone: a browser always runs the frame, and a\ntimer beside it was a bet on how long one takes, which a busy run lost.",
62809
+ "default": "new Promise<void>((resolve) => { this.resolveSettled = resolve })",
62810
+ "inheritedFrom": {
62811
+ "name": "HelixElement",
62812
+ "module": "src/helix-element/helix-element.ts"
62813
+ }
62814
+ },
62815
+ {
62816
+ "kind": "field",
62817
+ "name": "resolveSettled",
62818
+ "type": {
62819
+ "text": "() => void"
62820
+ },
62821
+ "privacy": "private",
62822
+ "description": "Resolves `whenSettled`, once, from the frame that records the state.",
62823
+ "inheritedFrom": {
62824
+ "name": "HelixElement",
62825
+ "module": "src/helix-element/helix-element.ts"
62826
+ }
62827
+ },
62828
+ {
62829
+ "kind": "field",
62830
+ "name": "fromServer",
62831
+ "type": {
62832
+ "text": "boolean"
62833
+ },
62834
+ "privacy": "private",
62835
+ "default": "false",
62836
+ "description": "Whether the shadow root was a server's, parsed from declarative shadow DOM.",
62837
+ "inheritedFrom": {
62838
+ "name": "HelixElement",
62839
+ "module": "src/helix-element/helix-element.ts"
62840
+ }
62841
+ },
62842
+ {
62843
+ "kind": "field",
62844
+ "name": "hydrating",
62845
+ "type": {
62846
+ "text": "boolean"
62847
+ },
62848
+ "privacy": "protected",
62849
+ "description": "Whether this update is hydrating a server's markup, and so has to render\nexactly what the server rendered.\n\n**Lit hydrates by assuming the markup already shows the first render.** A\nvalue that differs is recorded and never written, so the page keeps the\nserver's, and a template that differs throws. The server has no children,\nso anything a component reads from its children waits for the update after\nhydration, which `finishHydration` asks for. Without a server's markup the\nfirst render reads them and there is one render.",
62850
+ "readonly": true,
62851
+ "inheritedFrom": {
62852
+ "name": "HelixElement",
62853
+ "module": "src/helix-element/helix-element.ts"
62854
+ }
62855
+ },
62856
+ {
62857
+ "kind": "field",
62858
+ "name": "serverRendered",
62859
+ "type": {
62860
+ "text": "boolean"
62861
+ },
62862
+ "privacy": "protected",
62863
+ "description": "Whether this element hydrated a server's markup rather than rendering its own.\n\nFor what happened before hydration and cannot be heard after it: an image\nthe parser fetched fires `load` or `error` before any listener exists, so a\ncomponent asks the image instead, once, when this is true.",
62864
+ "readonly": true,
62865
+ "inheritedFrom": {
62866
+ "name": "HelixElement",
62867
+ "module": "src/helix-element/helix-element.ts"
62868
+ }
62869
+ },
62870
+ {
62871
+ "kind": "method",
62872
+ "name": "finishHydration",
62873
+ "privacy": "protected",
62874
+ "return": {
62875
+ "type": {
62876
+ "text": "void"
62877
+ }
62878
+ },
62879
+ "description": "Asks for the update a hydration put off, so the reads it skipped happen.\n\nCalled from `firstUpdated`, the end of the hydrating update. The render it\nschedules can only follow that one, which is the exception Lit's\nchange-in-update warning names, and it happens only on a page a server\nrendered.",
62880
+ "inheritedFrom": {
62881
+ "name": "HelixElement",
62882
+ "module": "src/helix-element/helix-element.ts"
62883
+ }
62884
+ },
62885
+ {
62886
+ "kind": "field",
62887
+ "name": "childrenKnown",
62888
+ "type": {
62889
+ "text": "boolean"
62890
+ },
62891
+ "privacy": "protected",
62892
+ "description": "Whether this render can know the children.\n\nA server cannot: its element shim carries attributes and no tree, so\n`children` is undefined there. A render hydrating what a server sent must\nnot, because it has to be the server's render. Anywhere else it can. A\ncomponent whose render depends on its children reads them through\n`knownChildren`, and treats \"not known\" as its own answer rather than as\n\"none\": a list that renders its empty state because nobody has looked yet is\nthe one thing an empty state must never do.",
62893
+ "readonly": true,
62894
+ "inheritedFrom": {
62895
+ "name": "HelixElement",
62896
+ "module": "src/helix-element/helix-element.ts"
62897
+ }
62898
+ },
62899
+ {
62900
+ "kind": "field",
62901
+ "name": "knownChildren",
62902
+ "type": {
62903
+ "text": "Element[]"
62904
+ },
62905
+ "privacy": "protected",
62906
+ "description": "The children a render may read: all of them where they are known, and none otherwise.",
62907
+ "readonly": true,
62908
+ "inheritedFrom": {
62909
+ "name": "HelixElement",
62910
+ "module": "src/helix-element/helix-element.ts"
62911
+ }
62912
+ },
62913
+ {
62914
+ "kind": "field",
62915
+ "name": "assignsByName",
62916
+ "type": {
62917
+ "text": "boolean"
62918
+ },
62919
+ "privacy": "protected",
62920
+ "description": "Whether this element's slots route by name although it asked to assign them\nby hand.\n\n**A declarative shadow root is always the by-name kind.** HTML has no way to\nask for manual assignment, so a component that assigns by hand and hydrates\na server's root gets one where `slot.assign()` does nothing, and its\nchildren land wherever their `slot` attribute sends them. The way through is\nto write that attribute, which is what `route` does. Only there: on a root\nthis element made, assignment stays manual and the consumer's markup is\nnever touched, which is what a React consumer's hydration requires.",
62921
+ "readonly": true,
62922
+ "inheritedFrom": {
62923
+ "name": "HelixElement",
62924
+ "module": "src/helix-element/helix-element.ts"
62925
+ }
62926
+ },
62927
+ {
62928
+ "kind": "method",
62929
+ "name": "route",
62930
+ "privacy": "protected",
62931
+ "return": {
62932
+ "type": {
62933
+ "text": "void"
62934
+ }
62935
+ },
62936
+ "parameters": [
62937
+ {
62938
+ "name": "child",
62939
+ "type": {
62940
+ "text": "Element"
62941
+ }
62942
+ },
62943
+ {
62944
+ "name": "name",
62945
+ "type": {
62946
+ "text": "string | undefined"
62947
+ }
62948
+ }
62949
+ ],
62950
+ "description": "Sends a child to a slot by name, on a root that routes by name.\n\n`undefined` is the default slot. Written only when it differs, so routing\nthe same child again on every update writes nothing.",
62951
+ "inheritedFrom": {
62952
+ "name": "HelixElement",
62953
+ "module": "src/helix-element/helix-element.ts"
62954
+ }
62955
+ },
62956
+ {
62957
+ "kind": "field",
62958
+ "name": "stopInner",
62959
+ "privacy": "protected",
62960
+ "readonly": true,
62961
+ "description": "Stops an inner control's own announcement at this element's boundary.\n\n**A composed control is one control to a consumer, and the natives had no\nequivalent of the stop the prefixed events already get.** `<helix-select>`\nrenders a `<helix-listbox>`, and both announce: the listbox dispatches\n`input` and `change` from its own host, `input` is composed by\nspecification, and a consumer listening on the select therefore heard one\nchoice twice. Measured before this existed, on the styled tier, one choice\non the inner listbox: select `input` twice and `change` three times,\ncombobox, date input, time input and color input twice each. `Command` was\nthe only one that was right, because it happened to reach for\n`stopImmediatePropagation` for a different reason.\n\nBound on the child in the parent's template, so it runs while the event is\nstill at the child and before it can cross. The guard is for the case where\na component binds this on itself: an element must never stop its own\nannouncement, which is the one it exists to make.\n\nThis is the same job the `helix-before-*` handlers do with their own\n`stopPropagation`, and it is separate rather than folded into them because\na consumer may legitimately refuse a request without the notification ever\nhappening: the two travel at different times and one can be absent.",
62962
+ "inheritedFrom": {
62963
+ "name": "HelixElement",
62964
+ "module": "src/helix-element/helix-element.ts"
62965
+ }
62966
+ },
62967
+ {
62968
+ "kind": "method",
62969
+ "name": "relayNativeEvent",
62970
+ "privacy": "protected",
62971
+ "return": {
62972
+ "type": {
62973
+ "text": "void"
62974
+ }
62975
+ },
62976
+ "parameters": [
62977
+ {
62978
+ "name": "event",
62979
+ "type": {
62980
+ "text": "Event"
62981
+ }
62982
+ },
62983
+ {
62984
+ "name": "init",
62985
+ "optional": true,
62986
+ "type": {
62987
+ "text": "EventInit"
62988
+ }
62989
+ }
62990
+ ],
62991
+ "description": "Re-emits a native event from the host, under its own name.\n\nA native event fired by an inner `<input>` or `<textarea>` is not composed,\nso it stops at the shadow boundary and a consumer listening on\n`<helix-input>` hears nothing. Re-dispatching it from the host is what\nmakes the component behave like the control it wraps.\n\nThe relayed event keeps the native name deliberately. `change` is `change`,\nwhich is what a consumer already knows to listen for, and it is what\nreaches React: its synthetic system claims `onChange` and wires it to that\nname, so a prefixed one would never arrive.\n\n`composed` is not forced. It defaults to the original event's own value, so\na relayed `change` stops at the next shadow boundary exactly as a native\none would. Pass it explicitly only where escaping is the intent, and say so\nwhere you do.",
62992
+ "inheritedFrom": {
62993
+ "name": "HelixElement",
62994
+ "module": "src/helix-element/helix-element.ts"
62995
+ }
62996
+ },
62997
+ {
62998
+ "kind": "method",
62999
+ "name": "finalizeStyles",
63000
+ "privacy": "protected",
63001
+ "static": true,
63002
+ "return": {
63003
+ "type": {
63004
+ "text": "CSSResultOrNative[]"
63005
+ }
63006
+ },
63007
+ "parameters": [
63008
+ {
63009
+ "name": "styles",
63010
+ "optional": true,
63011
+ "type": {
63012
+ "text": "CSSResultOrNative | CSSResultOrNative[]"
63013
+ }
63014
+ }
63015
+ ],
63016
+ "description": "Prepends the shadow-root reset to every subclass's styles, so no component\nhas to remember to include it.",
63017
+ "inheritedFrom": {
63018
+ "name": "HelixElement",
63019
+ "module": "src/helix-element/helix-element.ts"
63020
+ }
63021
+ }
63022
+ ],
63023
+ "superclass": {
63024
+ "name": "HelixHeadlessGraph",
63025
+ "package": "@fusion.dev/helix-headless/graph"
63026
+ },
63027
+ "summary": "A frame around a graph of notes drawn by another library, and the list that makes it readable.",
63028
+ "helix": {
63029
+ "category": "media",
63030
+ "since": "0.116.0",
63031
+ "status": "experimental",
63032
+ "documentation": "https://fusion.dev/helix/components/graph",
63033
+ "aliases": [
63034
+ "Knowledge graph",
63035
+ "Network",
63036
+ "Note graph",
63037
+ "Second brain"
63038
+ ],
63039
+ "tier": "styled",
63040
+ "group": "Graph",
63041
+ "part": "Root",
63042
+ "examples": [
63043
+ {
63044
+ "description": "A graph of linked notes, with the selected note's links and backlinks listed first.",
63045
+ "slug": "preview"
63046
+ }
63047
+ ],
63048
+ "source": "helix/styled/src/graph"
63049
+ },
63050
+ "tagName": "helix-graph",
63051
+ "customElement": true,
63052
+ "attributes": [
63053
+ {
63054
+ "name": "controls",
63055
+ "type": {
63056
+ "text": "string | undefined"
63057
+ },
63058
+ "description": "Which controls to show, as a list such as `pan zoom fullscreen`, or\n`none`. A family can add words of its own.\n\n**A list rather than a switch, because the overlap is not symmetric.** A\nsurface a consumer brings often has zoom controls of its own and almost\nnever has pan buttons, so a single switch would make them choose between\na duplicate and nothing.\n\n`none` draws none of them, which is the right answer where what was\nslotted already has controls a reader can find: what this argues for is\nthat *a* findable control exists, never that it is ours. The methods stay\npublic either way, so a consumer drawing their own chrome can still drive\nthe surface.\n\nAbsent is whatever the family rests at, which is this library's rule that\na resting value is an attribute's absence: zoom, the compass and\nfullscreen for a map, whose pan buttons a page asks for, and zoom and\nfullscreen for a board, which a reader drags and whose pad took a third\nof the frame. The\nstylesheet lays the cluster out by which buttons are in it rather than by\nthis attribute, so the two defaults need no rule each.",
63059
+ "fieldName": "controls",
63060
+ "inheritedFrom": {
63061
+ "name": "MixinViewport",
63062
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
63063
+ }
63064
+ },
63065
+ {
63066
+ "name": "controls-label",
63067
+ "type": {
63068
+ "text": "string | undefined"
63069
+ },
63070
+ "description": "The name of the group of controls, read by screen readers.\n\nAbsent is the family's own name for it, \"Map controls\" or \"Board\ncontrols\", which names what the controls drive rather than the\nmechanism. Written here to say it in another language, which every other\nstring this surface speaks already allowed and this one did not.",
63071
+ "fieldName": "controlsLabel",
63072
+ "inheritedFrom": {
63073
+ "name": "MixinViewport",
63074
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
63075
+ }
63076
+ },
63077
+ {
63078
+ "name": "controls-placement",
63079
+ "type": {
63080
+ "text": "'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | undefined"
63081
+ },
63082
+ "description": "Which corner the controls sit in.\n\n**Configurable because there is no safe default**, which is a collision\nrather than a taste: whatever a consumer slots may put its own controls\nin any corner, and every library that draws some made this a setting for\nthe same reason.\n\nLogical corners rather than left and right, so a right-to-left page moves\nthem without a consumer writing a second rule. Absent is the top end, a\nresting value being an attribute's absence: a default that reflected\nwould write an attribute onto every host that no server sent.",
63083
+ "fieldName": "controlsPlacement",
63084
+ "inheritedFrom": {
63085
+ "name": "MixinViewport",
63086
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
63087
+ }
63088
+ },
63089
+ {
63090
+ "name": "fullscreen-label",
63091
+ "type": {
63092
+ "text": "string"
63093
+ },
63094
+ "default": "'Fill the screen'",
63095
+ "description": "The fullscreen button's label.",
63096
+ "fieldName": "fullscreenLabel",
63097
+ "inheritedFrom": {
63098
+ "name": "MixinViewport",
63099
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
63100
+ }
63101
+ },
63102
+ {
63103
+ "name": "idle-delay",
63104
+ "type": {
63105
+ "text": "number"
63106
+ },
63107
+ "default": "0",
63108
+ "description": "How long, in milliseconds, before the header and footer hide when the user is inactive. `0` keeps them visible.\n\nZero keeps it up, which is the default: these controls are how a keyboard\nreader operates the surface, and chrome that hid itself by default would\nbe the component undoing its own argument. Set it for a display nobody\ndrives.",
63109
+ "fieldName": "idleDelay",
63110
+ "inheritedFrom": {
63111
+ "name": "MixinViewport",
63112
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
63113
+ }
63114
+ },
63115
+ {
63116
+ "name": "pan-down-label",
63117
+ "type": {
63118
+ "text": "string"
63119
+ },
63120
+ "default": "'Pan down'",
63121
+ "description": "The pan down button's label.\n\n**A label for each way rather than one with the way filled in**, which is\nwhat this was: `Pan {way}` filled in with `left`, so a page that said it\nin French read out \"Déplacer left\". The word for a direction is as much\nthe translator's as the word for panning, and a language can put it\nanywhere in the phrase.",
63122
+ "fieldName": "panDownLabel",
63123
+ "inheritedFrom": {
63124
+ "name": "MixinViewport",
63125
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
63126
+ }
63127
+ },
63128
+ {
63129
+ "name": "pan-left-label",
63130
+ "type": {
63131
+ "text": "string"
63132
+ },
63133
+ "default": "'Pan left'",
63134
+ "description": "The pan left button's label.",
63135
+ "fieldName": "panLeftLabel",
63136
+ "inheritedFrom": {
63137
+ "name": "MixinViewport",
63138
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
63139
+ }
63140
+ },
63141
+ {
63142
+ "name": "pan-right-label",
63143
+ "type": {
63144
+ "text": "string"
63145
+ },
63146
+ "default": "'Pan right'",
63147
+ "description": "The pan right button's label.",
63148
+ "fieldName": "panRightLabel",
63149
+ "inheritedFrom": {
63150
+ "name": "MixinViewport",
63151
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
63152
+ }
63153
+ },
63154
+ {
63155
+ "name": "pan-step",
63156
+ "type": {
63157
+ "text": "number"
63158
+ },
63159
+ "default": "0.25",
63160
+ "description": "How far one press pans the view, as a fraction of its size.\n\nA fraction rather than a distance, because this surface does not know the\nscale of what is inside it: a quarter of the viewport is the same gesture\nat any zoom, and a consumer who wants their own units multiplies by them.",
63161
+ "fieldName": "panStep",
63162
+ "inheritedFrom": {
63163
+ "name": "MixinViewport",
63164
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
63165
+ }
63166
+ },
63167
+ {
63168
+ "name": "pan-up-label",
63169
+ "type": {
63170
+ "text": "string"
63171
+ },
63172
+ "default": "'Pan up'",
63173
+ "description": "The pan up button's label.",
63174
+ "fieldName": "panUpLabel",
63175
+ "inheritedFrom": {
63176
+ "name": "MixinViewport",
63177
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
63178
+ }
63179
+ },
63180
+ {
63181
+ "name": "zoom-in-label",
63182
+ "type": {
63183
+ "text": "string"
63184
+ },
63185
+ "default": "'Zoom in'",
63186
+ "description": "The zoom in button's label.",
63187
+ "fieldName": "zoomInLabel",
63188
+ "inheritedFrom": {
63189
+ "name": "MixinViewport",
63190
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
63191
+ }
63192
+ },
63193
+ {
63194
+ "name": "zoom-out-label",
63195
+ "type": {
63196
+ "text": "string"
63197
+ },
63198
+ "default": "'Zoom out'",
63199
+ "description": "The zoom out button's label.",
63200
+ "fieldName": "zoomOutLabel",
63201
+ "inheritedFrom": {
63202
+ "name": "MixinViewport",
63203
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
63204
+ }
63205
+ },
63206
+ {
63207
+ "name": "active",
63208
+ "type": {
63209
+ "text": "string"
63210
+ },
63211
+ "description": "The `value` of the current item.\n\nNot `option.active`, which is the option the keyboard is on: that is a\ndifferent question from which one is chosen.\n\nWriting always applies, so `<helix-tabs active=\"one\">` starts on that\ntab, and `default-active` is how markup says where to start without\nnaming the current one.",
63212
+ "fieldName": "active",
63213
+ "inheritedFrom": {
63214
+ "name": "MixinControllerActive",
63215
+ "module": "src/mixins/mixin-controller-active/mixin-controller-active.ts"
63216
+ }
63217
+ },
63218
+ {
63219
+ "name": "default-active",
63220
+ "type": {
63221
+ "text": "string"
63222
+ },
63223
+ "default": "''",
63224
+ "description": "The `value` of the item declared current in markup.\n\nIgnored once `active` is written.",
63225
+ "fieldName": "defaultActive",
63226
+ "inheritedFrom": {
63227
+ "name": "MixinControllerActive",
63228
+ "module": "src/mixins/mixin-controller-active/mixin-controller-active.ts"
63229
+ }
63230
+ },
63231
+ {
63232
+ "name": "count-label",
63233
+ "type": {
63234
+ "text": "string"
63235
+ },
63236
+ "default": "'{count} notes'",
63237
+ "description": "What the list says of a note's count, with `{count}`.",
63238
+ "fieldName": "countLabel",
63239
+ "inheritedFrom": {
63240
+ "name": "HelixHeadlessGraph",
63241
+ "module": "src/graph/root/graph-root.ts"
63242
+ }
63243
+ },
63244
+ {
63245
+ "name": "depth",
63246
+ "type": {
63247
+ "text": "number | undefined"
63248
+ },
63249
+ "description": "How many links from the selected note to show, for its local graph. Unset\nshows every note. The list holds what the drawing shows.",
63250
+ "fieldName": "depth",
63251
+ "inheritedFrom": {
63252
+ "name": "HelixHeadlessGraph",
63253
+ "module": "src/graph/root/graph-root.ts"
63254
+ }
63255
+ },
63256
+ {
63257
+ "name": "label",
63258
+ "type": {
63259
+ "text": "string"
63260
+ },
63261
+ "default": "''",
63262
+ "description": "The graph's name, read by screen readers, such as \"Research notes\".\nRequired.",
63263
+ "fieldName": "label",
63264
+ "inheritedFrom": {
63265
+ "name": "HelixHeadlessGraph",
63266
+ "module": "src/graph/root/graph-root.ts"
63267
+ }
63268
+ },
63269
+ {
63270
+ "name": "linked-both-label",
63271
+ "type": {
63272
+ "text": "string"
63273
+ },
63274
+ "default": "'Linked both ways with {note}'",
63275
+ "description": "How a note linked both to and from the selected one is described, with `{note}`.",
63276
+ "fieldName": "linkedBothLabel",
63277
+ "inheritedFrom": {
63278
+ "name": "HelixHeadlessGraph",
63279
+ "module": "src/graph/root/graph-root.ts"
63280
+ }
63281
+ },
63282
+ {
63283
+ "name": "linked-from-label",
63284
+ "type": {
63285
+ "text": "string"
63286
+ },
63287
+ "default": "'Linked from {note}'",
63288
+ "description": "How a note the selected one links to is described, with `{note}`, the selected note's name.",
63289
+ "fieldName": "linkedFromLabel",
63290
+ "inheritedFrom": {
63291
+ "name": "HelixHeadlessGraph",
63292
+ "module": "src/graph/root/graph-root.ts"
63293
+ }
63294
+ },
63295
+ {
63296
+ "name": "links-to-label",
63297
+ "type": {
63298
+ "text": "string"
63299
+ },
63300
+ "default": "'Links to {note}'",
63301
+ "description": "How a note that links to the selected one is described, with `{note}`.",
63302
+ "fieldName": "linksToLabel",
63303
+ "inheritedFrom": {
63304
+ "name": "HelixHeadlessGraph",
63305
+ "module": "src/graph/root/graph-root.ts"
63306
+ }
63307
+ },
63308
+ {
63309
+ "name": "notes-label",
63310
+ "type": {
63311
+ "text": "string"
63312
+ },
63313
+ "default": "'Notes'",
63314
+ "description": "The list's name, read by screen readers.",
63315
+ "fieldName": "notesLabel",
63316
+ "inheritedFrom": {
63317
+ "name": "HelixHeadlessGraph",
63318
+ "module": "src/graph/root/graph-root.ts"
63319
+ }
63320
+ },
63321
+ {
63322
+ "name": "search-label",
63323
+ "type": {
63324
+ "text": "string"
63325
+ },
63326
+ "default": "'Find a note'",
63327
+ "description": "The search field's name.",
63328
+ "fieldName": "searchLabel",
63329
+ "inheritedFrom": {
63330
+ "name": "HelixHeadlessGraph",
63331
+ "module": "src/graph/root/graph-root.ts"
63332
+ }
63333
+ },
63334
+ {
63335
+ "name": "selected-label",
63336
+ "type": {
63337
+ "text": "string"
63338
+ },
63339
+ "default": "'Selected'",
63340
+ "description": "How the selected note is described in the list.",
63341
+ "fieldName": "selectedLabel",
63342
+ "inheritedFrom": {
63343
+ "name": "HelixHeadlessGraph",
63344
+ "module": "src/graph/root/graph-root.ts"
63345
+ }
63346
+ }
63347
+ ],
63348
+ "events": [
63349
+ {
63350
+ "type": {
63351
+ "text": "HelixActivateEvent"
63352
+ },
63353
+ "description": "A note was selected, in the list or in the drawing. The detail's `value` is its `id`.",
63354
+ "name": "helix-activate",
63355
+ "reactProp": "onhelix-activate",
63356
+ "inheritedFrom": {
63357
+ "name": "HelixHeadlessGraph",
63358
+ "module": "src/graph/root/graph-root.ts"
63359
+ }
63360
+ },
63361
+ {
63362
+ "type": {
63363
+ "text": "HelixBeforeActivateEvent"
63364
+ },
63365
+ "description": "A note is about to be selected. Cancelable: cancel it to keep the selection in your own state.",
63366
+ "name": "helix-before-activate",
63367
+ "reactProp": "onhelix-before-activate",
63368
+ "inheritedFrom": {
63369
+ "name": "HelixHeadlessGraph",
63370
+ "module": "src/graph/root/graph-root.ts"
63371
+ }
63372
+ },
63373
+ {
63374
+ "type": {
63375
+ "text": "HelixGraphPanEvent"
63376
+ },
63377
+ "description": "A pan button or arrow key was pressed. Move the drawing.",
63378
+ "name": "helix-graph-pan",
63379
+ "reactProp": "onhelix-graph-pan",
63380
+ "inheritedFrom": {
63381
+ "name": "HelixHeadlessGraph",
63382
+ "module": "src/graph/root/graph-root.ts"
63383
+ }
63384
+ },
63385
+ {
63386
+ "type": {
63387
+ "text": "HelixGraphReadyEvent"
63388
+ },
63389
+ "description": "The graph has been drawn whole, laid out and settled. Sent each time `drawn()` says it is drawn after it was not.",
63390
+ "name": "helix-graph-ready",
63391
+ "reactProp": "onhelix-graph-ready",
63392
+ "inheritedFrom": {
63393
+ "name": "HelixHeadlessGraph",
63394
+ "module": "src/graph/root/graph-root.ts"
63395
+ }
63396
+ },
63397
+ {
63398
+ "type": {
63399
+ "text": "HelixGraphZoomEvent"
63400
+ },
63401
+ "description": "A zoom button or key was pressed. Zoom the drawing.",
63402
+ "name": "helix-graph-zoom",
63403
+ "reactProp": "onhelix-graph-zoom",
63404
+ "inheritedFrom": {
63405
+ "name": "HelixHeadlessGraph",
63406
+ "module": "src/graph/root/graph-root.ts"
63407
+ }
63408
+ }
63409
+ ],
63410
+ "slots": [
63411
+ {
63412
+ "description": "The renderer's box, which the drawing is made in.",
63413
+ "name": "",
63414
+ "inheritedFrom": {
63415
+ "name": "HelixHeadlessGraph",
63416
+ "module": "src/graph/root/graph-root.ts"
63417
+ }
63418
+ },
63419
+ {
63420
+ "description": "The icon in the search field. Defaults to a magnifying glass.",
63421
+ "name": "filter-icon",
63422
+ "inheritedFrom": {
63423
+ "name": "HelixHeadlessGraph",
63424
+ "module": "src/graph/root/graph-root.ts"
63425
+ }
63426
+ },
63427
+ {
63428
+ "description": "Content below the graph.",
63429
+ "name": "footer",
63430
+ "inheritedFrom": {
63431
+ "name": "HelixHeadlessGraph",
63432
+ "module": "src/graph/root/graph-root.ts"
63433
+ }
63434
+ },
63435
+ {
63436
+ "description": "Content above the graph.",
63437
+ "name": "header",
63438
+ "inheritedFrom": {
63439
+ "name": "HelixHeadlessGraph",
63440
+ "module": "src/graph/root/graph-root.ts"
63441
+ }
63442
+ }
63443
+ ],
63444
+ "cssParts": [
63445
+ {
63446
+ "description": "The room the notes after those drawn would take, so the list scrolls its whole length.",
63447
+ "name": "after",
63448
+ "inheritedFrom": {
63449
+ "name": "HelixHeadlessGraph",
63450
+ "module": "src/graph/root/graph-root.ts"
63451
+ }
63452
+ },
63453
+ {
63454
+ "description": "The room the notes before those drawn would take.",
63455
+ "name": "before",
63456
+ "inheritedFrom": {
63457
+ "name": "HelixHeadlessGraph",
63458
+ "module": "src/graph/root/graph-root.ts"
63459
+ }
63460
+ },
63461
+ {
63462
+ "description": "The drawing beside the list, or above it where the frame is narrow.",
63463
+ "name": "body",
63464
+ "inheritedFrom": {
63465
+ "name": "HelixHeadlessGraph",
63466
+ "module": "src/graph/root/graph-root.ts"
63467
+ }
63468
+ },
63469
+ {
63470
+ "description": "The group the pan and zoom buttons sit in.",
63471
+ "name": "controls",
63472
+ "inheritedFrom": {
63473
+ "name": "HelixHeadlessGraph",
63474
+ "module": "src/graph/root/graph-root.ts"
63475
+ }
63476
+ },
63477
+ {
63478
+ "description": "How many notes the list holds, which a search narrows, at the end of the search bar.",
63479
+ "name": "count",
63480
+ "inheritedFrom": {
63481
+ "name": "HelixHeadlessGraph",
63482
+ "module": "src/graph/root/graph-root.ts"
63483
+ }
63484
+ },
63485
+ {
63486
+ "description": "The icon beside the search field.",
63487
+ "name": "filter-icon",
63488
+ "inheritedFrom": {
63489
+ "name": "HelixHeadlessGraph",
63490
+ "module": "src/graph/root/graph-root.ts"
63491
+ }
63492
+ },
63493
+ {
63494
+ "description": "The default icon beside the search field, shown when none is slotted.",
63495
+ "name": "filter-mark",
63496
+ "inheritedFrom": {
63497
+ "name": "HelixHeadlessGraph",
63498
+ "module": "src/graph/root/graph-root.ts"
63499
+ }
63500
+ },
63501
+ {
63502
+ "description": "The strip below the graph.",
63503
+ "name": "footer",
63504
+ "inheritedFrom": {
63505
+ "name": "HelixHeadlessGraph",
63506
+ "module": "src/graph/root/graph-root.ts"
63507
+ }
63508
+ },
63509
+ {
63510
+ "description": "The button that makes the graph fill the screen.",
63511
+ "name": "fullscreen",
63512
+ "inheritedFrom": {
63513
+ "name": "HelixHeadlessGraph",
63514
+ "module": "src/graph/root/graph-root.ts"
63515
+ }
63516
+ },
63517
+ {
63518
+ "description": "The strip above the graph.",
63519
+ "name": "header",
63520
+ "inheritedFrom": {
63521
+ "name": "HelixHeadlessGraph",
63522
+ "module": "src/graph/root/graph-root.ts"
63523
+ }
63524
+ },
63525
+ {
63526
+ "description": "The list of notes, which draws only the rows in view.",
63527
+ "name": "list",
63528
+ "inheritedFrom": {
63529
+ "name": "HelixHeadlessGraph",
63530
+ "module": "src/graph/root/graph-root.ts"
63531
+ }
63532
+ },
63533
+ {
63534
+ "description": "What screen readers hear when a search changes how many notes there are.",
63535
+ "name": "live",
63536
+ "inheritedFrom": {
63537
+ "name": "HelixHeadlessGraph",
63538
+ "module": "src/graph/root/graph-root.ts"
63539
+ }
63540
+ },
63541
+ {
63542
+ "description": "One note in the list.",
63543
+ "name": "note",
63544
+ "inheritedFrom": {
63545
+ "name": "HelixHeadlessGraph",
63546
+ "module": "src/graph/root/graph-root.ts"
63547
+ }
63548
+ },
63549
+ {
63550
+ "description": "The note the keyboard is on in the list.",
63551
+ "name": "note-cursor",
63552
+ "inheritedFrom": {
63553
+ "name": "HelixHeadlessGraph",
63554
+ "module": "src/graph/root/graph-root.ts"
63555
+ }
63556
+ },
63557
+ {
63558
+ "description": "A note linked to or from the selected one.",
63559
+ "name": "note-linked",
63560
+ "inheritedFrom": {
63561
+ "name": "HelixHeadlessGraph",
63562
+ "module": "src/graph/root/graph-root.ts"
63563
+ }
63564
+ },
63565
+ {
63566
+ "description": "A note's name in the list.",
63567
+ "name": "note-name",
63568
+ "inheritedFrom": {
63569
+ "name": "HelixHeadlessGraph",
63570
+ "module": "src/graph/root/graph-root.ts"
63571
+ }
63572
+ },
63573
+ {
63574
+ "description": "How a note stands to the selected one, such as \"Linked from Alpha\".",
63575
+ "name": "note-relation",
63576
+ "inheritedFrom": {
63577
+ "name": "HelixHeadlessGraph",
63578
+ "module": "src/graph/root/graph-root.ts"
63579
+ }
63580
+ },
63581
+ {
63582
+ "description": "The selected note, first in the list.",
63583
+ "name": "note-selected",
63584
+ "inheritedFrom": {
63585
+ "name": "HelixHeadlessGraph",
63586
+ "module": "src/graph/root/graph-root.ts"
63587
+ }
63588
+ },
63589
+ {
63590
+ "description": "The button that moves the graph down.",
63591
+ "name": "pan-down",
63592
+ "inheritedFrom": {
63593
+ "name": "HelixHeadlessGraph",
63594
+ "module": "src/graph/root/graph-root.ts"
63595
+ }
63596
+ },
63597
+ {
63598
+ "description": "The button that moves the graph toward the end of a line of text: right in English.",
63599
+ "name": "pan-end",
63600
+ "inheritedFrom": {
63601
+ "name": "HelixHeadlessGraph",
63602
+ "module": "src/graph/root/graph-root.ts"
63603
+ }
63604
+ },
63605
+ {
63606
+ "description": "The button that moves the graph toward the start of a line of text: left in English.",
63607
+ "name": "pan-start",
63608
+ "inheritedFrom": {
63609
+ "name": "HelixHeadlessGraph",
63610
+ "module": "src/graph/root/graph-root.ts"
63611
+ }
63612
+ },
63613
+ {
63614
+ "description": "The button that moves the graph up.",
63615
+ "name": "pan-up",
63616
+ "inheritedFrom": {
63617
+ "name": "HelixHeadlessGraph",
63618
+ "module": "src/graph/root/graph-root.ts"
63619
+ }
63620
+ },
63621
+ {
63622
+ "description": "The search field and the list, beside the drawing or below it.",
63623
+ "name": "panel",
63624
+ "inheritedFrom": {
63625
+ "name": "HelixHeadlessGraph",
63626
+ "module": "src/graph/root/graph-root.ts"
63627
+ }
63628
+ },
63629
+ {
63630
+ "description": "The frame: the drawing, its controls and the list.",
63631
+ "name": "region",
63632
+ "inheritedFrom": {
63633
+ "name": "HelixHeadlessGraph",
63634
+ "module": "src/graph/root/graph-root.ts"
63635
+ }
63636
+ },
63637
+ {
63638
+ "description": "The bar holding the icon, the search field and the count.",
63639
+ "name": "search",
63640
+ "inheritedFrom": {
63641
+ "name": "HelixHeadlessGraph",
63642
+ "module": "src/graph/root/graph-root.ts"
63643
+ }
63644
+ },
63645
+ {
63646
+ "description": "The field that finds a note by its name.",
63647
+ "name": "search-field",
63648
+ "inheritedFrom": {
63649
+ "name": "HelixHeadlessGraph",
63650
+ "module": "src/graph/root/graph-root.ts"
63651
+ }
63652
+ },
63653
+ {
63654
+ "description": "The drawing and its controls.",
63655
+ "name": "stage",
63656
+ "inheritedFrom": {
63657
+ "name": "HelixHeadlessGraph",
63658
+ "module": "src/graph/root/graph-root.ts"
63659
+ }
63660
+ },
63661
+ {
63662
+ "description": "The box the renderer draws in.",
63663
+ "name": "viewport",
63664
+ "inheritedFrom": {
63665
+ "name": "HelixHeadlessGraph",
63666
+ "module": "src/graph/root/graph-root.ts"
63667
+ }
63668
+ },
63669
+ {
63670
+ "description": "The zoom in button.",
63671
+ "name": "zoom-in",
63672
+ "inheritedFrom": {
63673
+ "name": "HelixHeadlessGraph",
63674
+ "module": "src/graph/root/graph-root.ts"
63675
+ }
63676
+ },
63677
+ {
63678
+ "description": "The zoom out button.",
63679
+ "name": "zoom-out",
63680
+ "inheritedFrom": {
63681
+ "name": "HelixHeadlessGraph",
63682
+ "module": "src/graph/root/graph-root.ts"
63683
+ }
63684
+ }
63685
+ ],
63686
+ "cssStates": [
63687
+ {
63688
+ "description": "The graph fills the screen.",
63689
+ "name": "fullscreen",
63690
+ "inheritedFrom": {
63691
+ "name": "HelixHeadlessGraph",
63692
+ "module": "src/graph/root/graph-root.ts"
63693
+ }
63694
+ },
63695
+ {
63696
+ "description": "The user has been still long enough for the header and footer to fade.",
63697
+ "name": "idle",
63698
+ "inheritedFrom": {
63699
+ "name": "HelixHeadlessGraph",
63700
+ "module": "src/graph/root/graph-root.ts"
63701
+ }
63702
+ },
63703
+ {
63704
+ "description": "The graph has been drawn whole, after `helix-graph-ready`.",
63705
+ "name": "ready",
63706
+ "inheritedFrom": {
63707
+ "name": "HelixHeadlessGraph",
63708
+ "module": "src/graph/root/graph-root.ts"
63709
+ }
63710
+ },
63711
+ {
63712
+ "description": "Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.",
63713
+ "name": "settled",
63714
+ "inheritedFrom": {
63715
+ "name": "HelixElement",
63716
+ "module": "src/helix-element/helix-element.ts"
63717
+ }
63718
+ }
63719
+ ],
63720
+ "modulePath": "src/graph/root/graph-root.ts",
63721
+ "definitionPath": "src/graph/root/graph-root.ts"
63722
+ }
63723
+ ],
63724
+ "exports": [
63725
+ {
63726
+ "kind": "js",
63727
+ "name": "HelixGraph",
63728
+ "declaration": {
63729
+ "name": "HelixGraph",
63730
+ "module": "src/graph/root/graph-root.ts"
63731
+ }
63732
+ },
63733
+ {
63734
+ "kind": "custom-element-definition",
63735
+ "name": "helix-graph",
63736
+ "declaration": {
63737
+ "name": "HelixGraph",
63738
+ "module": "src/graph/root/graph-root.ts"
63739
+ }
63740
+ }
63741
+ ]
63742
+ },
61524
63743
  {
61525
63744
  "kind": "javascript-module",
61526
63745
  "path": "src/grid/index.ts",
@@ -66520,6 +68739,14 @@
66520
68739
  "module": "src/format-date/index.js"
66521
68740
  }
66522
68741
  },
68742
+ {
68743
+ "kind": "js",
68744
+ "name": "*",
68745
+ "declaration": {
68746
+ "name": "*",
68747
+ "module": "src/graph/index.js"
68748
+ }
68749
+ },
66523
68750
  {
66524
68751
  "kind": "js",
66525
68752
  "name": "*",