@fusion.dev/helix-core 0.56.0 → 0.57.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.
@@ -457,6 +457,210 @@
457
457
  }
458
458
  ]
459
459
  },
460
+ {
461
+ "kind": "javascript-module",
462
+ "path": "src/controllers/cue-controller/cue-controller.ts",
463
+ "declarations": [
464
+ {
465
+ "kind": "function",
466
+ "name": "captionTracks",
467
+ "return": {
468
+ "type": {
469
+ "text": "TextTrack[]"
470
+ }
471
+ },
472
+ "parameters": [
473
+ {
474
+ "name": "media",
475
+ "type": {
476
+ "text": "HTMLMediaElement | null"
477
+ }
478
+ }
479
+ ],
480
+ "description": "The tracks a reader could choose between, in the order they were written.\n\nFiltered by kind, because `textTracks` also carries `chapters`, `metadata`\nand `descriptions`, and a menu offering \"Chapters\" as a subtitle language\nwould be offering something that draws no words. Read off the media element\nrather than off the slot: a `<track>` added later is in one and not the\nother, and the element is the one that has resolved them."
481
+ },
482
+ {
483
+ "kind": "function",
484
+ "name": "showCaption",
485
+ "return": {
486
+ "type": {
487
+ "text": "void"
488
+ }
489
+ },
490
+ "parameters": [
491
+ {
492
+ "name": "tracks",
493
+ "type": {
494
+ "text": "readonly TextTrack[]"
495
+ }
496
+ },
497
+ {
498
+ "name": "index",
499
+ "type": {
500
+ "text": "number"
501
+ }
502
+ }
503
+ ],
504
+ "description": "Shows one track and disables every other, or shows none at `-1`.\n\nEvery other, rather than only the one that was on. Two tracks in `hidden`\nboth fire `cuechange`, so the rendered cue becomes whichever fired last and\na reader who switched language gets the two interleaved. Measured as two\nsubtitles alternating line by line.\n\n`hidden`, never `showing`. Hidden is the mode where a track still fires\n`cuechange` and still fills `activeCues`, and the browser draws nothing,\nwhich is exactly what is wanted when something else is doing the drawing."
505
+ },
506
+ {
507
+ "kind": "function",
508
+ "name": "adoptTrack",
509
+ "return": {
510
+ "type": {
511
+ "text": "boolean"
512
+ }
513
+ },
514
+ "parameters": [
515
+ {
516
+ "name": "track",
517
+ "type": {
518
+ "text": "TextTrack"
519
+ }
520
+ }
521
+ ],
522
+ "description": "Whether a track the platform started showing is now ours to draw.\n\nA `<track default>` arrives `showing`, which is the browser drawing it.\nMoved to `hidden` so the cues keep coming and we draw them instead. What\ncomes back is whether captions are on, which is not always \"off\": a button\nthat began there reported the opposite of what was on screen."
523
+ },
524
+ {
525
+ "kind": "function",
526
+ "name": "captionsAmong",
527
+ "return": {
528
+ "type": {
529
+ "text": "Caption[]"
530
+ }
531
+ },
532
+ "parameters": [
533
+ {
534
+ "name": "media",
535
+ "type": {
536
+ "text": "readonly TrackCopy[]"
537
+ }
538
+ }
539
+ ],
540
+ "description": "The caption tracks among the copies, before the render that draws them.\n\nBy the platform's own reading of `kind`, which is what makes a `<track>` a\ncaption at all: missing is `subtitles` and anything it does not know is\n`metadata`. Read from the video's tracks after the render instead, the count\narrived a render late and asked for one more. Choosing one still goes\nthrough the video's tracks, which hold them in the same order."
541
+ },
542
+ {
543
+ "kind": "function",
544
+ "name": "activeCue",
545
+ "return": {
546
+ "type": {
547
+ "text": "DocumentFragment | undefined"
548
+ }
549
+ },
550
+ "parameters": [
551
+ {
552
+ "name": "track",
553
+ "type": {
554
+ "text": "TextTrack | undefined"
555
+ }
556
+ }
557
+ ],
558
+ "description": "The cue on screen now, as nodes, or nothing between cues.\n\nNodes rather than a string, because `VTTCue.text` is the cue's *source*:\nWebVTT carries markup, and a caption file in the wild is full of it. `<v\nHildy>` names who is speaking, `<b>` and `<i>` and `<u>` mark emphasis, and\n`<c.loud>` classes a line. Rendered as text every one of those arrives on\nscreen as visible angle brackets.\n\n`getCueAsHTML` is the platform parsing its own format, so nothing here has\nto know the grammar and no cue text is ever treated as HTML: what comes\nback is a fragment the browser built, not a string anybody interpolated."
559
+ },
560
+ {
561
+ "kind": "class",
562
+ "description": "Listens to one track's cues at a time, so the next one can take it off.\n\nTaken off whatever it was on before adding it here. `follow` runs from\n`loadedmetadata`, which fires again for every source a reader moves to, and\na consumer adding a `<track>` later gets another. Added without removing, a\nplaylist of six left six listeners on tracks that between them fire for\nevery cue in the video.",
563
+ "name": "CueController",
564
+ "members": [
565
+ {
566
+ "kind": "field",
567
+ "name": "track",
568
+ "type": {
569
+ "text": "TextTrack | undefined"
570
+ },
571
+ "privacy": "private"
572
+ },
573
+ {
574
+ "kind": "method",
575
+ "name": "follow",
576
+ "return": {
577
+ "type": {
578
+ "text": "void"
579
+ }
580
+ },
581
+ "parameters": [
582
+ {
583
+ "name": "track",
584
+ "type": {
585
+ "text": "TextTrack"
586
+ }
587
+ }
588
+ ]
589
+ },
590
+ {
591
+ "kind": "method",
592
+ "name": "hostDisconnected",
593
+ "return": {
594
+ "type": {
595
+ "text": "void"
596
+ }
597
+ }
598
+ },
599
+ {
600
+ "kind": "method",
601
+ "name": "stop",
602
+ "privacy": "private",
603
+ "return": {
604
+ "type": {
605
+ "text": "void"
606
+ }
607
+ }
608
+ }
609
+ ],
610
+ "helix": {}
611
+ }
612
+ ],
613
+ "exports": [
614
+ {
615
+ "kind": "js",
616
+ "name": "captionTracks",
617
+ "declaration": {
618
+ "name": "captionTracks",
619
+ "module": "src/controllers/cue-controller/cue-controller.ts"
620
+ }
621
+ },
622
+ {
623
+ "kind": "js",
624
+ "name": "showCaption",
625
+ "declaration": {
626
+ "name": "showCaption",
627
+ "module": "src/controllers/cue-controller/cue-controller.ts"
628
+ }
629
+ },
630
+ {
631
+ "kind": "js",
632
+ "name": "adoptTrack",
633
+ "declaration": {
634
+ "name": "adoptTrack",
635
+ "module": "src/controllers/cue-controller/cue-controller.ts"
636
+ }
637
+ },
638
+ {
639
+ "kind": "js",
640
+ "name": "captionsAmong",
641
+ "declaration": {
642
+ "name": "captionsAmong",
643
+ "module": "src/controllers/cue-controller/cue-controller.ts"
644
+ }
645
+ },
646
+ {
647
+ "kind": "js",
648
+ "name": "activeCue",
649
+ "declaration": {
650
+ "name": "activeCue",
651
+ "module": "src/controllers/cue-controller/cue-controller.ts"
652
+ }
653
+ },
654
+ {
655
+ "kind": "js",
656
+ "name": "CueController",
657
+ "declaration": {
658
+ "name": "CueController",
659
+ "module": "src/controllers/cue-controller/cue-controller.ts"
660
+ }
661
+ }
662
+ ]
663
+ },
460
664
  {
461
665
  "kind": "javascript-module",
462
666
  "path": "src/controllers/disabled-cascade-controller/disabled-cascade-controller.ts",
@@ -1016,73 +1220,90 @@
1016
1220
  },
1017
1221
  {
1018
1222
  "kind": "javascript-module",
1019
- "path": "src/controllers/focus-trap-controller/focus-trap-controller.ts",
1223
+ "path": "src/controllers/fullscreen-controller/fullscreen-controller.ts",
1020
1224
  "declarations": [
1021
1225
  {
1022
1226
  "kind": "class",
1023
- "description": "Keeps Tab inside a container while it is open, and gives focus back after.\n\nA dialog that does not trap focus is one a keyboard user tabs straight out\nof, into a page they cannot see and cannot get back from. Restoring focus on\nrelease matters just as much: without it, closing a drawer drops the reader\nat the top of the document.\n\nFinding the focusable elements is `focusableElements`, which is a utility\nrather than part of this, because that half is what roving tabindex and\narrow-key navigation need and neither of them traps anything.",
1024
- "name": "FocusTrapController",
1227
+ "description": "Into fullscreen and back, and honest about where the element is.\n\nThe state follows `fullscreenchange` rather than the request, so a refused\nrequest leaves a button that correctly reports \"not fullscreen\".\n\nThe document, rather than the host, is what the event is read from: the\nplatform fires it at the document whichever element went full, so a host that\nasked and was overruled by another one still hears about it.",
1228
+ "name": "FullscreenController",
1025
1229
  "members": [
1026
1230
  {
1027
- "kind": "field",
1028
- "name": "container",
1029
- "type": {
1030
- "text": "HTMLElement | null"
1031
- },
1032
- "privacy": "private",
1033
- "default": "null"
1034
- },
1035
- {
1036
- "kind": "field",
1037
- "name": "frame",
1038
- "type": {
1039
- "text": "number | undefined"
1040
- },
1041
- "privacy": "private",
1042
- "description": "The frame waiting to take focus, so a release can call it off."
1043
- },
1044
- {
1045
- "kind": "field",
1046
- "name": "previous",
1047
- "type": {
1048
- "text": "HTMLElement | null"
1231
+ "kind": "method",
1232
+ "name": "toggle",
1233
+ "return": {
1234
+ "type": {
1235
+ "text": "Promise<void>"
1236
+ }
1049
1237
  },
1050
- "privacy": "private",
1051
- "default": "null"
1052
- },
1053
- {
1054
- "kind": "field",
1055
- "name": "handleKeydown",
1056
- "privacy": "private",
1057
- "readonly": true
1238
+ "description": "Into fullscreen and back, and quiet about being refused.\n\n`requestFullscreen` rejects rather than returning false, and the two\nrefusals a consumer will actually meet are a Permissions Policy that does\nnot grant `fullscreen` to the frame the player is in, and a call without\nuser activation. Both are `TypeError: Permissions check failed`, which is\nthe same message for two different causes.\n\nCaught rather than `void`ed, or a refusal becomes an unhandled rejection\nnaming neither the element nor the reason."
1058
1239
  },
1059
1240
  {
1060
1241
  "kind": "method",
1061
- "name": "activate",
1242
+ "name": "hostConnected",
1062
1243
  "return": {
1063
1244
  "type": {
1064
1245
  "text": "void"
1065
1246
  }
1066
- },
1067
- "parameters": [
1068
- {
1069
- "name": "container",
1070
- "type": {
1071
- "text": "HTMLElement"
1072
- }
1073
- }
1074
- ],
1075
- "description": "Starts trapping, remembering where focus came from."
1247
+ }
1076
1248
  },
1077
1249
  {
1078
1250
  "kind": "method",
1079
- "name": "deactivate",
1251
+ "name": "hostDisconnected",
1080
1252
  "return": {
1081
1253
  "type": {
1082
1254
  "text": "void"
1083
1255
  }
1256
+ }
1257
+ },
1258
+ {
1259
+ "kind": "field",
1260
+ "name": "handleChange",
1261
+ "privacy": "private",
1262
+ "readonly": true
1263
+ }
1264
+ ],
1265
+ "helix": {}
1266
+ }
1267
+ ],
1268
+ "exports": [
1269
+ {
1270
+ "kind": "js",
1271
+ "name": "FullscreenController",
1272
+ "declaration": {
1273
+ "name": "FullscreenController",
1274
+ "module": "src/controllers/fullscreen-controller/fullscreen-controller.ts"
1275
+ }
1276
+ }
1277
+ ]
1278
+ },
1279
+ {
1280
+ "kind": "javascript-module",
1281
+ "path": "src/controllers/idle-controller/idle-controller.ts",
1282
+ "declarations": [
1283
+ {
1284
+ "kind": "class",
1285
+ "description": "How long the reader has been still, which is what an overlay hides itself on.\n\nA wait rather than leaving with the pointer, or a reader moving across a\nsurface to reach a control watches the control vanish under them. The wait is\nonly ever about *idling*: whether anything else keeps the overlay up, a\npaused player or an open menu, is the host's decision, and this only says\nwhen the reader stopped.\n\nThe delay is asked for on every restart rather than taken once, because it\nis a property the consumer can change while the video plays.",
1286
+ "name": "IdleController",
1287
+ "members": [
1288
+ {
1289
+ "kind": "field",
1290
+ "name": "timer",
1291
+ "type": {
1292
+ "text": "ReturnType<typeof setTimeout> | undefined"
1084
1293
  },
1085
- "description": "Stops trapping and returns focus to wherever it was."
1294
+ "privacy": "private"
1295
+ },
1296
+ {
1297
+ "kind": "field",
1298
+ "name": "stir",
1299
+ "readonly": true,
1300
+ "description": "Restarts the wait, on anything that counts as the reader being here.\n\nPointer movement and focus both count, and both have to: a reader using the\nkeyboard never moves a pointer, and a bar that only answered the mouse\nwould leave them nothing to look at. Zero turns the wait off and the bar\ngoes immediately; a large number keeps it up for as long as anyone is\nlikely to look."
1301
+ },
1302
+ {
1303
+ "kind": "field",
1304
+ "name": "leave",
1305
+ "readonly": true,
1306
+ "description": "Leaving is the one case that does not wait: the reader has gone somewhere\nelse, and there is nothing to reach for."
1086
1307
  },
1087
1308
  {
1088
1309
  "kind": "method",
@@ -1100,10 +1321,10 @@
1100
1321
  "exports": [
1101
1322
  {
1102
1323
  "kind": "js",
1103
- "name": "FocusTrapController",
1324
+ "name": "IdleController",
1104
1325
  "declaration": {
1105
- "name": "FocusTrapController",
1106
- "module": "src/controllers/focus-trap-controller/focus-trap-controller.ts"
1326
+ "name": "IdleController",
1327
+ "module": "src/controllers/idle-controller/idle-controller.ts"
1107
1328
  }
1108
1329
  }
1109
1330
  ]
@@ -1372,6 +1593,99 @@
1372
1593
  }
1373
1594
  ]
1374
1595
  },
1596
+ {
1597
+ "kind": "javascript-module",
1598
+ "path": "src/controllers/media-session-controller/media-session-controller.ts",
1599
+ "declarations": [
1600
+ {
1601
+ "kind": "variable",
1602
+ "name": "SKIP_SECONDS",
1603
+ "type": {
1604
+ "text": "number"
1605
+ },
1606
+ "default": "10",
1607
+ "description": "How far a skip control moves, in seconds.\n\nTen, which is the number every player that has one uses, and the number the\nplatform names in `seekbackward` and `seekforward` when it hands over a\ndefault. A different length here would be correct only on this player."
1608
+ },
1609
+ {
1610
+ "kind": "class",
1611
+ "description": "Holds the page's media session for one player, and tells the platform what\nis playing.\n\nThe handlers are what make a headset's play, pause and skip work at all.\nWithout them a platform falls back to guessing which element was meant,\nwhich is right often enough to hide the fault and wrong exactly when there\nare two.",
1612
+ "name": "MediaSessionController",
1613
+ "members": [
1614
+ {
1615
+ "kind": "method",
1616
+ "name": "claim",
1617
+ "return": {
1618
+ "type": {
1619
+ "text": "void"
1620
+ }
1621
+ },
1622
+ "parameters": [
1623
+ {
1624
+ "name": "metadata",
1625
+ "type": {
1626
+ "text": "{ artwork: string; title: string }"
1627
+ }
1628
+ },
1629
+ {
1630
+ "name": "handlers",
1631
+ "type": {
1632
+ "text": "SessionHandlers"
1633
+ }
1634
+ }
1635
+ ],
1636
+ "description": "Takes the session.\n\nOn play rather than on render, which is the ownership rule: a page with two\nplayers gives the session to whichever one the reader started, so a\nheadset's buttons land on what they are listening to rather than on\nwhichever came first in the markup."
1637
+ },
1638
+ {
1639
+ "kind": "method",
1640
+ "name": "report",
1641
+ "return": {
1642
+ "type": {
1643
+ "text": "void"
1644
+ }
1645
+ },
1646
+ "parameters": [
1647
+ {
1648
+ "name": "playing",
1649
+ "type": {
1650
+ "text": "boolean"
1651
+ }
1652
+ }
1653
+ ],
1654
+ "description": "Tells the platform whether the owner is playing, and nothing if it is not the owner."
1655
+ },
1656
+ {
1657
+ "kind": "method",
1658
+ "name": "hostDisconnected",
1659
+ "return": {
1660
+ "type": {
1661
+ "text": "void"
1662
+ }
1663
+ },
1664
+ "description": "The page's one media session goes back to nobody, but only if this\nelement is the one holding it."
1665
+ }
1666
+ ],
1667
+ "helix": {}
1668
+ }
1669
+ ],
1670
+ "exports": [
1671
+ {
1672
+ "kind": "js",
1673
+ "name": "SKIP_SECONDS",
1674
+ "declaration": {
1675
+ "name": "SKIP_SECONDS",
1676
+ "module": "src/controllers/media-session-controller/media-session-controller.ts"
1677
+ }
1678
+ },
1679
+ {
1680
+ "kind": "js",
1681
+ "name": "MediaSessionController",
1682
+ "declaration": {
1683
+ "name": "MediaSessionController",
1684
+ "module": "src/controllers/media-session-controller/media-session-controller.ts"
1685
+ }
1686
+ }
1687
+ ]
1688
+ },
1375
1689
  {
1376
1690
  "kind": "javascript-module",
1377
1691
  "path": "src/controllers/popover-controller/popover-controller.ts",
@@ -1514,6 +1828,90 @@
1514
1828
  }
1515
1829
  ]
1516
1830
  },
1831
+ {
1832
+ "kind": "javascript-module",
1833
+ "path": "src/controllers/remote-playback-controller/remote-playback-controller.ts",
1834
+ "declarations": [
1835
+ {
1836
+ "kind": "class",
1837
+ "description": "Watches for something to play the media on, and stops on the way out.\n\nThe Remote Playback API is the standard one, and it is what Safari\nimplements for AirPlay and Chrome for Cast: one call covers both, where the\nolder `webkitShowPlaybackTargetPicker` covers only the first. Firefox has\nneither, and `remote` simply being absent is what turns the control off\nthere.\n\n`watchAvailability` returns an id that has to be canceled, or the callback\noutlives the element that owns it: a callback holding a removed element is a\nleak with a `@state` write on the end.",
1838
+ "name": "RemotePlaybackController",
1839
+ "members": [
1840
+ {
1841
+ "kind": "field",
1842
+ "name": "media",
1843
+ "type": {
1844
+ "text": "HTMLMediaElement | undefined"
1845
+ },
1846
+ "privacy": "private"
1847
+ },
1848
+ {
1849
+ "kind": "field",
1850
+ "name": "watch",
1851
+ "type": {
1852
+ "text": "number | undefined"
1853
+ },
1854
+ "privacy": "private",
1855
+ "description": "Cancels the availability watch, since it outlives a single render."
1856
+ },
1857
+ {
1858
+ "kind": "method",
1859
+ "name": "attach",
1860
+ "return": {
1861
+ "type": {
1862
+ "text": "Promise<void>"
1863
+ }
1864
+ },
1865
+ "parameters": [
1866
+ {
1867
+ "name": "media",
1868
+ "type": {
1869
+ "text": "HTMLMediaElement"
1870
+ }
1871
+ }
1872
+ ],
1873
+ "description": "Starts watching the media element, once there is one."
1874
+ },
1875
+ {
1876
+ "kind": "method",
1877
+ "name": "prompt",
1878
+ "return": {
1879
+ "type": {
1880
+ "text": "Promise<void>"
1881
+ }
1882
+ },
1883
+ "description": "Opens the platform's own device picker. It has no list of its own."
1884
+ },
1885
+ {
1886
+ "kind": "method",
1887
+ "name": "hostDisconnected",
1888
+ "return": {
1889
+ "type": {
1890
+ "text": "void"
1891
+ }
1892
+ }
1893
+ },
1894
+ {
1895
+ "kind": "field",
1896
+ "name": "handleState",
1897
+ "privacy": "private",
1898
+ "readonly": true
1899
+ }
1900
+ ],
1901
+ "helix": {}
1902
+ }
1903
+ ],
1904
+ "exports": [
1905
+ {
1906
+ "kind": "js",
1907
+ "name": "RemotePlaybackController",
1908
+ "declaration": {
1909
+ "name": "RemotePlaybackController",
1910
+ "module": "src/controllers/remote-playback-controller/remote-playback-controller.ts"
1911
+ }
1912
+ }
1913
+ ]
1914
+ },
1517
1915
  {
1518
1916
  "kind": "javascript-module",
1519
1917
  "path": "src/controllers/source-controller/source-controller.ts",
@@ -4523,6 +4921,62 @@
4523
4921
  "module": "./controllers/copy-controller/copy-controller.js"
4524
4922
  }
4525
4923
  },
4924
+ {
4925
+ "kind": "js",
4926
+ "name": "activeCue",
4927
+ "declaration": {
4928
+ "name": "activeCue",
4929
+ "module": "./controllers/cue-controller/cue-controller.js"
4930
+ }
4931
+ },
4932
+ {
4933
+ "kind": "js",
4934
+ "name": "adoptTrack",
4935
+ "declaration": {
4936
+ "name": "adoptTrack",
4937
+ "module": "./controllers/cue-controller/cue-controller.js"
4938
+ }
4939
+ },
4940
+ {
4941
+ "kind": "js",
4942
+ "name": "Caption",
4943
+ "declaration": {
4944
+ "name": "Caption",
4945
+ "module": "./controllers/cue-controller/cue-controller.js"
4946
+ }
4947
+ },
4948
+ {
4949
+ "kind": "js",
4950
+ "name": "CueController",
4951
+ "declaration": {
4952
+ "name": "CueController",
4953
+ "module": "./controllers/cue-controller/cue-controller.js"
4954
+ }
4955
+ },
4956
+ {
4957
+ "kind": "js",
4958
+ "name": "captionsAmong",
4959
+ "declaration": {
4960
+ "name": "captionsAmong",
4961
+ "module": "./controllers/cue-controller/cue-controller.js"
4962
+ }
4963
+ },
4964
+ {
4965
+ "kind": "js",
4966
+ "name": "captionTracks",
4967
+ "declaration": {
4968
+ "name": "captionTracks",
4969
+ "module": "./controllers/cue-controller/cue-controller.js"
4970
+ }
4971
+ },
4972
+ {
4973
+ "kind": "js",
4974
+ "name": "showCaption",
4975
+ "declaration": {
4976
+ "name": "showCaption",
4977
+ "module": "./controllers/cue-controller/cue-controller.js"
4978
+ }
4979
+ },
4526
4980
  {
4527
4981
  "kind": "js",
4528
4982
  "name": "DisabledCascadeController",
@@ -4605,10 +5059,18 @@
4605
5059
  },
4606
5060
  {
4607
5061
  "kind": "js",
4608
- "name": "FocusTrapController",
5062
+ "name": "FullscreenController",
5063
+ "declaration": {
5064
+ "name": "FullscreenController",
5065
+ "module": "./controllers/fullscreen-controller/fullscreen-controller.js"
5066
+ }
5067
+ },
5068
+ {
5069
+ "kind": "js",
5070
+ "name": "IdleController",
4609
5071
  "declaration": {
4610
- "name": "FocusTrapController",
4611
- "module": "./controllers/focus-trap-controller/focus-trap-controller.js"
5072
+ "name": "IdleController",
5073
+ "module": "./controllers/idle-controller/idle-controller.js"
4612
5074
  }
4613
5075
  },
4614
5076
  {
@@ -4651,6 +5113,30 @@
4651
5113
  "module": "./controllers/keyboard-navigation-controller/keyboard-navigation-controller.js"
4652
5114
  }
4653
5115
  },
5116
+ {
5117
+ "kind": "js",
5118
+ "name": "MediaSessionController",
5119
+ "declaration": {
5120
+ "name": "MediaSessionController",
5121
+ "module": "./controllers/media-session-controller/media-session-controller.js"
5122
+ }
5123
+ },
5124
+ {
5125
+ "kind": "js",
5126
+ "name": "SessionHandlers",
5127
+ "declaration": {
5128
+ "name": "SessionHandlers",
5129
+ "module": "./controllers/media-session-controller/media-session-controller.js"
5130
+ }
5131
+ },
5132
+ {
5133
+ "kind": "js",
5134
+ "name": "SKIP_SECONDS",
5135
+ "declaration": {
5136
+ "name": "SKIP_SECONDS",
5137
+ "module": "./controllers/media-session-controller/media-session-controller.js"
5138
+ }
5139
+ },
4654
5140
  {
4655
5141
  "kind": "js",
4656
5142
  "name": "PopoverController",
@@ -4667,6 +5153,22 @@
4667
5153
  "module": "./controllers/popover-controller/popover-controller.js"
4668
5154
  }
4669
5155
  },
5156
+ {
5157
+ "kind": "js",
5158
+ "name": "RemotePlaybackController",
5159
+ "declaration": {
5160
+ "name": "RemotePlaybackController",
5161
+ "module": "./controllers/remote-playback-controller/remote-playback-controller.js"
5162
+ }
5163
+ },
5164
+ {
5165
+ "kind": "js",
5166
+ "name": "RemoteReport",
5167
+ "declaration": {
5168
+ "name": "RemoteReport",
5169
+ "module": "./controllers/remote-playback-controller/remote-playback-controller.js"
5170
+ }
5171
+ },
4670
5172
  {
4671
5173
  "kind": "js",
4672
5174
  "name": "SourceController",
@@ -5659,6 +6161,30 @@
5659
6161
  "module": "./utils/mark-region/mark-region.js"
5660
6162
  }
5661
6163
  },
6164
+ {
6165
+ "kind": "js",
6166
+ "name": "copiesOf",
6167
+ "declaration": {
6168
+ "name": "copiesOf",
6169
+ "module": "./utils/media-copy/media-copy.js"
6170
+ }
6171
+ },
6172
+ {
6173
+ "kind": "js",
6174
+ "name": "MediaCopy",
6175
+ "declaration": {
6176
+ "name": "MediaCopy",
6177
+ "module": "./utils/media-copy/media-copy.js"
6178
+ }
6179
+ },
6180
+ {
6181
+ "kind": "js",
6182
+ "name": "sameCopies",
6183
+ "declaration": {
6184
+ "name": "sameCopies",
6185
+ "module": "./utils/media-copy/media-copy.js"
6186
+ }
6187
+ },
5662
6188
  {
5663
6189
  "kind": "js",
5664
6190
  "name": "onUnlessFalse",
@@ -9521,7 +10047,7 @@
9521
10047
  }
9522
10048
  }
9523
10049
  ],
9524
- "description": "Everything inside `root` the reader can reach with Tab, in document order.\n\nSeparate from the focus trap because finding is the half most callers want:\nroving tabindex, arrow-key navigation and \"focus the first thing\" all need\nthis list and none of them traps anything.\n\nVisibility is tested with `getClientRects()` rather than `offsetParent`,\nwhich is null for anything inside a `position: fixed` container. A drawer is\nexactly that, so the `offsetParent` test excluded every control in the thing\nbeing trapped."
10050
+ "description": "Everything inside `root` the reader can reach with Tab, in document order.\n\nRoving tabindex, arrow-key navigation and \"focus the first thing\" all need\nthis list, which is why it is a utility rather than part of anything that\nasks for it.\n\nVisibility is tested with `getClientRects()` rather than `offsetParent`,\nwhich is null for anything inside a `position: fixed` container, so the\n`offsetParent` test excluded every control on a raised surface."
9525
10051
  },
9526
10052
  {
9527
10053
  "kind": "function",
@@ -9555,7 +10081,7 @@
9555
10081
  }
9556
10082
  }
9557
10083
  ],
9558
- "description": "Whether `node` sits inside `root`, following shadow boundaries upward.\n\n`Node.contains` walks `parentNode` and a shadow root's `parentNode` is null,\nso it answers false for anything inside a component. Paired with\n`deepActiveElement`, which returns exactly such a node, that pairing is a trap\nof its own: the two look like they belong together and one of them crosses.\n\n`contains(deepActiveElement())` is the shape to avoid: focus on a\n`helix-button` reports as the `<button>` in its shadow root, which is in no\nlight-DOM container anywhere, so a trap written that way reads every reader\nas already outside it.\n\n`host` is reached without naming `ShadowRoot`, which the server has no global\nfor. This runs from a keydown handler and would never execute there, but a\nbare reference is the kind that surfaces as a crash in Lit's result collector\nthe first time something calls it early."
10084
+ "description": "Whether `node` sits inside `root`, following shadow boundaries upward.\n\n`Node.contains` walks `parentNode` and a shadow root's `parentNode` is null,\nso it answers false for anything inside a component. Paired with\n`deepActiveElement`, which returns exactly such a node, the pair is a hazard of\nits own: the two look like they belong together and one of them crosses.\n\n`contains(deepActiveElement())` is the shape to avoid: focus on a\n`helix-button` reports as the `<button>` in its shadow root, which is in no\nlight-DOM container anywhere, so a containment test written that way reads\nevery reader as already outside.\n\n`host` is reached without naming `ShadowRoot`, which the server has no global\nfor. This runs from a keydown handler and would never execute there, but a\nbare reference is the kind that surfaces as a crash in Lit's result collector\nthe first time something calls it early."
9559
10085
  }
9560
10086
  ],
9561
10087
  "exports": [
@@ -9857,6 +10383,72 @@
9857
10383
  }
9858
10384
  ]
9859
10385
  },
10386
+ {
10387
+ "kind": "javascript-module",
10388
+ "path": "src/utils/media-copy/media-copy.ts",
10389
+ "declarations": [
10390
+ {
10391
+ "kind": "function",
10392
+ "name": "copiesOf",
10393
+ "return": {
10394
+ "type": {
10395
+ "text": "MediaCopy[]"
10396
+ }
10397
+ },
10398
+ "parameters": [
10399
+ {
10400
+ "name": "elements",
10401
+ "type": {
10402
+ "text": "readonly Element[]"
10403
+ }
10404
+ }
10405
+ ],
10406
+ "description": "The copies to make of what the default slot is given."
10407
+ },
10408
+ {
10409
+ "kind": "function",
10410
+ "name": "sameCopies",
10411
+ "return": {
10412
+ "type": {
10413
+ "text": "boolean"
10414
+ }
10415
+ },
10416
+ "parameters": [
10417
+ {
10418
+ "name": "one",
10419
+ "type": {
10420
+ "text": "readonly MediaCopy[]"
10421
+ }
10422
+ },
10423
+ {
10424
+ "name": "two",
10425
+ "type": {
10426
+ "text": "readonly MediaCopy[]"
10427
+ }
10428
+ }
10429
+ ],
10430
+ "description": "Whether two reads describe the same media.\n\nThe same set again is not a change. A video reloads for every new list, and\nthe first `slotchange` reports the children the element has already read."
10431
+ }
10432
+ ],
10433
+ "exports": [
10434
+ {
10435
+ "kind": "js",
10436
+ "name": "copiesOf",
10437
+ "declaration": {
10438
+ "name": "copiesOf",
10439
+ "module": "src/utils/media-copy/media-copy.ts"
10440
+ }
10441
+ },
10442
+ {
10443
+ "kind": "js",
10444
+ "name": "sameCopies",
10445
+ "declaration": {
10446
+ "name": "sameCopies",
10447
+ "module": "src/utils/media-copy/media-copy.ts"
10448
+ }
10449
+ }
10450
+ ]
10451
+ },
9860
10452
  {
9861
10453
  "kind": "javascript-module",
9862
10454
  "path": "src/utils/on-unless-false/on-unless-false.ts",