@fusion.dev/helix-headless 0.110.6 → 0.111.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/custom-elements.json +69 -0
- package/dist/canvas/node/canvas-node.d.ts +11 -2
- package/dist/canvas/node/canvas-node.js +6 -2
- package/dist/canvas/root/canvas-root.d.ts +36 -1
- package/dist/canvas/root/canvas-root.js +86 -1
- package/package.json +5 -5
- package/types/jsx.d.ts +52 -0
- package/types/svelte.d.ts +2 -0
- package/types/vue.d.ts +18 -0
package/custom-elements.json
CHANGED
|
@@ -11230,6 +11230,16 @@
|
|
|
11230
11230
|
"description": "The text announced when a connection is stopped before it is requested.",
|
|
11231
11231
|
"attribute": "stopped-label"
|
|
11232
11232
|
},
|
|
11233
|
+
{
|
|
11234
|
+
"kind": "field",
|
|
11235
|
+
"name": "toneLabels",
|
|
11236
|
+
"type": {
|
|
11237
|
+
"text": "Partial<Record<CanvasTone, string>>"
|
|
11238
|
+
},
|
|
11239
|
+
"default": "{}",
|
|
11240
|
+
"description": "What each tone means on this board, in words read out with the cards and\nconnections in it, such as `{\"danger\": \"Blocked\", \"success\": \"Done\"}`.\n\n**Named by the page, since the tone names a color and the page gives it\nits meaning.** JSON Canvas leaves its six colors to the application, so\nred is \"blocked\" on one board and \"urgent\" on the next. A reader who can\nsee the board is told by the color; this is how a reader who cannot is\ntold the same. A tone left out is not read.",
|
|
11241
|
+
"attribute": "tone-labels"
|
|
11242
|
+
},
|
|
11233
11243
|
{
|
|
11234
11244
|
"kind": "field",
|
|
11235
11245
|
"name": "stop",
|
|
@@ -11688,6 +11698,23 @@
|
|
|
11688
11698
|
"privacy": "private",
|
|
11689
11699
|
"description": "A card being resized from a corner, with the box it started from."
|
|
11690
11700
|
},
|
|
11701
|
+
{
|
|
11702
|
+
"kind": "field",
|
|
11703
|
+
"name": "fingers",
|
|
11704
|
+
"privacy": "private",
|
|
11705
|
+
"readonly": true,
|
|
11706
|
+
"default": "new Map<number, { x: number; y: number }>()",
|
|
11707
|
+
"description": "Where each finger on the board is, by pointer, which a pinch is measured from."
|
|
11708
|
+
},
|
|
11709
|
+
{
|
|
11710
|
+
"kind": "field",
|
|
11711
|
+
"name": "pinching",
|
|
11712
|
+
"type": {
|
|
11713
|
+
"text": "| {\n at: { x: number; y: number; zoom: number }\n middle: { x: number; y: number }\n spread: number\n }\n | undefined"
|
|
11714
|
+
},
|
|
11715
|
+
"privacy": "private",
|
|
11716
|
+
"description": "A pinch under way: how far apart its fingers were and the point between\nthem, in the box, and the view, when the second finger landed."
|
|
11717
|
+
},
|
|
11691
11718
|
{
|
|
11692
11719
|
"kind": "field",
|
|
11693
11720
|
"name": "dragging",
|
|
@@ -12696,6 +12723,39 @@
|
|
|
12696
12723
|
],
|
|
12697
12724
|
"description": "The box a Shift-drag is drawing, on the plane, while it is."
|
|
12698
12725
|
},
|
|
12726
|
+
{
|
|
12727
|
+
"kind": "method",
|
|
12728
|
+
"name": "fingerSpan",
|
|
12729
|
+
"privacy": "private",
|
|
12730
|
+
"return": {
|
|
12731
|
+
"type": {
|
|
12732
|
+
"text": "{ middle: { x: number; y: number }; spread: number }"
|
|
12733
|
+
}
|
|
12734
|
+
},
|
|
12735
|
+
"description": "The fingers' spread and the point between them, in the box. Taken from\nthe first two fingers down, where a third has landed as well."
|
|
12736
|
+
},
|
|
12737
|
+
{
|
|
12738
|
+
"kind": "method",
|
|
12739
|
+
"name": "startPinch",
|
|
12740
|
+
"privacy": "private",
|
|
12741
|
+
"return": {
|
|
12742
|
+
"type": {
|
|
12743
|
+
"text": "void"
|
|
12744
|
+
}
|
|
12745
|
+
},
|
|
12746
|
+
"description": "Turns what the first finger was doing into a pinch, where that was a pan\nor a press that had not yet moved anything. A finger already carrying a\ncard, drawing a line, resizing or drawing a box goes on doing that."
|
|
12747
|
+
},
|
|
12748
|
+
{
|
|
12749
|
+
"kind": "method",
|
|
12750
|
+
"name": "pinch",
|
|
12751
|
+
"privacy": "private",
|
|
12752
|
+
"return": {
|
|
12753
|
+
"type": {
|
|
12754
|
+
"text": "void"
|
|
12755
|
+
}
|
|
12756
|
+
},
|
|
12757
|
+
"description": "Scales the board by how far the fingers have spread since the pinch\nbegan, about the point between them, and carries it with that point, so\nwhat was under the fingers stays under them."
|
|
12758
|
+
},
|
|
12699
12759
|
{
|
|
12700
12760
|
"kind": "method",
|
|
12701
12761
|
"name": "zoomAbout",
|
|
@@ -13965,6 +14025,15 @@
|
|
|
13965
14025
|
"description": "The text announced when a connection is stopped before it is requested.",
|
|
13966
14026
|
"fieldName": "stoppedLabel"
|
|
13967
14027
|
},
|
|
14028
|
+
{
|
|
14029
|
+
"name": "tone-labels",
|
|
14030
|
+
"type": {
|
|
14031
|
+
"text": "Partial<Record<CanvasTone, string>>"
|
|
14032
|
+
},
|
|
14033
|
+
"default": "{}",
|
|
14034
|
+
"description": "What each tone means on this board, in words read out with the cards and\nconnections in it, such as `{\"danger\": \"Blocked\", \"success\": \"Done\"}`.\n\n**Named by the page, since the tone names a color and the page gives it\nits meaning.** JSON Canvas leaves its six colors to the application, so\nred is \"blocked\" on one board and \"urgent\" on the next. A reader who can\nsee the board is told by the color; this is how a reader who cannot is\ntold the same. A tone left out is not read.",
|
|
14035
|
+
"fieldName": "toneLabels"
|
|
14036
|
+
},
|
|
13968
14037
|
{
|
|
13969
14038
|
"name": "controls",
|
|
13970
14039
|
"type": {
|
|
@@ -122,6 +122,12 @@ export declare class HelixHeadlessCanvasNode extends HelixElement {
|
|
|
122
122
|
* hears what the card says first and where it leads second.
|
|
123
123
|
*/
|
|
124
124
|
links: string;
|
|
125
|
+
/**
|
|
126
|
+
* @internal What the card's tone means, in the page's words, written by the
|
|
127
|
+
* board from its `toneLabels`. Read out before where the card leads, since
|
|
128
|
+
* a reader who can see the board is told it by the card's color first.
|
|
129
|
+
*/
|
|
130
|
+
meaning: string;
|
|
125
131
|
/**
|
|
126
132
|
* Prevents the card from being moved, connected, or removed.
|
|
127
133
|
*
|
|
@@ -204,12 +210,15 @@ export declare class HelixHeadlessCanvasNode extends HelixElement {
|
|
|
204
210
|
*/
|
|
205
211
|
focus(options?: FocusOptions): void;
|
|
206
212
|
/**
|
|
207
|
-
* The card, and the sentence that says where it
|
|
213
|
+
* The card, and the sentence that says what its tone means and where it
|
|
214
|
+
* leads.
|
|
208
215
|
*
|
|
209
216
|
* **`aria-describedby` at a hidden element, which is allowed and is the
|
|
210
217
|
* point.** A description is computed from its target whether or not the
|
|
211
218
|
* target is rendered, so the connections are read out and never drawn: the
|
|
212
|
-
* arrows already draw them.
|
|
219
|
+
* arrows already draw them. **One element, the two joined with a comma**:
|
|
220
|
+
* two elements named in the reference are joined with a space alone, which
|
|
221
|
+
* read "Done leads to Launch" as one phrase.
|
|
213
222
|
*/
|
|
214
223
|
protected render(): TemplateResult;
|
|
215
224
|
}
|
|
@@ -31,6 +31,7 @@ let HelixHeadlessCanvasNode = class HelixHeadlessCanvasNode extends HelixElement
|
|
|
31
31
|
this.placement = new PlacementController(this);
|
|
32
32
|
this.name = '';
|
|
33
33
|
this.links = '';
|
|
34
|
+
this.meaning = '';
|
|
34
35
|
this.readOnly = false;
|
|
35
36
|
this.selected = false;
|
|
36
37
|
this.movable = false;
|
|
@@ -71,7 +72,7 @@ let HelixHeadlessCanvasNode = class HelixHeadlessCanvasNode extends HelixElement
|
|
|
71
72
|
</svg>`
|
|
72
73
|
: nothing}<div
|
|
73
74
|
part="node"
|
|
74
|
-
aria-describedby=${this.links ? '
|
|
75
|
+
aria-describedby=${this.meaning || this.links ? 'about' : nothing}
|
|
75
76
|
aria-label=${this.group ? this.label || nothing : nothing}
|
|
76
77
|
aria-keyshortcuts=${this.connectable ? 'Enter F2 Space Shift+ArrowRight Shift+ArrowDown Alt+ArrowRight Alt+ArrowDown C Delete' : nothing}
|
|
77
78
|
role=${this.group ? 'group' : 'article'}
|
|
@@ -79,7 +80,7 @@ let HelixHeadlessCanvasNode = class HelixHeadlessCanvasNode extends HelixElement
|
|
|
79
80
|
>
|
|
80
81
|
<slot></slot>
|
|
81
82
|
<slot name="description"></slot>
|
|
82
|
-
<span id="
|
|
83
|
+
<span id="about" hidden>${[this.meaning, this.links].filter(Boolean).join(', ')}</span>
|
|
83
84
|
</div>
|
|
84
85
|
${this.connectable
|
|
85
86
|
? html `<span part="handle handle-top" aria-hidden="true" data-side="top"></span>
|
|
@@ -120,6 +121,9 @@ __decorate([
|
|
|
120
121
|
__decorate([
|
|
121
122
|
state()
|
|
122
123
|
], HelixHeadlessCanvasNode.prototype, "links", void 0);
|
|
124
|
+
__decorate([
|
|
125
|
+
state()
|
|
126
|
+
], HelixHeadlessCanvasNode.prototype, "meaning", void 0);
|
|
123
127
|
__decorate([
|
|
124
128
|
property({ attribute: 'readonly', reflect: true, type: Boolean })
|
|
125
129
|
], HelixHeadlessCanvasNode.prototype, "readOnly", void 0);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type CanvasView, HelixElement, type ViewportPanDetail, type ViewportWay, type ViewportZoomDetail } from '@fusion.dev/helix-core';
|
|
2
2
|
import { type PropertyValues, type TemplateResult } from 'lit';
|
|
3
|
-
import { type CanvasDocument } from './canvas-document.js';
|
|
3
|
+
import { type CanvasDocument, type CanvasTone } from './canvas-document.js';
|
|
4
4
|
export type { CanvasDocument, CanvasEdge, CanvasEdgeProps, CanvasEnd, CanvasNode, CanvasNodeProps, CanvasPath, CanvasSide, CanvasTone, } from './canvas-document.js';
|
|
5
5
|
export { fromJsonCanvas } from './canvas-document.js';
|
|
6
6
|
declare const HelixHeadlessCanvas_base: (new (...args: any[]) => import("@fusion.dev/helix-core").ViewportElement) & typeof HelixElement;
|
|
@@ -227,6 +227,17 @@ export declare class HelixHeadlessCanvas extends HelixHeadlessCanvas_base {
|
|
|
227
227
|
private editing;
|
|
228
228
|
/** The text announced when a connection is stopped before it is requested. */
|
|
229
229
|
stoppedLabel: string;
|
|
230
|
+
/**
|
|
231
|
+
* What each tone means on this board, in words read out with the cards and
|
|
232
|
+
* connections in it, such as `{"danger": "Blocked", "success": "Done"}`.
|
|
233
|
+
*
|
|
234
|
+
* **Named by the page, since the tone names a color and the page gives it
|
|
235
|
+
* its meaning.** JSON Canvas leaves its six colors to the application, so
|
|
236
|
+
* red is "blocked" on one board and "urgent" on the next. A reader who can
|
|
237
|
+
* see the board is told by the color; this is how a reader who cannot is
|
|
238
|
+
* told the same. A tone left out is not read.
|
|
239
|
+
*/
|
|
240
|
+
toneLabels: Partial<Record<CanvasTone, string>>;
|
|
230
241
|
/** The card or connection that holds the board's one tab stop, by its key. */
|
|
231
242
|
private stop;
|
|
232
243
|
/**
|
|
@@ -419,6 +430,13 @@ export declare class HelixHeadlessCanvas extends HelixHeadlessCanvas_base {
|
|
|
419
430
|
private marquee;
|
|
420
431
|
/** A card being resized from a corner, with the box it started from. */
|
|
421
432
|
private sizing;
|
|
433
|
+
/** Where each finger on the board is, by pointer, which a pinch is measured from. */
|
|
434
|
+
private readonly fingers;
|
|
435
|
+
/**
|
|
436
|
+
* A pinch under way: how far apart its fingers were and the point between
|
|
437
|
+
* them, in the box, and the view, when the second finger landed.
|
|
438
|
+
*/
|
|
439
|
+
private pinching;
|
|
422
440
|
/** Where a drag started, and where the board was when it did. */
|
|
423
441
|
private dragging;
|
|
424
442
|
/**
|
|
@@ -749,6 +767,23 @@ export declare class HelixHeadlessCanvas extends HelixHeadlessCanvas_base {
|
|
|
749
767
|
private renderEditor;
|
|
750
768
|
/** The box a Shift-drag is drawing, on the plane, while it is. */
|
|
751
769
|
private renderMarquee;
|
|
770
|
+
/**
|
|
771
|
+
* The fingers' spread and the point between them, in the box. Taken from
|
|
772
|
+
* the first two fingers down, where a third has landed as well.
|
|
773
|
+
*/
|
|
774
|
+
private fingerSpan;
|
|
775
|
+
/**
|
|
776
|
+
* Turns what the first finger was doing into a pinch, where that was a pan
|
|
777
|
+
* or a press that had not yet moved anything. A finger already carrying a
|
|
778
|
+
* card, drawing a line, resizing or drawing a box goes on doing that.
|
|
779
|
+
*/
|
|
780
|
+
private startPinch;
|
|
781
|
+
/**
|
|
782
|
+
* Scales the board by how far the fingers have spread since the pinch
|
|
783
|
+
* began, about the point between them, and carries it with that point, so
|
|
784
|
+
* what was under the fingers stays under them.
|
|
785
|
+
*/
|
|
786
|
+
private pinch;
|
|
752
787
|
/** Scales about a point in the box, which is what both the buttons and a pinch want. */
|
|
753
788
|
private zoomAbout;
|
|
754
789
|
/** What one card says in the reading list, its links included. */
|
|
@@ -48,6 +48,7 @@ let HelixHeadlessCanvas = class HelixHeadlessCanvas extends MixinViewport(HelixE
|
|
|
48
48
|
this.reconnectingLabel = 'Moving the end of the connection from {from} to {to}. Move to a card and press Enter, or Escape to stop.';
|
|
49
49
|
this.selected = '';
|
|
50
50
|
this.stoppedLabel = 'Stopped connecting.';
|
|
51
|
+
this.toneLabels = {};
|
|
51
52
|
this.said = '';
|
|
52
53
|
this.at = { x: 0, y: 0, zoom: 1 };
|
|
53
54
|
this.direct = false;
|
|
@@ -58,6 +59,7 @@ let HelixHeadlessCanvas = class HelixHeadlessCanvas extends MixinViewport(HelixE
|
|
|
58
59
|
this.sides = new Map();
|
|
59
60
|
this.pressing = false;
|
|
60
61
|
this.pointing = false;
|
|
62
|
+
this.fingers = new Map();
|
|
61
63
|
this.keying = undefined;
|
|
62
64
|
this.edgeKeys = new WeakMap();
|
|
63
65
|
this.handlePointerDown = (event) => {
|
|
@@ -67,6 +69,15 @@ let HelixHeadlessCanvas = class HelixHeadlessCanvas extends MixinViewport(HelixE
|
|
|
67
69
|
if (event.button !== 0 || on('controls') || !(card || on('viewport'))) {
|
|
68
70
|
return;
|
|
69
71
|
}
|
|
72
|
+
if (event.pointerType === 'touch') {
|
|
73
|
+
this.fingers.set(event.pointerId, { x: event.clientX, y: event.clientY });
|
|
74
|
+
if (this.fingers.size > 1) {
|
|
75
|
+
if (this.fingers.size === 2 && !this.pinching) {
|
|
76
|
+
this.startPinch();
|
|
77
|
+
}
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
70
81
|
if (this.held) {
|
|
71
82
|
event.preventDefault();
|
|
72
83
|
this.putDown(event);
|
|
@@ -178,6 +189,13 @@ let HelixHeadlessCanvas = class HelixHeadlessCanvas extends MixinViewport(HelixE
|
|
|
178
189
|
};
|
|
179
190
|
this.handlePointerMove = (event) => {
|
|
180
191
|
this.idle.stir();
|
|
192
|
+
if (this.fingers.has(event.pointerId)) {
|
|
193
|
+
this.fingers.set(event.pointerId, { x: event.clientX, y: event.clientY });
|
|
194
|
+
if (this.pinching) {
|
|
195
|
+
this.pinch();
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
181
199
|
const pressed = this.carrying ?? this.dragging ?? this.sizing ?? this.marquee ?? this.linking?.pointer;
|
|
182
200
|
if (event.pointerType === 'mouse' &&
|
|
183
201
|
event.buttons === 0 &&
|
|
@@ -258,6 +276,27 @@ let HelixHeadlessCanvas = class HelixHeadlessCanvas extends MixinViewport(HelixE
|
|
|
258
276
|
};
|
|
259
277
|
};
|
|
260
278
|
this.handlePointerUp = (event) => {
|
|
279
|
+
const finger = this.fingers.delete(event.pointerId);
|
|
280
|
+
if (this.pinching) {
|
|
281
|
+
if (this.fingers.size < 2) {
|
|
282
|
+
this.pinching = undefined;
|
|
283
|
+
this.direct = false;
|
|
284
|
+
}
|
|
285
|
+
if (this.fingers.size === 0) {
|
|
286
|
+
this.pressing = false;
|
|
287
|
+
}
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
290
|
+
const owner = [
|
|
291
|
+
this.sizing?.pointer,
|
|
292
|
+
this.marquee?.pointer,
|
|
293
|
+
this.linking?.pointer,
|
|
294
|
+
this.carrying?.pointer,
|
|
295
|
+
this.dragging?.pointer,
|
|
296
|
+
].includes(event.pointerId);
|
|
297
|
+
if (finger && !owner && this.fingers.size > 0) {
|
|
298
|
+
return;
|
|
299
|
+
}
|
|
261
300
|
this.pressing = false;
|
|
262
301
|
const pointing = this.pointing;
|
|
263
302
|
this.pointing = false;
|
|
@@ -1263,6 +1302,48 @@ let HelixHeadlessCanvas = class HelixHeadlessCanvas extends MixinViewport(HelixE
|
|
|
1263
1302
|
style=${`--_canvas-marquee-x: ${left}px; --_canvas-marquee-y: ${top}px; --_canvas-marquee-inline-size: ${Math.abs(box.to.x - box.from.x)}px; --_canvas-marquee-block-size: ${Math.abs(box.to.y - box.from.y)}px`}
|
|
1264
1303
|
></div>`;
|
|
1265
1304
|
}
|
|
1305
|
+
fingerSpan() {
|
|
1306
|
+
const [one, two] = [...this.fingers.values()];
|
|
1307
|
+
const box = this.partNamed('viewport')?.getBoundingClientRect();
|
|
1308
|
+
return {
|
|
1309
|
+
middle: {
|
|
1310
|
+
x: (one.x + two.x) / 2 - (box?.left ?? 0),
|
|
1311
|
+
y: (one.y + two.y) / 2 - (box?.top ?? 0),
|
|
1312
|
+
},
|
|
1313
|
+
spread: Math.hypot(two.x - one.x, two.y - one.y),
|
|
1314
|
+
};
|
|
1315
|
+
}
|
|
1316
|
+
startPinch() {
|
|
1317
|
+
if (this.sizing || this.marquee || this.linking || this.held || this.carrying?.started) {
|
|
1318
|
+
return;
|
|
1319
|
+
}
|
|
1320
|
+
this.carrying = undefined;
|
|
1321
|
+
this.dragging = undefined;
|
|
1322
|
+
this.pointing = false;
|
|
1323
|
+
const { middle, spread } = this.fingerSpan();
|
|
1324
|
+
if (spread === 0) {
|
|
1325
|
+
return;
|
|
1326
|
+
}
|
|
1327
|
+
for (const pointer of this.fingers.keys()) {
|
|
1328
|
+
capturePointer(this, pointer);
|
|
1329
|
+
}
|
|
1330
|
+
this.touched = true;
|
|
1331
|
+
this.direct = true;
|
|
1332
|
+
this.pinching = { at: { ...this.at }, middle, spread };
|
|
1333
|
+
}
|
|
1334
|
+
pinch() {
|
|
1335
|
+
const start = this.pinching;
|
|
1336
|
+
if (!start) {
|
|
1337
|
+
return;
|
|
1338
|
+
}
|
|
1339
|
+
const { middle, spread } = this.fingerSpan();
|
|
1340
|
+
const zoom = Math.min(Math.max((start.at.zoom * spread) / start.spread, ZOOM_MIN), ZOOM_MAX);
|
|
1341
|
+
this.at = {
|
|
1342
|
+
x: middle.x - ((start.middle.x - start.at.x) * zoom) / start.at.zoom,
|
|
1343
|
+
y: middle.y - ((start.middle.y - start.at.y) * zoom) / start.at.zoom,
|
|
1344
|
+
zoom,
|
|
1345
|
+
};
|
|
1346
|
+
}
|
|
1266
1347
|
zoomAbout(by, about) {
|
|
1267
1348
|
const from = this.at.zoom;
|
|
1268
1349
|
const to = Math.min(Math.max(from * by, ZOOM_MIN), ZOOM_MAX);
|
|
@@ -1595,6 +1676,7 @@ let HelixHeadlessCanvas = class HelixHeadlessCanvas extends MixinViewport(HelixE
|
|
|
1595
1676
|
}
|
|
1596
1677
|
const node = this.byId.get(card.name);
|
|
1597
1678
|
card.links = node ? this.linksOf(node) : '';
|
|
1679
|
+
card.meaning = card.tone ? (this.toneLabels[card.tone] ?? '') : '';
|
|
1598
1680
|
card.current = card.name === stop;
|
|
1599
1681
|
card.selected = picked.has(card.name);
|
|
1600
1682
|
card.resizable = alone === card.name && !this.fixed(card);
|
|
@@ -1661,7 +1743,7 @@ let HelixHeadlessCanvas = class HelixHeadlessCanvas extends MixinViewport(HelixE
|
|
|
1661
1743
|
const ends = heads(edge);
|
|
1662
1744
|
return svg `<path
|
|
1663
1745
|
part="edge-target"
|
|
1664
|
-
aria-description=${edge.label || nothing}
|
|
1746
|
+
aria-description=${[element?.tone ? this.toneLabels[element.tone] : undefined, edge.label].filter(Boolean).join(', ') || nothing}
|
|
1665
1747
|
aria-label=${fillTemplate(this.connectionLabel, { from: this.textOf(from), to: this.textOf(to) })}
|
|
1666
1748
|
d=${drawn.d}
|
|
1667
1749
|
data-edge=${key}
|
|
@@ -1844,6 +1926,9 @@ __decorate([
|
|
|
1844
1926
|
__decorate([
|
|
1845
1927
|
property({ attribute: 'stopped-label' })
|
|
1846
1928
|
], HelixHeadlessCanvas.prototype, "stoppedLabel", void 0);
|
|
1929
|
+
__decorate([
|
|
1930
|
+
property({ attribute: 'tone-labels', type: Object })
|
|
1931
|
+
], HelixHeadlessCanvas.prototype, "toneLabels", void 0);
|
|
1847
1932
|
__decorate([
|
|
1848
1933
|
state()
|
|
1849
1934
|
], HelixHeadlessCanvas.prototype, "stop", void 0);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fusion.dev/helix-headless",
|
|
3
3
|
"description": "Headless component tier. Structure, accessibility, state, and form participation. No styling.",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.111.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Ross Sheppard <ross.sheppard@fusion.dev>",
|
|
7
7
|
"repository": {
|
|
@@ -46,13 +46,13 @@
|
|
|
46
46
|
},
|
|
47
47
|
"bugs": "https://github.com/project-fusion/fusion/issues",
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@fusion.dev/helix-core": "0.
|
|
50
|
-
"@fusion.dev/helix-icons": "0.
|
|
49
|
+
"@fusion.dev/helix-core": "0.111.0",
|
|
50
|
+
"@fusion.dev/helix-icons": "0.111.0",
|
|
51
51
|
"uqr": "^0.1.3"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
|
-
"@fusion.dev/helix-cem": "0.
|
|
55
|
-
"@fusion.dev/helix-testing": "0.
|
|
54
|
+
"@fusion.dev/helix-cem": "0.111.0",
|
|
55
|
+
"@fusion.dev/helix-testing": "0.111.0",
|
|
56
56
|
"@fusion.dev/scripts": "0.0.0-dev",
|
|
57
57
|
"@happy-dom/global-registrator": "^20.0.0",
|
|
58
58
|
"@lit-labs/ssr": "^4.1.0",
|
package/types/jsx.d.ts
CHANGED
|
@@ -2242,6 +2242,24 @@ Written to select from outside, and read to act on the selection. */
|
|
|
2242
2242
|
"stopped-label"?: (HelixHeadlessCanvas["stoppedLabel"]) | undefined;
|
|
2243
2243
|
/** The text announced when a connection is stopped before it is requested. */
|
|
2244
2244
|
stoppedLabel?: (HelixHeadlessCanvas["stoppedLabel"]) | undefined;
|
|
2245
|
+
/** What each tone means on this board, in words read out with the cards and
|
|
2246
|
+
connections in it, such as `{"danger": "Blocked", "success": "Done"}`.
|
|
2247
|
+
|
|
2248
|
+
**Named by the page, since the tone names a color and the page gives it
|
|
2249
|
+
its meaning.** JSON Canvas leaves its six colors to the application, so
|
|
2250
|
+
red is "blocked" on one board and "urgent" on the next. A reader who can
|
|
2251
|
+
see the board is told by the color; this is how a reader who cannot is
|
|
2252
|
+
told the same. A tone left out is not read. */
|
|
2253
|
+
"tone-labels"?: (HelixHeadlessCanvas["toneLabels"]) | undefined;
|
|
2254
|
+
/** What each tone means on this board, in words read out with the cards and
|
|
2255
|
+
connections in it, such as `{"danger": "Blocked", "success": "Done"}`.
|
|
2256
|
+
|
|
2257
|
+
**Named by the page, since the tone names a color and the page gives it
|
|
2258
|
+
its meaning.** JSON Canvas leaves its six colors to the application, so
|
|
2259
|
+
red is "blocked" on one board and "urgent" on the next. A reader who can
|
|
2260
|
+
see the board is told by the color; this is how a reader who cannot is
|
|
2261
|
+
told the same. A tone left out is not read. */
|
|
2262
|
+
toneLabels?: (HelixHeadlessCanvas["toneLabels"]) | undefined;
|
|
2245
2263
|
/** Which controls to show, as a list such as `pan zoom fullscreen`, or
|
|
2246
2264
|
`none`. A family can add words of its own.
|
|
2247
2265
|
|
|
@@ -2542,6 +2560,24 @@ Written to select from outside, and read to act on the selection. */
|
|
|
2542
2560
|
"attr:stopped-label"?: (HelixHeadlessCanvas["stoppedLabel"]) | undefined;
|
|
2543
2561
|
/** The text announced when a connection is stopped before it is requested. */
|
|
2544
2562
|
"prop:stoppedLabel"?: (HelixHeadlessCanvas["stoppedLabel"]) | undefined;
|
|
2563
|
+
/** What each tone means on this board, in words read out with the cards and
|
|
2564
|
+
connections in it, such as `{"danger": "Blocked", "success": "Done"}`.
|
|
2565
|
+
|
|
2566
|
+
**Named by the page, since the tone names a color and the page gives it
|
|
2567
|
+
its meaning.** JSON Canvas leaves its six colors to the application, so
|
|
2568
|
+
red is "blocked" on one board and "urgent" on the next. A reader who can
|
|
2569
|
+
see the board is told by the color; this is how a reader who cannot is
|
|
2570
|
+
told the same. A tone left out is not read. */
|
|
2571
|
+
"attr:tone-labels"?: (HelixHeadlessCanvas["toneLabels"]) | undefined;
|
|
2572
|
+
/** What each tone means on this board, in words read out with the cards and
|
|
2573
|
+
connections in it, such as `{"danger": "Blocked", "success": "Done"}`.
|
|
2574
|
+
|
|
2575
|
+
**Named by the page, since the tone names a color and the page gives it
|
|
2576
|
+
its meaning.** JSON Canvas leaves its six colors to the application, so
|
|
2577
|
+
red is "blocked" on one board and "urgent" on the next. A reader who can
|
|
2578
|
+
see the board is told by the color; this is how a reader who cannot is
|
|
2579
|
+
told the same. A tone left out is not read. */
|
|
2580
|
+
"prop:toneLabels"?: (HelixHeadlessCanvas["toneLabels"]) | undefined;
|
|
2545
2581
|
/** Which controls to show, as a list such as `pan zoom fullscreen`, or
|
|
2546
2582
|
`none`. A family can add words of its own.
|
|
2547
2583
|
|
|
@@ -24658,6 +24694,14 @@ export type CustomElements = {
|
|
|
24658
24694
|
*
|
|
24659
24695
|
* Written to select from outside, and read to act on the selection.
|
|
24660
24696
|
* - `stopped-label`/`stoppedLabel`: The text announced when a connection is stopped before it is requested.
|
|
24697
|
+
* - `tone-labels`/`toneLabels`: What each tone means on this board, in words read out with the cards and
|
|
24698
|
+
* connections in it, such as `{"danger": "Blocked", "success": "Done"}`.
|
|
24699
|
+
*
|
|
24700
|
+
* **Named by the page, since the tone names a color and the page gives it
|
|
24701
|
+
* its meaning.** JSON Canvas leaves its six colors to the application, so
|
|
24702
|
+
* red is "blocked" on one board and "urgent" on the next. A reader who can
|
|
24703
|
+
* see the board is told by the color; this is how a reader who cannot is
|
|
24704
|
+
* told the same. A tone left out is not read.
|
|
24661
24705
|
* - `controls`: Which controls to show, as a list such as `pan zoom fullscreen`, or
|
|
24662
24706
|
* `none`. A family can add words of its own.
|
|
24663
24707
|
*
|
|
@@ -44594,6 +44638,14 @@ export type CustomElementsSolidJs = {
|
|
|
44594
44638
|
*
|
|
44595
44639
|
* Written to select from outside, and read to act on the selection.
|
|
44596
44640
|
* - `stopped-label`/`stoppedLabel`: The text announced when a connection is stopped before it is requested.
|
|
44641
|
+
* - `tone-labels`/`toneLabels`: What each tone means on this board, in words read out with the cards and
|
|
44642
|
+
* connections in it, such as `{"danger": "Blocked", "success": "Done"}`.
|
|
44643
|
+
*
|
|
44644
|
+
* **Named by the page, since the tone names a color and the page gives it
|
|
44645
|
+
* its meaning.** JSON Canvas leaves its six colors to the application, so
|
|
44646
|
+
* red is "blocked" on one board and "urgent" on the next. A reader who can
|
|
44647
|
+
* see the board is told by the color; this is how a reader who cannot is
|
|
44648
|
+
* told the same. A tone left out is not read.
|
|
44597
44649
|
* - `controls`: Which controls to show, as a list such as `pan zoom fullscreen`, or
|
|
44598
44650
|
* `none`. A family can add words of its own.
|
|
44599
44651
|
*
|
package/types/svelte.d.ts
CHANGED
|
@@ -24,6 +24,8 @@ declare module 'svelte/elements' {
|
|
|
24
24
|
'helix-headless-callout': CustomElements['helix-headless-callout']
|
|
25
25
|
'helix-headless-canvas-edge': CustomElements['helix-headless-canvas-edge']
|
|
26
26
|
'helix-headless-canvas-node': CustomElements['helix-headless-canvas-node']
|
|
27
|
+
'danger': CustomElements['danger']
|
|
28
|
+
'success': CustomElements['success']
|
|
27
29
|
'helix-headless-canvas': CustomElements['helix-headless-canvas']
|
|
28
30
|
'helix-headless-card': CustomElements['helix-headless-card']
|
|
29
31
|
'helix-headless-carousel': CustomElements['helix-headless-carousel']
|
package/types/vue.d.ts
CHANGED
|
@@ -1246,6 +1246,24 @@ Written to select from outside, and read to act on the selection. */
|
|
|
1246
1246
|
"stopped-label"?: (HelixHeadlessCanvas["stoppedLabel"]) | undefined;
|
|
1247
1247
|
/** The text announced when a connection is stopped before it is requested. */
|
|
1248
1248
|
stoppedLabel?: (HelixHeadlessCanvas["stoppedLabel"]) | undefined;
|
|
1249
|
+
/** What each tone means on this board, in words read out with the cards and
|
|
1250
|
+
connections in it, such as `{"danger": "Blocked", "success": "Done"}`.
|
|
1251
|
+
|
|
1252
|
+
**Named by the page, since the tone names a color and the page gives it
|
|
1253
|
+
its meaning.** JSON Canvas leaves its six colors to the application, so
|
|
1254
|
+
red is "blocked" on one board and "urgent" on the next. A reader who can
|
|
1255
|
+
see the board is told by the color; this is how a reader who cannot is
|
|
1256
|
+
told the same. A tone left out is not read. */
|
|
1257
|
+
"tone-labels"?: (HelixHeadlessCanvas["toneLabels"]) | undefined;
|
|
1258
|
+
/** What each tone means on this board, in words read out with the cards and
|
|
1259
|
+
connections in it, such as `{"danger": "Blocked", "success": "Done"}`.
|
|
1260
|
+
|
|
1261
|
+
**Named by the page, since the tone names a color and the page gives it
|
|
1262
|
+
its meaning.** JSON Canvas leaves its six colors to the application, so
|
|
1263
|
+
red is "blocked" on one board and "urgent" on the next. A reader who can
|
|
1264
|
+
see the board is told by the color; this is how a reader who cannot is
|
|
1265
|
+
told the same. A tone left out is not read. */
|
|
1266
|
+
toneLabels?: (HelixHeadlessCanvas["toneLabels"]) | undefined;
|
|
1249
1267
|
/** Which controls to show, as a list such as `pan zoom fullscreen`, or
|
|
1250
1268
|
`none`. A family can add words of its own.
|
|
1251
1269
|
|