@fusion.dev/helix-headless 0.117.0 → 0.118.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/types/vue.d.ts CHANGED
@@ -196,7 +196,9 @@ import type {
196
196
  HelixFacetEvent,
197
197
  HelixActivateEvent,
198
198
  HelixBeforeActivateEvent,
199
+ HelixGraphLayoutEvent,
199
200
  HelixGraphPanEvent,
201
+ HelixGraphPartChangeEvent,
200
202
  HelixGraphReadyEvent,
201
203
  HelixGraphZoomEvent,
202
204
  HelixResizeEvent,
@@ -1269,6 +1271,12 @@ red is "blocked" on one board and "urgent" on the next. A reader who can
1269
1271
  see the board is told by the color; this is how a reader who cannot is
1270
1272
  told the same. A tone left out is not read. */
1271
1273
  toneLabels?: (HelixHeadlessCanvas["toneLabels"]) | undefined;
1274
+ /** The hint shown when a surface waiting to be pressed is scrolled or
1275
+ swiped over, with `gestures="activate"`. Absent is the family's own. */
1276
+ "activate-hint-label"?: (HelixHeadlessCanvas["activateHintLabel"]) | undefined;
1277
+ /** The hint shown when a surface waiting to be pressed is scrolled or
1278
+ swiped over, with `gestures="activate"`. Absent is the family's own. */
1279
+ activateHintLabel?: (HelixHeadlessCanvas["activateHintLabel"]) | undefined;
1272
1280
  /** Which controls to show, as a list such as `pan zoom fullscreen`, or
1273
1281
  `none`. A family can add words of its own.
1274
1282
 
@@ -1333,6 +1341,26 @@ would write an attribute onto every host that no server sent. */
1333
1341
  "fullscreen-label"?: (HelixHeadlessCanvas["fullscreenLabel"]) | undefined;
1334
1342
  /** The fullscreen button's label. */
1335
1343
  fullscreenLabel?: (HelixHeadlessCanvas["fullscreenLabel"]) | undefined;
1344
+ /** Which gestures the surface takes from the page.
1345
+
1346
+ - `always`: the surface takes the wheel and one finger, for a surface
1347
+ that is the page, such as a full-screen view. A map rests here.
1348
+ - Unset is the family's own: `always` for a map, and for a board, a
1349
+ drag and a pinch, with the plain wheel left to the page until the
1350
+ board fills the screen.
1351
+ - `cooperative`: the wheel and one finger scroll the page, and the
1352
+ surface takes Ctrl or ⌘ with the wheel, and two fingers. The frame
1353
+ says so when a gesture passes to the page. Best for a surface embedded
1354
+ in a page.
1355
+ - `activate`: the surface takes nothing until it is pressed, and gives it
1356
+ back on Escape, when the pointer leaves it, or on a press elsewhere.
1357
+
1358
+ The keyboard and the frame's buttons work in every mode.
1359
+
1360
+ **Unreflected and without a default**, because a default that reflected
1361
+ would write an attribute onto every host that no server sent, and the
1362
+ hydration that followed would disagree with it. */
1363
+ gestures?: (HelixHeadlessCanvas["gestures"]) | undefined;
1336
1364
  /** How long, in milliseconds, before the header and footer hide when the user is inactive. `0` keeps them visible.
1337
1365
 
1338
1366
  Zero keeps it up, which is the default: these controls are how a keyboard
@@ -1387,6 +1415,26 @@ at any zoom, and a consumer who wants their own units multiplies by them. */
1387
1415
  "pan-up-label"?: (HelixHeadlessCanvas["panUpLabel"]) | undefined;
1388
1416
  /** The pan up button's label. */
1389
1417
  panUpLabel?: (HelixHeadlessCanvas["panUpLabel"]) | undefined;
1418
+ /** The hint shown when one finger swipes over a surface with
1419
+ `gestures="cooperative"`. Absent is the family's own. */
1420
+ "two-finger-hint-label"?: (HelixHeadlessCanvas["twoFingerHintLabel"]) | undefined;
1421
+ /** The hint shown when one finger swipes over a surface with
1422
+ `gestures="cooperative"`. Absent is the family's own. */
1423
+ twoFingerHintLabel?: (HelixHeadlessCanvas["twoFingerHintLabel"]) | undefined;
1424
+ /** The line shown while a surface with `gestures="activate"` has the
1425
+ gestures. Absent is the family's own. */
1426
+ "using-label"?: (HelixHeadlessCanvas["usingLabel"]) | undefined;
1427
+ /** The line shown while a surface with `gestures="activate"` has the
1428
+ gestures. Absent is the family's own. */
1429
+ usingLabel?: (HelixHeadlessCanvas["usingLabel"]) | undefined;
1430
+ /** The hint shown when the wheel scrolls past a surface with
1431
+ `gestures="cooperative"`, with `{key}`, which is ⌘ on a Mac and Ctrl
1432
+ elsewhere. Absent is the family's own. */
1433
+ "wheel-hint-label"?: (HelixHeadlessCanvas["wheelHintLabel"]) | undefined;
1434
+ /** The hint shown when the wheel scrolls past a surface with
1435
+ `gestures="cooperative"`, with `{key}`, which is ⌘ on a Mac and Ctrl
1436
+ elsewhere. Absent is the family's own. */
1437
+ wheelHintLabel?: (HelixHeadlessCanvas["wheelHintLabel"]) | undefined;
1390
1438
  /** The zoom in button's label. */
1391
1439
  "zoom-in-label"?: (HelixHeadlessCanvas["zoomInLabel"]) | undefined;
1392
1440
  /** The zoom in button's label. */
@@ -4762,9 +4810,15 @@ export type HelixHeadlessGraphHelixActivateElementEvent =
4762
4810
  /** `helix-before-activate` event type */
4763
4811
  export type HelixHeadlessGraphHelixBeforeActivateElementEvent =
4764
4812
  HelixHeadlessGraphElementEvent<HelixBeforeActivateEvent>;
4813
+ /** `helix-graph-layout` event type */
4814
+ export type HelixHeadlessGraphHelixGraphLayoutElementEvent =
4815
+ HelixHeadlessGraphElementEvent<HelixGraphLayoutEvent>;
4765
4816
  /** `helix-graph-pan` event type */
4766
4817
  export type HelixHeadlessGraphHelixGraphPanElementEvent =
4767
4818
  HelixHeadlessGraphElementEvent<HelixGraphPanEvent>;
4819
+ /** `helix-graph-part-change` event type */
4820
+ export type HelixHeadlessGraphHelixGraphPartChangeElementEvent =
4821
+ HelixHeadlessGraphElementEvent<HelixGraphPartChangeEvent>;
4768
4822
  /** `helix-graph-ready` event type */
4769
4823
  export type HelixHeadlessGraphHelixGraphReadyElementEvent =
4770
4824
  HelixHeadlessGraphElementEvent<HelixGraphReadyEvent>;
@@ -4807,6 +4861,12 @@ Required. */
4807
4861
  "selected-label"?: (HelixHeadlessGraph["selectedLabel"]) | undefined;
4808
4862
  /** How the selected note is described in the list. */
4809
4863
  selectedLabel?: (HelixHeadlessGraph["selectedLabel"]) | undefined;
4864
+ /** The hint shown when a surface waiting to be pressed is scrolled or
4865
+ swiped over, with `gestures="activate"`. Absent is the family's own. */
4866
+ "activate-hint-label"?: (HelixHeadlessGraph["activateHintLabel"]) | undefined;
4867
+ /** The hint shown when a surface waiting to be pressed is scrolled or
4868
+ swiped over, with `gestures="activate"`. Absent is the family's own. */
4869
+ activateHintLabel?: (HelixHeadlessGraph["activateHintLabel"]) | undefined;
4810
4870
  /** Which controls to show, as a list such as `pan zoom fullscreen`, or
4811
4871
  `none`. A family can add words of its own.
4812
4872
 
@@ -4871,6 +4931,26 @@ would write an attribute onto every host that no server sent. */
4871
4931
  "fullscreen-label"?: (HelixHeadlessGraph["fullscreenLabel"]) | undefined;
4872
4932
  /** The fullscreen button's label. */
4873
4933
  fullscreenLabel?: (HelixHeadlessGraph["fullscreenLabel"]) | undefined;
4934
+ /** Which gestures the surface takes from the page.
4935
+
4936
+ - `always`: the surface takes the wheel and one finger, for a surface
4937
+ that is the page, such as a full-screen view. A map rests here.
4938
+ - Unset is the family's own: `always` for a map, and for a board, a
4939
+ drag and a pinch, with the plain wheel left to the page until the
4940
+ board fills the screen.
4941
+ - `cooperative`: the wheel and one finger scroll the page, and the
4942
+ surface takes Ctrl or ⌘ with the wheel, and two fingers. The frame
4943
+ says so when a gesture passes to the page. Best for a surface embedded
4944
+ in a page.
4945
+ - `activate`: the surface takes nothing until it is pressed, and gives it
4946
+ back on Escape, when the pointer leaves it, or on a press elsewhere.
4947
+
4948
+ The keyboard and the frame's buttons work in every mode.
4949
+
4950
+ **Unreflected and without a default**, because a default that reflected
4951
+ would write an attribute onto every host that no server sent, and the
4952
+ hydration that followed would disagree with it. */
4953
+ gestures?: (HelixHeadlessGraph["gestures"]) | undefined;
4874
4954
  /** How long, in milliseconds, before the header and footer hide when the user is inactive. `0` keeps them visible.
4875
4955
 
4876
4956
  Zero keeps it up, which is the default: these controls are how a keyboard
@@ -4925,6 +5005,26 @@ at any zoom, and a consumer who wants their own units multiplies by them. */
4925
5005
  "pan-up-label"?: (HelixHeadlessGraph["panUpLabel"]) | undefined;
4926
5006
  /** The pan up button's label. */
4927
5007
  panUpLabel?: (HelixHeadlessGraph["panUpLabel"]) | undefined;
5008
+ /** The hint shown when one finger swipes over a surface with
5009
+ `gestures="cooperative"`. Absent is the family's own. */
5010
+ "two-finger-hint-label"?: (HelixHeadlessGraph["twoFingerHintLabel"]) | undefined;
5011
+ /** The hint shown when one finger swipes over a surface with
5012
+ `gestures="cooperative"`. Absent is the family's own. */
5013
+ twoFingerHintLabel?: (HelixHeadlessGraph["twoFingerHintLabel"]) | undefined;
5014
+ /** The line shown while a surface with `gestures="activate"` has the
5015
+ gestures. Absent is the family's own. */
5016
+ "using-label"?: (HelixHeadlessGraph["usingLabel"]) | undefined;
5017
+ /** The line shown while a surface with `gestures="activate"` has the
5018
+ gestures. Absent is the family's own. */
5019
+ usingLabel?: (HelixHeadlessGraph["usingLabel"]) | undefined;
5020
+ /** The hint shown when the wheel scrolls past a surface with
5021
+ `gestures="cooperative"`, with `{key}`, which is ⌘ on a Mac and Ctrl
5022
+ elsewhere. Absent is the family's own. */
5023
+ "wheel-hint-label"?: (HelixHeadlessGraph["wheelHintLabel"]) | undefined;
5024
+ /** The hint shown when the wheel scrolls past a surface with
5025
+ `gestures="cooperative"`, with `{key}`, which is ⌘ on a Mac and Ctrl
5026
+ elsewhere. Absent is the family's own. */
5027
+ wheelHintLabel?: (HelixHeadlessGraph["wheelHintLabel"]) | undefined;
4928
5028
  /** The zoom in button's label. */
4929
5029
  "zoom-in-label"?: (HelixHeadlessGraph["zoomInLabel"]) | undefined;
4930
5030
  /** The zoom in button's label. */
@@ -4961,11 +5061,15 @@ export type HelixHeadlessGraphVueEvents = {
4961
5061
  "helix-activate": HelixHeadlessGraphHelixActivateElementEvent;
4962
5062
  /** A note is about to be selected. Cancelable: cancel it to keep the selection in your own state. */
4963
5063
  "helix-before-activate": HelixHeadlessGraphHelixBeforeActivateElementEvent;
4964
- /** A pan button or arrow key was pressed. Move the drawing. */
5064
+ /** A layout settled, with where it put each note, sent by `laidOut()`. Keep the positions and pass them back as each note's `x` and `y`. */
5065
+ "helix-graph-layout": HelixHeadlessGraphHelixGraphLayoutElementEvent;
5066
+ /** A pan button or arrow key was pressed. `connectGraph` moves the drawing. */
4965
5067
  "helix-graph-pan": HelixHeadlessGraphHelixGraphPanElementEvent;
5068
+ /** The notes, the links, the selection, the depth or the gestures changed. Used by `connectGraph`; pages do not need to listen for it. */
5069
+ "helix-graph-part-change": HelixHeadlessGraphHelixGraphPartChangeElementEvent;
4966
5070
  /** The graph has been drawn whole, laid out and settled. Sent each time `drawn()` says it is drawn after it was not. */
4967
5071
  "helix-graph-ready": HelixHeadlessGraphHelixGraphReadyElementEvent;
4968
- /** A zoom button or key was pressed. Zoom the drawing. */
5072
+ /** A zoom button or key was pressed. `connectGraph` zooms the drawing. */
4969
5073
  "helix-graph-zoom": HelixHeadlessGraphHelixGraphZoomElementEvent;
4970
5074
  };
4971
5075
 
@@ -6420,12 +6524,6 @@ export type HelixHeadlessMapHelixMapZoomElementEvent =
6420
6524
  HelixHeadlessMapElementEvent<HelixMapZoomEvent>;
6421
6525
 
6422
6526
  export type HelixHeadlessMapVueProps = {
6423
- /** The hint shown when a map waiting to be pressed is scrolled or swiped
6424
- over, with `gestures="activate"`. */
6425
- "activate-hint-label"?: (HelixHeadlessMap["activateHintLabel"]) | undefined;
6426
- /** The hint shown when a map waiting to be pressed is scrolled or swiped
6427
- over, with `gestures="activate"`. */
6428
- activateHintLabel?: (HelixHeadlessMap["activateHintLabel"]) | undefined;
6429
6527
  /** The map's rotation, in degrees clockwise from north. `connectMap` keeps it
6430
6528
  current, and the Face north button's needle turns with it. */
6431
6529
  bearing?: (HelixHeadlessMap["bearing"]) | undefined;
@@ -6440,19 +6538,6 @@ the map zooms in, and pressing one zooms in to its places. */
6440
6538
  "flat-label"?: (HelixHeadlessMap["flatLabel"]) | undefined;
6441
6539
  /** What screen readers hear when the map is tilted back to looking straight down. */
6442
6540
  flatLabel?: (HelixHeadlessMap["flatLabel"]) | undefined;
6443
- /** Which gestures the map takes from the page.
6444
-
6445
- - `always`, which unset is: the wheel zooms the map and one finger pans
6446
- it, for a map that is the page, such as a full-screen view.
6447
- - `cooperative`: the wheel and one finger scroll the page, and the map
6448
- takes Ctrl or ⌘ with the wheel, and two fingers. The frame says so
6449
- when a gesture passes to the page. Best for a map embedded in a page.
6450
- - `activate`: the map takes nothing until it is pressed, and gives it
6451
- back on Escape, when the pointer leaves it, or on a press elsewhere.
6452
-
6453
- The keyboard and the frame's buttons work in every mode. The renderer is
6454
- told through the connector, so MapLibre and Leaflet behave alike. */
6455
- gestures?: (HelixHeadlessMap["gestures"]) | undefined;
6456
6541
  /** The Hybrid map type's name. */
6457
6542
  "hybrid-label"?: (HelixHeadlessMap["hybridLabel"]) | undefined;
6458
6543
  /** The Hybrid map type's name. */
@@ -6534,22 +6619,6 @@ top of the map faces, clockwise from north. */
6534
6619
  /** What screen readers hear when the map is turned. `{degrees}` is the way the
6535
6620
  top of the map faces, clockwise from north. */
6536
6621
  turnedLabel?: (HelixHeadlessMap["turnedLabel"]) | undefined;
6537
- /** The hint shown when one finger swipes over a map with `gestures="cooperative"`. */
6538
- "two-finger-hint-label"?: (HelixHeadlessMap["twoFingerHintLabel"]) | undefined;
6539
- /** The hint shown when one finger swipes over a map with `gestures="cooperative"`. */
6540
- twoFingerHintLabel?: (HelixHeadlessMap["twoFingerHintLabel"]) | undefined;
6541
- /** The line shown while a map with `gestures="activate"` has the gestures. */
6542
- "using-label"?: (HelixHeadlessMap["usingLabel"]) | undefined;
6543
- /** The line shown while a map with `gestures="activate"` has the gestures. */
6544
- usingLabel?: (HelixHeadlessMap["usingLabel"]) | undefined;
6545
- /** The hint shown when the wheel scrolls past a map with
6546
- `gestures="cooperative"`, with `{key}`, which is ⌘ on a Mac and Ctrl
6547
- elsewhere, as the renderer reads it. */
6548
- "wheel-hint-label"?: (HelixHeadlessMap["wheelHintLabel"]) | undefined;
6549
- /** The hint shown when the wheel scrolls past a map with
6550
- `gestures="cooperative"`, with `{key}`, which is ⌘ on a Mac and Ctrl
6551
- elsewhere, as the renderer reads it. */
6552
- wheelHintLabel?: (HelixHeadlessMap["wheelHintLabel"]) | undefined;
6553
6622
  /** What screen readers hear after a zoom. `{level}` is the zoom level. */
6554
6623
  "zoomed-label"?: (HelixHeadlessMap["zoomedLabel"]) | undefined;
6555
6624
  /** What screen readers hear after a zoom. `{level}` is the zoom level. */
@@ -6560,6 +6629,12 @@ current, and the map says it after a zoom. */
6560
6629
  /** How far the map is zoomed, in its renderer's levels. `connectMap` keeps it
6561
6630
  current, and the map says it after a zoom. */
6562
6631
  zoomLevel?: (HelixHeadlessMap["zoomLevel"]) | undefined;
6632
+ /** The hint shown when a surface waiting to be pressed is scrolled or
6633
+ swiped over, with `gestures="activate"`. Absent is the family's own. */
6634
+ "activate-hint-label"?: (HelixHeadlessMap["activateHintLabel"]) | undefined;
6635
+ /** The hint shown when a surface waiting to be pressed is scrolled or
6636
+ swiped over, with `gestures="activate"`. Absent is the family's own. */
6637
+ activateHintLabel?: (HelixHeadlessMap["activateHintLabel"]) | undefined;
6563
6638
  /** Which controls to show, as a list such as `pan zoom fullscreen`, or
6564
6639
  `none`. A family can add words of its own.
6565
6640
 
@@ -6624,6 +6699,26 @@ would write an attribute onto every host that no server sent. */
6624
6699
  "fullscreen-label"?: (HelixHeadlessMap["fullscreenLabel"]) | undefined;
6625
6700
  /** The fullscreen button's label. */
6626
6701
  fullscreenLabel?: (HelixHeadlessMap["fullscreenLabel"]) | undefined;
6702
+ /** Which gestures the surface takes from the page.
6703
+
6704
+ - `always`: the surface takes the wheel and one finger, for a surface
6705
+ that is the page, such as a full-screen view. A map rests here.
6706
+ - Unset is the family's own: `always` for a map, and for a board, a
6707
+ drag and a pinch, with the plain wheel left to the page until the
6708
+ board fills the screen.
6709
+ - `cooperative`: the wheel and one finger scroll the page, and the
6710
+ surface takes Ctrl or ⌘ with the wheel, and two fingers. The frame
6711
+ says so when a gesture passes to the page. Best for a surface embedded
6712
+ in a page.
6713
+ - `activate`: the surface takes nothing until it is pressed, and gives it
6714
+ back on Escape, when the pointer leaves it, or on a press elsewhere.
6715
+
6716
+ The keyboard and the frame's buttons work in every mode.
6717
+
6718
+ **Unreflected and without a default**, because a default that reflected
6719
+ would write an attribute onto every host that no server sent, and the
6720
+ hydration that followed would disagree with it. */
6721
+ gestures?: (HelixHeadlessMap["gestures"]) | undefined;
6627
6722
  /** How long, in milliseconds, before the header and footer hide when the user is inactive. `0` keeps them visible.
6628
6723
 
6629
6724
  Zero keeps it up, which is the default: these controls are how a keyboard
@@ -6678,6 +6773,26 @@ at any zoom, and a consumer who wants their own units multiplies by them. */
6678
6773
  "pan-up-label"?: (HelixHeadlessMap["panUpLabel"]) | undefined;
6679
6774
  /** The pan up button's label. */
6680
6775
  panUpLabel?: (HelixHeadlessMap["panUpLabel"]) | undefined;
6776
+ /** The hint shown when one finger swipes over a surface with
6777
+ `gestures="cooperative"`. Absent is the family's own. */
6778
+ "two-finger-hint-label"?: (HelixHeadlessMap["twoFingerHintLabel"]) | undefined;
6779
+ /** The hint shown when one finger swipes over a surface with
6780
+ `gestures="cooperative"`. Absent is the family's own. */
6781
+ twoFingerHintLabel?: (HelixHeadlessMap["twoFingerHintLabel"]) | undefined;
6782
+ /** The line shown while a surface with `gestures="activate"` has the
6783
+ gestures. Absent is the family's own. */
6784
+ "using-label"?: (HelixHeadlessMap["usingLabel"]) | undefined;
6785
+ /** The line shown while a surface with `gestures="activate"` has the
6786
+ gestures. Absent is the family's own. */
6787
+ usingLabel?: (HelixHeadlessMap["usingLabel"]) | undefined;
6788
+ /** The hint shown when the wheel scrolls past a surface with
6789
+ `gestures="cooperative"`, with `{key}`, which is ⌘ on a Mac and Ctrl
6790
+ elsewhere. Absent is the family's own. */
6791
+ "wheel-hint-label"?: (HelixHeadlessMap["wheelHintLabel"]) | undefined;
6792
+ /** The hint shown when the wheel scrolls past a surface with
6793
+ `gestures="cooperative"`, with `{key}`, which is ⌘ on a Mac and Ctrl
6794
+ elsewhere. Absent is the family's own. */
6795
+ wheelHintLabel?: (HelixHeadlessMap["wheelHintLabel"]) | undefined;
6681
6796
  /** The zoom in button's label. */
6682
6797
  "zoom-in-label"?: (HelixHeadlessMap["zoomInLabel"]) | undefined;
6683
6798
  /** The zoom in button's label. */
@@ -12327,7 +12442,7 @@ export interface WcToolkitVueGlobalComponents {
12327
12442
  HelixHeadlessFormatDateVueProps,
12328
12443
  HelixHeadlessFormatDateVueEvents
12329
12444
  >;
12330
- /** Helix draws no graph. A force layout of thousands of notes is physics and WebGL, which a renderer such as Sigma.js does. Put the renderer's box in the frame, draw 'nodes' and 'links' in it, and answer the frame's pan and zoom events by moving the drawing. What the frame adds is what a drawing of a graph cannot do: a list of every note beside it, which is the graph for a screen reader and a quick way to find a note for anyone. The selected note comes first, then the notes it links to and from, then every other note, and the search field narrows it. Selecting a note in the list or in the drawing is the same selection. Set 'depth' to show the local graph: only the notes within that many links of the selected one. 'nodes' and 'links' are properties, never markup: a graph of ten thousand notes as ten thousand elements would cost what the renderer exists to save. The list draws only the rows in view. The list scrolls on this tier. It carries 'data-scroller', and 'core' ships '[data-scroller] { overflow: auto }' into every shadow root. You still need to set a block size on the list, or it grows to hold every row. */
12445
+ /** Helix draws no graph. A force layout of thousands of notes is physics and WebGL, which a renderer such as Sigma.js does. Put the renderer's box in the frame, and 'connectGraph' from '@fusion.dev/helix-graph' draws 'nodes' and 'links' in it and keeps it in step with the frame. What the frame adds is what a drawing of a graph cannot do: a list of every note beside it, which is the graph for a screen reader and a quick way to find a note for anyone. The selected note comes first, then the notes it links to and from, then every other note, and the search field narrows it. Selecting a note in the list or in the drawing is the same selection. Set 'depth' to show the local graph: only the notes within that many links of the selected one. 'nodes' and 'links' are properties, never markup: a graph of ten thousand notes as ten thousand elements would cost what the renderer exists to save. The list draws only the rows in view. The list scrolls on this tier. It carries 'data-scroller', and 'core' ships '[data-scroller] { overflow: auto }' into every shadow root. You still need to set a block size on the list, or it grows to hold every row. */
12331
12446
  "helix-headless-graph": DefineCustomElement<
12332
12447
  HelixHeadlessGraph,
12333
12448
  HelixHeadlessGraphVueProps,