@fusion.dev/helix 0.102.0 → 0.103.1
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 +127 -1
- package/dist/map/root/map-root.css.js +43 -6
- package/package.json +6 -6
- package/types/jsx.d.ts +176 -0
- package/types/vue.d.ts +51 -0
package/custom-elements.json
CHANGED
|
@@ -69361,6 +69361,34 @@
|
|
|
69361
69361
|
}
|
|
69362
69362
|
],
|
|
69363
69363
|
"members": [
|
|
69364
|
+
{
|
|
69365
|
+
"kind": "field",
|
|
69366
|
+
"name": "controls",
|
|
69367
|
+
"type": {
|
|
69368
|
+
"text": "string | undefined"
|
|
69369
|
+
},
|
|
69370
|
+
"description": "Which of the controls this frame draws, as a list of what to keep.\n\n**A list rather than a switch, because the overlap is not symmetric.**\nEvery map library draws zoom controls and none of them draws pan buttons:\nMapLibre's navigation control is zoom and a compass, Leaflet's is zoom,\nGoogle's is zoom. So a consumer slotting one of those has our zoom twice\nover and our pan pad not at all, and a single switch would make them choose\nbetween a duplicate and nothing.\n\n`none` draws none of them, which is the right answer where the slotted map\nalready has controls a reader can find: what this family argues for is that\n*a* findable control exists, never that it is ours. The methods stay public\neither way, so a consumer drawing their own chrome can still drive the\nframe.\n\nAbsent is all three, which is this library's rule that a resting value is an\nattribute's absence, and it is what the stylesheet asks about: the layout\nrules are written against `[controls]:not([controls~=\"zoom\"])` rather than\nthe bare negation, or a frame that named no list at all would be laid out as\nthough it had dropped everything.",
|
|
69371
|
+
"attribute": "controls",
|
|
69372
|
+
"reflects": true,
|
|
69373
|
+
"inheritedFrom": {
|
|
69374
|
+
"name": "HelixHeadlessMap",
|
|
69375
|
+
"module": "src/map/root/map-root.ts"
|
|
69376
|
+
}
|
|
69377
|
+
},
|
|
69378
|
+
{
|
|
69379
|
+
"kind": "field",
|
|
69380
|
+
"name": "controlsPlacement",
|
|
69381
|
+
"type": {
|
|
69382
|
+
"text": "'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | undefined"
|
|
69383
|
+
},
|
|
69384
|
+
"description": "Which corner the controls sit in.\n\n**Configurable because there is no safe default**, and this is a collision\nrather than a taste: MapLibre puts its own controls at the top end, Leaflet\nand OpenLayers at the top start, Google's zoom at the bottom end. Whichever\ncorner this took would land on somebody's, which is why every one of those\nlibraries made it a setting too.\n\nLogical corners rather than left and right, so a right-to-left page moves\nthem without a consumer writing a second rule.\n\nAbsent is the top end, which is this library's rule that a resting value is\nan attribute's absence: a default that reflected would write an attribute\nonto every host that no server sent and nobody asked for.",
|
|
69385
|
+
"attribute": "controls-placement",
|
|
69386
|
+
"reflects": true,
|
|
69387
|
+
"inheritedFrom": {
|
|
69388
|
+
"name": "HelixHeadlessMap",
|
|
69389
|
+
"module": "src/map/root/map-root.ts"
|
|
69390
|
+
}
|
|
69391
|
+
},
|
|
69364
69392
|
{
|
|
69365
69393
|
"kind": "field",
|
|
69366
69394
|
"name": "fullscreenLabel",
|
|
@@ -69509,6 +69537,29 @@
|
|
|
69509
69537
|
"module": "src/map/root/map-root.ts"
|
|
69510
69538
|
}
|
|
69511
69539
|
},
|
|
69540
|
+
{
|
|
69541
|
+
"kind": "method",
|
|
69542
|
+
"name": "draws",
|
|
69543
|
+
"privacy": "private",
|
|
69544
|
+
"return": {
|
|
69545
|
+
"type": {
|
|
69546
|
+
"text": "boolean"
|
|
69547
|
+
}
|
|
69548
|
+
},
|
|
69549
|
+
"parameters": [
|
|
69550
|
+
{
|
|
69551
|
+
"name": "group",
|
|
69552
|
+
"type": {
|
|
69553
|
+
"text": "'pan' | 'zoom' | 'fullscreen'"
|
|
69554
|
+
}
|
|
69555
|
+
}
|
|
69556
|
+
],
|
|
69557
|
+
"description": "Whether a named group of controls is one this frame draws.",
|
|
69558
|
+
"inheritedFrom": {
|
|
69559
|
+
"name": "HelixHeadlessMap",
|
|
69560
|
+
"module": "src/map/root/map-root.ts"
|
|
69561
|
+
}
|
|
69562
|
+
},
|
|
69512
69563
|
{
|
|
69513
69564
|
"kind": "method",
|
|
69514
69565
|
"name": "toggleFullscreen",
|
|
@@ -69610,6 +69661,21 @@
|
|
|
69610
69661
|
"module": "src/map/root/map-root.ts"
|
|
69611
69662
|
}
|
|
69612
69663
|
},
|
|
69664
|
+
{
|
|
69665
|
+
"kind": "method",
|
|
69666
|
+
"name": "renderControls",
|
|
69667
|
+
"privacy": "private",
|
|
69668
|
+
"return": {
|
|
69669
|
+
"type": {
|
|
69670
|
+
"text": "TemplateResult | typeof nothing"
|
|
69671
|
+
}
|
|
69672
|
+
},
|
|
69673
|
+
"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: it would publish `pan-`\nand a consumer's `::part(pan-up)` would match nothing. The same cost\n`drawIcon` names for `Trend`.",
|
|
69674
|
+
"inheritedFrom": {
|
|
69675
|
+
"name": "HelixHeadlessMap",
|
|
69676
|
+
"module": "src/map/root/map-root.ts"
|
|
69677
|
+
}
|
|
69678
|
+
},
|
|
69613
69679
|
{
|
|
69614
69680
|
"kind": "field",
|
|
69615
69681
|
"name": "tier",
|
|
@@ -69955,8 +70021,20 @@
|
|
|
69955
70021
|
"part": "Root",
|
|
69956
70022
|
"examples": [
|
|
69957
70023
|
{
|
|
69958
|
-
"description": "
|
|
70024
|
+
"description": "The frame at rest: a named region, the controls it draws, and the credit the tiles require.",
|
|
69959
70025
|
"slug": "framed"
|
|
70026
|
+
},
|
|
70027
|
+
{
|
|
70028
|
+
"description": "No controls at all, for a map whose own are already findable: what is left is the name, the chrome and the credit.",
|
|
70029
|
+
"slug": "quiet"
|
|
70030
|
+
},
|
|
70031
|
+
{
|
|
70032
|
+
"description": "Keeping the pan pad a map library does not draw and dropping the zoom it does, in the corner theirs is not in.",
|
|
70033
|
+
"slug": "tailored"
|
|
70034
|
+
},
|
|
70035
|
+
{
|
|
70036
|
+
"description": "Answering the frame: it asks with `helix-map-pan` and `helix-map-zoom`, and your map does the moving.",
|
|
70037
|
+
"slug": "wired"
|
|
69960
70038
|
}
|
|
69961
70039
|
],
|
|
69962
70040
|
"source": "helix/styled/src/map"
|
|
@@ -69998,6 +70076,14 @@
|
|
|
69998
70076
|
}
|
|
69999
70077
|
],
|
|
70000
70078
|
"cssParts": [
|
|
70079
|
+
{
|
|
70080
|
+
"description": "The strip the credit sits in, under the map.",
|
|
70081
|
+
"name": "attribution",
|
|
70082
|
+
"inheritedFrom": {
|
|
70083
|
+
"name": "HelixHeadlessMap",
|
|
70084
|
+
"module": "src/map/root/map-root.ts"
|
|
70085
|
+
}
|
|
70086
|
+
},
|
|
70001
70087
|
{
|
|
70002
70088
|
"description": "The group the pan and zoom buttons sit in.",
|
|
70003
70089
|
"name": "controls",
|
|
@@ -70006,6 +70092,14 @@
|
|
|
70006
70092
|
"module": "src/map/root/map-root.ts"
|
|
70007
70093
|
}
|
|
70008
70094
|
},
|
|
70095
|
+
{
|
|
70096
|
+
"description": "The strip below the map, for what a consumer slots there.",
|
|
70097
|
+
"name": "footer",
|
|
70098
|
+
"inheritedFrom": {
|
|
70099
|
+
"name": "HelixHeadlessMap",
|
|
70100
|
+
"module": "src/map/root/map-root.ts"
|
|
70101
|
+
}
|
|
70102
|
+
},
|
|
70009
70103
|
{
|
|
70010
70104
|
"description": "The button that fills the screen.",
|
|
70011
70105
|
"name": "fullscreen",
|
|
@@ -70014,6 +70108,14 @@
|
|
|
70014
70108
|
"module": "src/map/root/map-root.ts"
|
|
70015
70109
|
}
|
|
70016
70110
|
},
|
|
70111
|
+
{
|
|
70112
|
+
"description": "The strip above the map, for what a consumer slots there.",
|
|
70113
|
+
"name": "header",
|
|
70114
|
+
"inheritedFrom": {
|
|
70115
|
+
"name": "HelixHeadlessMap",
|
|
70116
|
+
"module": "src/map/root/map-root.ts"
|
|
70117
|
+
}
|
|
70118
|
+
},
|
|
70017
70119
|
{
|
|
70018
70120
|
"description": "The button that moves the map down.",
|
|
70019
70121
|
"name": "pan-down",
|
|
@@ -70080,6 +70182,30 @@
|
|
|
70080
70182
|
}
|
|
70081
70183
|
],
|
|
70082
70184
|
"attributes": [
|
|
70185
|
+
{
|
|
70186
|
+
"name": "controls",
|
|
70187
|
+
"type": {
|
|
70188
|
+
"text": "string | undefined"
|
|
70189
|
+
},
|
|
70190
|
+
"description": "Which of the controls this frame draws, as a list of what to keep.\n\n**A list rather than a switch, because the overlap is not symmetric.**\nEvery map library draws zoom controls and none of them draws pan buttons:\nMapLibre's navigation control is zoom and a compass, Leaflet's is zoom,\nGoogle's is zoom. So a consumer slotting one of those has our zoom twice\nover and our pan pad not at all, and a single switch would make them choose\nbetween a duplicate and nothing.\n\n`none` draws none of them, which is the right answer where the slotted map\nalready has controls a reader can find: what this family argues for is that\n*a* findable control exists, never that it is ours. The methods stay public\neither way, so a consumer drawing their own chrome can still drive the\nframe.\n\nAbsent is all three, which is this library's rule that a resting value is an\nattribute's absence, and it is what the stylesheet asks about: the layout\nrules are written against `[controls]:not([controls~=\"zoom\"])` rather than\nthe bare negation, or a frame that named no list at all would be laid out as\nthough it had dropped everything.",
|
|
70191
|
+
"fieldName": "controls",
|
|
70192
|
+
"inheritedFrom": {
|
|
70193
|
+
"name": "HelixHeadlessMap",
|
|
70194
|
+
"module": "src/map/root/map-root.ts"
|
|
70195
|
+
}
|
|
70196
|
+
},
|
|
70197
|
+
{
|
|
70198
|
+
"name": "controls-placement",
|
|
70199
|
+
"type": {
|
|
70200
|
+
"text": "'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | undefined"
|
|
70201
|
+
},
|
|
70202
|
+
"description": "Which corner the controls sit in.\n\n**Configurable because there is no safe default**, and this is a collision\nrather than a taste: MapLibre puts its own controls at the top end, Leaflet\nand OpenLayers at the top start, Google's zoom at the bottom end. Whichever\ncorner this took would land on somebody's, which is why every one of those\nlibraries made it a setting too.\n\nLogical corners rather than left and right, so a right-to-left page moves\nthem without a consumer writing a second rule.\n\nAbsent is the top end, which is this library's rule that a resting value is\nan attribute's absence: a default that reflected would write an attribute\nonto every host that no server sent and nobody asked for.",
|
|
70203
|
+
"fieldName": "controlsPlacement",
|
|
70204
|
+
"inheritedFrom": {
|
|
70205
|
+
"name": "HelixHeadlessMap",
|
|
70206
|
+
"module": "src/map/root/map-root.ts"
|
|
70207
|
+
}
|
|
70208
|
+
},
|
|
70083
70209
|
{
|
|
70084
70210
|
"name": "fullscreen-label",
|
|
70085
70211
|
"type": {
|
|
@@ -15,11 +15,6 @@ overflow: hidden;
|
|
|
15
15
|
position: relative;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
[part="region"]:focus-within {
|
|
19
|
-
outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
|
|
20
|
-
outline-offset: calc(var(--helix-size-focus-offset) * -1);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
18
|
[part="viewport"] {
|
|
24
19
|
min-block-size: 0;
|
|
25
20
|
overflow: hidden;
|
|
@@ -39,12 +34,47 @@ grid-template-areas:
|
|
|
39
34
|
". up . zoomin"
|
|
40
35
|
"start . end zoomout"
|
|
41
36
|
". down . full";
|
|
37
|
+
position: absolute;
|
|
38
|
+
|
|
42
39
|
inset-block-start: var(--helix-space-sm);
|
|
43
40
|
inset-inline-end: var(--helix-space-sm);
|
|
44
|
-
position: absolute;
|
|
45
41
|
transition: opacity var(--helix-duration-fast) var(--helix-easing-standard);
|
|
46
42
|
}
|
|
47
43
|
|
|
44
|
+
:host([controls]:not([controls~="zoom"])) [part="controls"] {
|
|
45
|
+
grid-template-areas:
|
|
46
|
+
". up ."
|
|
47
|
+
"start . end"
|
|
48
|
+
". down full";
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
:host([controls]:not([controls~="pan"])) [part="controls"] {
|
|
52
|
+
grid-template-areas:
|
|
53
|
+
"zoomin"
|
|
54
|
+
"zoomout"
|
|
55
|
+
"full";
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
:host([controls-placement="top-end"]) [part="controls"] {
|
|
59
|
+
inset-block: var(--helix-space-sm) auto;
|
|
60
|
+
inset-inline: auto var(--helix-space-sm);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
:host([controls-placement="top-start"]) [part="controls"] {
|
|
64
|
+
inset-block: var(--helix-space-sm) auto;
|
|
65
|
+
inset-inline: var(--helix-space-sm) auto;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
:host([controls-placement="bottom-end"]) [part="controls"] {
|
|
69
|
+
inset-block: auto var(--helix-space-sm);
|
|
70
|
+
inset-inline: auto var(--helix-space-sm);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
:host([controls-placement="bottom-start"]) [part="controls"] {
|
|
74
|
+
inset-block: auto var(--helix-space-sm);
|
|
75
|
+
inset-inline: var(--helix-space-sm) auto;
|
|
76
|
+
}
|
|
77
|
+
|
|
48
78
|
[part="pan-up"] {
|
|
49
79
|
grid-area: up;
|
|
50
80
|
}
|
|
@@ -83,6 +113,11 @@ justify-content: center;
|
|
|
83
113
|
padding: 0;
|
|
84
114
|
}
|
|
85
115
|
|
|
116
|
+
[part="controls"] button:focus-visible {
|
|
117
|
+
outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
|
|
118
|
+
outline-offset: var(--helix-size-focus-offset);
|
|
119
|
+
}
|
|
120
|
+
|
|
86
121
|
[part="controls"] button:hover {
|
|
87
122
|
background-color: var(--helix-color-surface-raised);
|
|
88
123
|
}
|
|
@@ -94,6 +129,8 @@ transition: opacity var(--helix-duration-fast) var(--helix-easing-standard);
|
|
|
94
129
|
}
|
|
95
130
|
|
|
96
131
|
::slotted([slot="attribution"]) {
|
|
132
|
+
|
|
133
|
+
border-block-start: var(--helix-border-thin) solid var(--helix-color-border);
|
|
97
134
|
color: var(--helix-color-foreground-subtle);
|
|
98
135
|
font-size: var(--helix-text-xs);
|
|
99
136
|
padding: var(--helix-space-2xs) var(--helix-space-xs);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fusion.dev/helix",
|
|
3
3
|
"description": "Styled component tier. Extends the headless tier with token-driven presentation.",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.103.1",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Ross Sheppard <ross.sheppard@fusion.dev>",
|
|
7
7
|
"repository": {
|
|
@@ -47,13 +47,13 @@
|
|
|
47
47
|
},
|
|
48
48
|
"bugs": "https://github.com/project-fusion/fusion/issues",
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@fusion.dev/helix-core": "0.
|
|
51
|
-
"@fusion.dev/helix-headless": "0.
|
|
52
|
-
"@fusion.dev/helix-styles": "0.
|
|
50
|
+
"@fusion.dev/helix-core": "0.103.1",
|
|
51
|
+
"@fusion.dev/helix-headless": "0.103.1",
|
|
52
|
+
"@fusion.dev/helix-styles": "0.103.1"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
-
"@fusion.dev/helix-cem": "0.
|
|
56
|
-
"@fusion.dev/helix-testing": "0.
|
|
55
|
+
"@fusion.dev/helix-cem": "0.103.1",
|
|
56
|
+
"@fusion.dev/helix-testing": "0.103.1",
|
|
57
57
|
"@fusion.dev/scripts": "0.0.0-dev",
|
|
58
58
|
"@happy-dom/global-registrator": "^20.0.0",
|
|
59
59
|
"@lit-labs/ssr": "^4.1.0",
|
package/types/jsx.d.ts
CHANGED
|
@@ -11510,6 +11510,57 @@ export type HelixMapHelixMapZoomElementEvent =
|
|
|
11510
11510
|
HelixMapElementEvent<HelixMapZoomEvent>;
|
|
11511
11511
|
|
|
11512
11512
|
export type HelixMapProps = {
|
|
11513
|
+
/** Which of the controls this frame draws, as a list of what to keep.
|
|
11514
|
+
|
|
11515
|
+
**A list rather than a switch, because the overlap is not symmetric.**
|
|
11516
|
+
Every map library draws zoom controls and none of them draws pan buttons:
|
|
11517
|
+
MapLibre's navigation control is zoom and a compass, Leaflet's is zoom,
|
|
11518
|
+
Google's is zoom. So a consumer slotting one of those has our zoom twice
|
|
11519
|
+
over and our pan pad not at all, and a single switch would make them choose
|
|
11520
|
+
between a duplicate and nothing.
|
|
11521
|
+
|
|
11522
|
+
`none` draws none of them, which is the right answer where the slotted map
|
|
11523
|
+
already has controls a reader can find: what this family argues for is that
|
|
11524
|
+
*a* findable control exists, never that it is ours. The methods stay public
|
|
11525
|
+
either way, so a consumer drawing their own chrome can still drive the
|
|
11526
|
+
frame.
|
|
11527
|
+
|
|
11528
|
+
Absent is all three, which is this library's rule that a resting value is an
|
|
11529
|
+
attribute's absence, and it is what the stylesheet asks about: the layout
|
|
11530
|
+
rules are written against `[controls]:not([controls~="zoom"])` rather than
|
|
11531
|
+
the bare negation, or a frame that named no list at all would be laid out as
|
|
11532
|
+
though it had dropped everything. */
|
|
11533
|
+
controls?: (HelixMap["controls"]) | undefined;
|
|
11534
|
+
/** Which corner the controls sit in.
|
|
11535
|
+
|
|
11536
|
+
**Configurable because there is no safe default**, and this is a collision
|
|
11537
|
+
rather than a taste: MapLibre puts its own controls at the top end, Leaflet
|
|
11538
|
+
and OpenLayers at the top start, Google's zoom at the bottom end. Whichever
|
|
11539
|
+
corner this took would land on somebody's, which is why every one of those
|
|
11540
|
+
libraries made it a setting too.
|
|
11541
|
+
|
|
11542
|
+
Logical corners rather than left and right, so a right-to-left page moves
|
|
11543
|
+
them without a consumer writing a second rule.
|
|
11544
|
+
|
|
11545
|
+
Absent is the top end, which is this library's rule that a resting value is
|
|
11546
|
+
an attribute's absence: a default that reflected would write an attribute
|
|
11547
|
+
onto every host that no server sent and nobody asked for. */
|
|
11548
|
+
"controls-placement"?: (HelixMap["controlsPlacement"]) | undefined;
|
|
11549
|
+
/** Which corner the controls sit in.
|
|
11550
|
+
|
|
11551
|
+
**Configurable because there is no safe default**, and this is a collision
|
|
11552
|
+
rather than a taste: MapLibre puts its own controls at the top end, Leaflet
|
|
11553
|
+
and OpenLayers at the top start, Google's zoom at the bottom end. Whichever
|
|
11554
|
+
corner this took would land on somebody's, which is why every one of those
|
|
11555
|
+
libraries made it a setting too.
|
|
11556
|
+
|
|
11557
|
+
Logical corners rather than left and right, so a right-to-left page moves
|
|
11558
|
+
them without a consumer writing a second rule.
|
|
11559
|
+
|
|
11560
|
+
Absent is the top end, which is this library's rule that a resting value is
|
|
11561
|
+
an attribute's absence: a default that reflected would write an attribute
|
|
11562
|
+
onto every host that no server sent and nobody asked for. */
|
|
11563
|
+
controlsPlacement?: (HelixMap["controlsPlacement"]) | undefined;
|
|
11513
11564
|
/** What the control that fills the screen is called. */
|
|
11514
11565
|
"fullscreen-label"?: (HelixMap["fullscreenLabel"]) | undefined;
|
|
11515
11566
|
/** What the control that fills the screen is called. */
|
|
@@ -11566,6 +11617,57 @@ multiply by their own. */
|
|
|
11566
11617
|
};
|
|
11567
11618
|
|
|
11568
11619
|
export type HelixMapSolidJsProps = {
|
|
11620
|
+
/** Which of the controls this frame draws, as a list of what to keep.
|
|
11621
|
+
|
|
11622
|
+
**A list rather than a switch, because the overlap is not symmetric.**
|
|
11623
|
+
Every map library draws zoom controls and none of them draws pan buttons:
|
|
11624
|
+
MapLibre's navigation control is zoom and a compass, Leaflet's is zoom,
|
|
11625
|
+
Google's is zoom. So a consumer slotting one of those has our zoom twice
|
|
11626
|
+
over and our pan pad not at all, and a single switch would make them choose
|
|
11627
|
+
between a duplicate and nothing.
|
|
11628
|
+
|
|
11629
|
+
`none` draws none of them, which is the right answer where the slotted map
|
|
11630
|
+
already has controls a reader can find: what this family argues for is that
|
|
11631
|
+
*a* findable control exists, never that it is ours. The methods stay public
|
|
11632
|
+
either way, so a consumer drawing their own chrome can still drive the
|
|
11633
|
+
frame.
|
|
11634
|
+
|
|
11635
|
+
Absent is all three, which is this library's rule that a resting value is an
|
|
11636
|
+
attribute's absence, and it is what the stylesheet asks about: the layout
|
|
11637
|
+
rules are written against `[controls]:not([controls~="zoom"])` rather than
|
|
11638
|
+
the bare negation, or a frame that named no list at all would be laid out as
|
|
11639
|
+
though it had dropped everything. */
|
|
11640
|
+
"prop:controls"?: (HelixMap["controls"]) | undefined;
|
|
11641
|
+
/** Which corner the controls sit in.
|
|
11642
|
+
|
|
11643
|
+
**Configurable because there is no safe default**, and this is a collision
|
|
11644
|
+
rather than a taste: MapLibre puts its own controls at the top end, Leaflet
|
|
11645
|
+
and OpenLayers at the top start, Google's zoom at the bottom end. Whichever
|
|
11646
|
+
corner this took would land on somebody's, which is why every one of those
|
|
11647
|
+
libraries made it a setting too.
|
|
11648
|
+
|
|
11649
|
+
Logical corners rather than left and right, so a right-to-left page moves
|
|
11650
|
+
them without a consumer writing a second rule.
|
|
11651
|
+
|
|
11652
|
+
Absent is the top end, which is this library's rule that a resting value is
|
|
11653
|
+
an attribute's absence: a default that reflected would write an attribute
|
|
11654
|
+
onto every host that no server sent and nobody asked for. */
|
|
11655
|
+
"attr:controls-placement"?: (HelixMap["controlsPlacement"]) | undefined;
|
|
11656
|
+
/** Which corner the controls sit in.
|
|
11657
|
+
|
|
11658
|
+
**Configurable because there is no safe default**, and this is a collision
|
|
11659
|
+
rather than a taste: MapLibre puts its own controls at the top end, Leaflet
|
|
11660
|
+
and OpenLayers at the top start, Google's zoom at the bottom end. Whichever
|
|
11661
|
+
corner this took would land on somebody's, which is why every one of those
|
|
11662
|
+
libraries made it a setting too.
|
|
11663
|
+
|
|
11664
|
+
Logical corners rather than left and right, so a right-to-left page moves
|
|
11665
|
+
them without a consumer writing a second rule.
|
|
11666
|
+
|
|
11667
|
+
Absent is the top end, which is this library's rule that a resting value is
|
|
11668
|
+
an attribute's absence: a default that reflected would write an attribute
|
|
11669
|
+
onto every host that no server sent and nobody asked for. */
|
|
11670
|
+
"prop:controlsPlacement"?: (HelixMap["controlsPlacement"]) | undefined;
|
|
11569
11671
|
/** What the control that fills the screen is called. */
|
|
11570
11672
|
"attr:fullscreen-label"?: (HelixMap["fullscreenLabel"]) | undefined;
|
|
11571
11673
|
/** What the control that fills the screen is called. */
|
|
@@ -31771,6 +31873,40 @@ export type CustomElements = {
|
|
|
31771
31873
|
*
|
|
31772
31874
|
* Component attributes and properties that can be applied to the element or by using JavaScript.
|
|
31773
31875
|
*
|
|
31876
|
+
* - `controls`: Which of the controls this frame draws, as a list of what to keep.
|
|
31877
|
+
*
|
|
31878
|
+
* **A list rather than a switch, because the overlap is not symmetric.**
|
|
31879
|
+
* Every map library draws zoom controls and none of them draws pan buttons:
|
|
31880
|
+
* MapLibre's navigation control is zoom and a compass, Leaflet's is zoom,
|
|
31881
|
+
* Google's is zoom. So a consumer slotting one of those has our zoom twice
|
|
31882
|
+
* over and our pan pad not at all, and a single switch would make them choose
|
|
31883
|
+
* between a duplicate and nothing.
|
|
31884
|
+
*
|
|
31885
|
+
* `none` draws none of them, which is the right answer where the slotted map
|
|
31886
|
+
* already has controls a reader can find: what this family argues for is that
|
|
31887
|
+
* *a* findable control exists, never that it is ours. The methods stay public
|
|
31888
|
+
* either way, so a consumer drawing their own chrome can still drive the
|
|
31889
|
+
* frame.
|
|
31890
|
+
*
|
|
31891
|
+
* Absent is all three, which is this library's rule that a resting value is an
|
|
31892
|
+
* attribute's absence, and it is what the stylesheet asks about: the layout
|
|
31893
|
+
* rules are written against `[controls]:not([controls~="zoom"])` rather than
|
|
31894
|
+
* the bare negation, or a frame that named no list at all would be laid out as
|
|
31895
|
+
* though it had dropped everything.
|
|
31896
|
+
* - `controls-placement`/`controlsPlacement`: Which corner the controls sit in.
|
|
31897
|
+
*
|
|
31898
|
+
* **Configurable because there is no safe default**, and this is a collision
|
|
31899
|
+
* rather than a taste: MapLibre puts its own controls at the top end, Leaflet
|
|
31900
|
+
* and OpenLayers at the top start, Google's zoom at the bottom end. Whichever
|
|
31901
|
+
* corner this took would land on somebody's, which is why every one of those
|
|
31902
|
+
* libraries made it a setting too.
|
|
31903
|
+
*
|
|
31904
|
+
* Logical corners rather than left and right, so a right-to-left page moves
|
|
31905
|
+
* them without a consumer writing a second rule.
|
|
31906
|
+
*
|
|
31907
|
+
* Absent is the top end, which is this library's rule that a resting value is
|
|
31908
|
+
* an attribute's absence: a default that reflected would write an attribute
|
|
31909
|
+
* onto every host that no server sent and nobody asked for.
|
|
31774
31910
|
* - `fullscreen-label`/`fullscreenLabel`: What the control that fills the screen is called.
|
|
31775
31911
|
* - `idle-delay`/`idleDelay`: How long the reader may be still before the chrome hides, in milliseconds.
|
|
31776
31912
|
*
|
|
@@ -31849,8 +31985,11 @@ export type CustomElements = {
|
|
|
31849
31985
|
*
|
|
31850
31986
|
* Custom selectors for styling elements within the component.
|
|
31851
31987
|
*
|
|
31988
|
+
* - `attribution`: The strip the credit sits in, under the map.
|
|
31852
31989
|
* - `controls`: The group the pan and zoom buttons sit in.
|
|
31990
|
+
* - `footer`: The strip below the map, for what a consumer slots there.
|
|
31853
31991
|
* - `fullscreen`: The button that fills the screen.
|
|
31992
|
+
* - `header`: The strip above the map, for what a consumer slots there.
|
|
31854
31993
|
* - `pan-down`: The button that moves the map down.
|
|
31855
31994
|
* - `pan-end`: The button that moves the map the way the text ends, which is right on an English page.
|
|
31856
31995
|
* - `pan-start`: The button that moves the map the way the text starts, which is left on an English page.
|
|
@@ -51970,6 +52109,40 @@ export type CustomElementsSolidJs = {
|
|
|
51970
52109
|
*
|
|
51971
52110
|
* Component attributes and properties that can be applied to the element or by using JavaScript.
|
|
51972
52111
|
*
|
|
52112
|
+
* - `controls`: Which of the controls this frame draws, as a list of what to keep.
|
|
52113
|
+
*
|
|
52114
|
+
* **A list rather than a switch, because the overlap is not symmetric.**
|
|
52115
|
+
* Every map library draws zoom controls and none of them draws pan buttons:
|
|
52116
|
+
* MapLibre's navigation control is zoom and a compass, Leaflet's is zoom,
|
|
52117
|
+
* Google's is zoom. So a consumer slotting one of those has our zoom twice
|
|
52118
|
+
* over and our pan pad not at all, and a single switch would make them choose
|
|
52119
|
+
* between a duplicate and nothing.
|
|
52120
|
+
*
|
|
52121
|
+
* `none` draws none of them, which is the right answer where the slotted map
|
|
52122
|
+
* already has controls a reader can find: what this family argues for is that
|
|
52123
|
+
* *a* findable control exists, never that it is ours. The methods stay public
|
|
52124
|
+
* either way, so a consumer drawing their own chrome can still drive the
|
|
52125
|
+
* frame.
|
|
52126
|
+
*
|
|
52127
|
+
* Absent is all three, which is this library's rule that a resting value is an
|
|
52128
|
+
* attribute's absence, and it is what the stylesheet asks about: the layout
|
|
52129
|
+
* rules are written against `[controls]:not([controls~="zoom"])` rather than
|
|
52130
|
+
* the bare negation, or a frame that named no list at all would be laid out as
|
|
52131
|
+
* though it had dropped everything.
|
|
52132
|
+
* - `controls-placement`/`controlsPlacement`: Which corner the controls sit in.
|
|
52133
|
+
*
|
|
52134
|
+
* **Configurable because there is no safe default**, and this is a collision
|
|
52135
|
+
* rather than a taste: MapLibre puts its own controls at the top end, Leaflet
|
|
52136
|
+
* and OpenLayers at the top start, Google's zoom at the bottom end. Whichever
|
|
52137
|
+
* corner this took would land on somebody's, which is why every one of those
|
|
52138
|
+
* libraries made it a setting too.
|
|
52139
|
+
*
|
|
52140
|
+
* Logical corners rather than left and right, so a right-to-left page moves
|
|
52141
|
+
* them without a consumer writing a second rule.
|
|
52142
|
+
*
|
|
52143
|
+
* Absent is the top end, which is this library's rule that a resting value is
|
|
52144
|
+
* an attribute's absence: a default that reflected would write an attribute
|
|
52145
|
+
* onto every host that no server sent and nobody asked for.
|
|
51973
52146
|
* - `fullscreen-label`/`fullscreenLabel`: What the control that fills the screen is called.
|
|
51974
52147
|
* - `idle-delay`/`idleDelay`: How long the reader may be still before the chrome hides, in milliseconds.
|
|
51975
52148
|
*
|
|
@@ -52048,8 +52221,11 @@ export type CustomElementsSolidJs = {
|
|
|
52048
52221
|
*
|
|
52049
52222
|
* Custom selectors for styling elements within the component.
|
|
52050
52223
|
*
|
|
52224
|
+
* - `attribution`: The strip the credit sits in, under the map.
|
|
52051
52225
|
* - `controls`: The group the pan and zoom buttons sit in.
|
|
52226
|
+
* - `footer`: The strip below the map, for what a consumer slots there.
|
|
52052
52227
|
* - `fullscreen`: The button that fills the screen.
|
|
52228
|
+
* - `header`: The strip above the map, for what a consumer slots there.
|
|
52053
52229
|
* - `pan-down`: The button that moves the map down.
|
|
52054
52230
|
* - `pan-end`: The button that moves the map the way the text ends, which is right on an English page.
|
|
52055
52231
|
* - `pan-start`: The button that moves the map the way the text starts, which is left on an English page.
|
package/types/vue.d.ts
CHANGED
|
@@ -5880,6 +5880,57 @@ export type HelixMapHelixMapZoomElementEvent =
|
|
|
5880
5880
|
HelixMapElementEvent<HelixMapZoomEvent>;
|
|
5881
5881
|
|
|
5882
5882
|
export type HelixMapVueProps = {
|
|
5883
|
+
/** Which of the controls this frame draws, as a list of what to keep.
|
|
5884
|
+
|
|
5885
|
+
**A list rather than a switch, because the overlap is not symmetric.**
|
|
5886
|
+
Every map library draws zoom controls and none of them draws pan buttons:
|
|
5887
|
+
MapLibre's navigation control is zoom and a compass, Leaflet's is zoom,
|
|
5888
|
+
Google's is zoom. So a consumer slotting one of those has our zoom twice
|
|
5889
|
+
over and our pan pad not at all, and a single switch would make them choose
|
|
5890
|
+
between a duplicate and nothing.
|
|
5891
|
+
|
|
5892
|
+
`none` draws none of them, which is the right answer where the slotted map
|
|
5893
|
+
already has controls a reader can find: what this family argues for is that
|
|
5894
|
+
*a* findable control exists, never that it is ours. The methods stay public
|
|
5895
|
+
either way, so a consumer drawing their own chrome can still drive the
|
|
5896
|
+
frame.
|
|
5897
|
+
|
|
5898
|
+
Absent is all three, which is this library's rule that a resting value is an
|
|
5899
|
+
attribute's absence, and it is what the stylesheet asks about: the layout
|
|
5900
|
+
rules are written against `[controls]:not([controls~="zoom"])` rather than
|
|
5901
|
+
the bare negation, or a frame that named no list at all would be laid out as
|
|
5902
|
+
though it had dropped everything. */
|
|
5903
|
+
controls?: (HelixMap["controls"]) | undefined;
|
|
5904
|
+
/** Which corner the controls sit in.
|
|
5905
|
+
|
|
5906
|
+
**Configurable because there is no safe default**, and this is a collision
|
|
5907
|
+
rather than a taste: MapLibre puts its own controls at the top end, Leaflet
|
|
5908
|
+
and OpenLayers at the top start, Google's zoom at the bottom end. Whichever
|
|
5909
|
+
corner this took would land on somebody's, which is why every one of those
|
|
5910
|
+
libraries made it a setting too.
|
|
5911
|
+
|
|
5912
|
+
Logical corners rather than left and right, so a right-to-left page moves
|
|
5913
|
+
them without a consumer writing a second rule.
|
|
5914
|
+
|
|
5915
|
+
Absent is the top end, which is this library's rule that a resting value is
|
|
5916
|
+
an attribute's absence: a default that reflected would write an attribute
|
|
5917
|
+
onto every host that no server sent and nobody asked for. */
|
|
5918
|
+
"controls-placement"?: (HelixMap["controlsPlacement"]) | undefined;
|
|
5919
|
+
/** Which corner the controls sit in.
|
|
5920
|
+
|
|
5921
|
+
**Configurable because there is no safe default**, and this is a collision
|
|
5922
|
+
rather than a taste: MapLibre puts its own controls at the top end, Leaflet
|
|
5923
|
+
and OpenLayers at the top start, Google's zoom at the bottom end. Whichever
|
|
5924
|
+
corner this took would land on somebody's, which is why every one of those
|
|
5925
|
+
libraries made it a setting too.
|
|
5926
|
+
|
|
5927
|
+
Logical corners rather than left and right, so a right-to-left page moves
|
|
5928
|
+
them without a consumer writing a second rule.
|
|
5929
|
+
|
|
5930
|
+
Absent is the top end, which is this library's rule that a resting value is
|
|
5931
|
+
an attribute's absence: a default that reflected would write an attribute
|
|
5932
|
+
onto every host that no server sent and nobody asked for. */
|
|
5933
|
+
controlsPlacement?: (HelixMap["controlsPlacement"]) | undefined;
|
|
5883
5934
|
/** What the control that fills the screen is called. */
|
|
5884
5935
|
"fullscreen-label"?: (HelixMap["fullscreenLabel"]) | undefined;
|
|
5885
5936
|
/** What the control that fills the screen is called. */
|