mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-24 06:31:20 -08:00
refactor(core): [CORE-23] complete keyboard controls and focus lifecycle
This commit is contained in:
1 parent
faaa3e8c2d
commit
8ed0a5228c
190 files changed
+53981
-489
No files matched your search
@@ -0,0 +1,812 @@
|
||||
{
|
||||
"task": "CORE-23",
|
||||
"status": "partial-buttons-focus",
|
||||
"capturedAt": "2026-09-11T10:18:33.135Z",
|
||||
"parentCommit": "faaa3e8c2d84a9b7864e81e06cbe5bb66c517bd6",
|
||||
"source": {
|
||||
"packages/artplayer/src/accessibility/button.ts": "f6f67e19bbee2f1fa6a82828c451bcb86b5b1062575de411a0e72313a38c1c06",
|
||||
"packages/artplayer/src/accessibility/focus.ts": "2fa16941ac3632cb1e4b466e9a7e29700ef97b7eb2facd4330c59ec0a9320594",
|
||||
"packages/artplayer/src/accessibility/keyboard.ts": "2d82122732f84f39e59c6852ca081614caa6430a82b32c4749e297826c77eb12",
|
||||
"packages/artplayer/src/bootstrap/browser.ts": "8d401627e8ea1c87fb44204227b04177a70cc7a0f79f95fb5dc73fe828e46a8c",
|
||||
"packages/artplayer/src/capture/frame.ts": "eb25d81ec2d40a239103c63cfd80333705251291f2c2da77c740b4d413ea9cd9",
|
||||
"packages/artplayer/src/component/dom.ts": "740f63e6e5942c444b9f05605880f8d56a77b066dbe5c4791da74f78cb96c668",
|
||||
"packages/artplayer/src/component/resources.ts": "ff158ef0db8ba13343ff6ba329713820cfe2f5c2c446a7873a6cfff782855edf",
|
||||
"packages/artplayer/src/component/selection.ts": "1f0bd089415da28db862647ffd1a0b4af752576465fb616d4b97ae4f8dcae3a7",
|
||||
"packages/artplayer/src/component/types.ts": "d7b0e7008b0f6c82e3e97ac43e0188598dca4f740a860e7a60b3b38a46f4565d",
|
||||
"packages/artplayer/src/config/index.ts": "a56b4d3d6942cfa3e2b47f909fc5ad87e6e3202fd61b29c7afd7649049e31d05",
|
||||
"packages/artplayer/src/contextmenu/aspectRatio.ts": "a25464e14216b2be392fcb3fdda2439e6d6f98d1962f0acbba30e3bd53bcb2d4",
|
||||
"packages/artplayer/src/contextmenu/close.ts": "84b7a96df910e6f38140df8b1e73519d209a7331e9be9f42d076ae791757024f",
|
||||
"packages/artplayer/src/contextmenu/flip.ts": "42c192d23e347d74e0bb814697a4d59eac20afbec102a282d5aa15780cab5f72",
|
||||
"packages/artplayer/src/contextmenu/index.ts": "4fd292a931b5bda9f16a1c2bedd50cd0d8c0b8fb6010ffc5faaad2c197d2d9e5",
|
||||
"packages/artplayer/src/contextmenu/info.ts": "f37cf0104510c13a130d2f55114c8f7ff15cc1b51863f97e60825442bdb2bf01",
|
||||
"packages/artplayer/src/contextmenu/playbackRate.ts": "e177f4017ea9291794fb4023715c81bfc01f927324ab9bd0e32c741e4a3b0ca7",
|
||||
"packages/artplayer/src/contextmenu/types.ts": "a93fc90f4e17b731e8f6b486a507117810b61c1f1b0d9e775eba27dabeaeee1d",
|
||||
"packages/artplayer/src/contextmenu/version.ts": "0553a716be0ba49f614059c41eef6dc694a9641fca79e6448b1b30382c6b582b",
|
||||
"packages/artplayer/src/control/airplay.ts": "539bcc3671c7fe428ab95f9fea8a4943444066bcb742c7cf71591ba347642547",
|
||||
"packages/artplayer/src/control/builtins.ts": "2a0e12a9741713c92938e1d2009149bbbde498284aa85c63f270d02b27dc22b1",
|
||||
"packages/artplayer/src/control/fullscreen.ts": "7f8a9e8915abf9cbb9dda05b5c68523a47cc0ccf9ef5e0d9b82bc5c362fe346d",
|
||||
"packages/artplayer/src/control/fullscreenWeb.ts": "9cb30987a3d2cbb334a80d3f2c41f39fd339bf37a9524c7ed0145cf5c98f1859",
|
||||
"packages/artplayer/src/control/index.ts": "0d8e5a281f2eeba06c4cc4ac5a042847df53db1a19fdf140efea17d6ab2c0b78",
|
||||
"packages/artplayer/src/control/layout.ts": "b5134a9d0cb5ad128b1fb229dce79a306b944f750d8620e224a99f5791e6cab5",
|
||||
"packages/artplayer/src/control/pip.ts": "b829a7c83c5efa6751c2e434345e077339c9f5bc5022af9973f181ca8ce7f7ce",
|
||||
"packages/artplayer/src/control/playAndPause.ts": "20ed88bcc7ac7622e02a7c4e6be518582c05f0d7c571a97a54b851d79dcf13c5",
|
||||
"packages/artplayer/src/control/progress.ts": "f0876ddbdc01f812a5a776bdeefdff8dc52e557aff684f99b5ea7f6bfc8c0fb3",
|
||||
"packages/artplayer/src/control/progress/interactions.ts": "da03600375451ecf8c152be5afcc5f1a4f8b759e837bbd54b7faaf8f8b228497",
|
||||
"packages/artplayer/src/control/progress/position.ts": "a3794ab5ac5dafa5fd61e56acb12c94998bd4b9065dbf0fa4739c6bba1094aa1",
|
||||
"packages/artplayer/src/control/progress/view.ts": "60ee16d5170be81b8132bb56dd0bc0eaf23e50f5c268d0697c9187b38a14aba9",
|
||||
"packages/artplayer/src/control/resources.ts": "16fd7c53ac8f47b333041c4f298313390dc102523d47767b8a16f39a2564ba74",
|
||||
"packages/artplayer/src/control/screenshot.ts": "11a1e3da919e476e7882abc3f74aaa809c3e9fc1de4346ec808731f78b6f27e2",
|
||||
"packages/artplayer/src/control/selector.ts": "fb055097eb38ea7cc488556ea52f3d185f437eb3de4dec7e09b601b01585d7c7",
|
||||
"packages/artplayer/src/control/setting.ts": "10ee1118858c41f2e97a6df70d6d5dc978757d0e5d79ec36c11e743e6df86726",
|
||||
"packages/artplayer/src/control/time.ts": "fa572092e0848878689367fb536e9658d13888d0a0d476babc5acd165af0f8d3",
|
||||
"packages/artplayer/src/control/types.ts": "87d8d4b5a7a9b91a9682880a5159f7e701204ec33b9e04ab9324f3453f16b9eb",
|
||||
"packages/artplayer/src/control/volume.ts": "46c83cec399345b844da224aa38255f4e4d05e262e8fb33fbacbe52b0bd3c965",
|
||||
"packages/artplayer/src/display/fullscreen-abandoned.ts": "1715b30d336976921b4957b444418702b7d93dbf1debce47429269638d15810f",
|
||||
"packages/artplayer/src/display/fullscreen-adapter.ts": "71da10ec21c7706a8264badedac9022c74b865887931e9e369168fe3233c3b2f",
|
||||
"packages/artplayer/src/display/fullscreen-request.ts": "c6292ded96aab0f2dbc978af251f6cd9f5fd074819529ca498077db8d14e1bfe",
|
||||
"packages/artplayer/src/display/mini-drag.ts": "73d2f48f868c0ba4d8d5e5df40cbbdb4698c26540f3973b178d9cd374008f1cb",
|
||||
"packages/artplayer/src/display/mini-layout.ts": "3835fe3d314da2fc624cbeb0e79fcdfa5393f08d87dfde730d2eac4e827f405b",
|
||||
"packages/artplayer/src/display/mini-view.ts": "83a6e5c6d1923332973009b7ac1561f7a55fb72e5c60e5ebc88af1fa4b641d5e",
|
||||
"packages/artplayer/src/display/mini.ts": "3ffae49b1407523da2dc5f2bc687018268f6c1d1d3c71911dd4aa96d1a66c1dc",
|
||||
"packages/artplayer/src/display/native-fullscreen.ts": "323401f2b3ea5186da981a1215b1b9e7dcf4ef4261a8e885fe8ff0c090de6a7a",
|
||||
"packages/artplayer/src/display/native-pip.ts": "647879ae027cc0ebe684daa31d75511dd882e123e4ca8da2942e659bae3719f2",
|
||||
"packages/artplayer/src/display/orientation-native.ts": "909980ba837471d9b456545a18fb0ab19f0990e8788936f0580a4b332cd4baee",
|
||||
"packages/artplayer/src/display/orientation-types.ts": "0d68d2bc99d04db1e2fdf16b74e406e31f8b7e03fd9b6ea271773ed263ffa890",
|
||||
"packages/artplayer/src/display/orientation-web.ts": "aea55c3b9e8c708fe5559f07cf8f0afd7ad37ac5b1a43bf519245c3072ec4129",
|
||||
"packages/artplayer/src/display/placement.ts": "dbe4491ebd0f46b4efe13ac567e476fcd9ca5b84da675f19025935b5e3f8d733",
|
||||
"packages/artplayer/src/display/sizing-types.ts": "da9b3d957dafaca9331f7319257dd8156b3c3e7b6db11f33f11ded48512450ad",
|
||||
"packages/artplayer/src/display/sizing.ts": "c19856976320f1f35ff5a1049d19a940768300e095270b336dd12861b200da2a",
|
||||
"packages/artplayer/src/display/types.ts": "6f78b34b903fb30653cc7169f43861f8be426d1f6e9669ef292e41a1606d685c",
|
||||
"packages/artplayer/src/display/video-fullscreen-state.ts": "5fcb5e6b80ac45577664ef67e0460e0ceefd4022cafacdd7434c376a86d619be",
|
||||
"packages/artplayer/src/display/video-fullscreen.ts": "b425bf0df462524b5d3accc9e3df383c6635676c152bf4bef09c477a90662728",
|
||||
"packages/artplayer/src/display/web-fullscreen.ts": "dd2c5cf65cfe35d6b5a87d01acb28f48119b27fe6e5f0c6a8b9bab3db1a1923f",
|
||||
"packages/artplayer/src/display/webkit-pip.ts": "3617927b4bb8fa46f651d0e584141f804ae438e2b4531cc2e9cf9f7eeb027550",
|
||||
"packages/artplayer/src/dom/event-path.ts": "e952ea847a2e844a79c5c1b83035e03917e0294b80b1eb8af3b3bec0d2f7d333",
|
||||
"packages/artplayer/src/dom/measure.ts": "84a599351d26a790c5a8f6e7d271486a0a68d5b58457d8ce754d540b54902b96",
|
||||
"packages/artplayer/src/dom/presentation.ts": "500bded394579dd8194778f73cc44d0724f0a59cb5400957491928534ed091c6",
|
||||
"packages/artplayer/src/dom/styles.ts": "734e0a4e04d666417a18ac09ed6271ee7630c399d52d7f510a1c19fd6e7b3493",
|
||||
"packages/artplayer/src/dom/tree.ts": "3bc517ab9fa5317a1445156d53afb27182685eb3b4c0ac2ff41bbde55c9eecb6",
|
||||
"packages/artplayer/src/events/clickInit.ts": "bd1ba29fe0af4332ceb19297797c4c942a3a74bfd901998d6b93293f1b309300",
|
||||
"packages/artplayer/src/events/core-types.ts": "a607a3b2eea1b031f23ec0f620f1f4cd68799c4a77138a1443ecb196b00d1662",
|
||||
"packages/artplayer/src/events/gestureInit.ts": "9e9d1ac0da7f87e89dd0d86fa2820b980e9cb810782d6ab30017de8686fc910b",
|
||||
"packages/artplayer/src/events/global-types.ts": "3f4672d7af959cfa34ba39aa84ce614f422901437686bba98b14f578df40021c",
|
||||
"packages/artplayer/src/events/globalInit.ts": "6f6ea497a20a8fd0746b1f020caff76ad6817cd70a1a90fbaea12f992b6d03a7",
|
||||
"packages/artplayer/src/events/hoverInit.ts": "d1250e0dd35a8ba8067275986acbe6320c22adf1a977ec1009c0c012ed1563fe",
|
||||
"packages/artplayer/src/events/index.ts": "30d2286316dbd351e93f5a2234dcca84bf68ca28c05921169cca70c2e0b1ecf9",
|
||||
"packages/artplayer/src/events/listener-registry.ts": "fb062df5151c4e8e970de469f1c7d9af948f72214d32c293c81a5feeb8406124",
|
||||
"packages/artplayer/src/events/moveInit.ts": "da97591723f8b94a34702559b7ee67a35f172aa696d37dfbecd472581ad3de35",
|
||||
"packages/artplayer/src/events/resizeInit.ts": "719e27d11d2f93fcbe8368393c9190e251fc86dd0c3c2919f60e9b3b1edd0192",
|
||||
"packages/artplayer/src/events/scheduling-types.ts": "0fd98e94397064f32cae4c004d9932c006d2db69a7d6d9374ff174d74ff93cd4",
|
||||
"packages/artplayer/src/events/subscriptions.ts": "98573ed6cce73a73467c0e7fdb8ddc45e66b6bdf684c38886749453b2002a1d8",
|
||||
"packages/artplayer/src/events/types.ts": "df03625039605314a96ef15b5e3777cbb9d444fd317e1a2fbeaaa0f1e83f6b0f",
|
||||
"packages/artplayer/src/events/updateInit.ts": "6f174db14d20319f03a76e6ea267a3d71973faac44a92483badfa4420791817a",
|
||||
"packages/artplayer/src/events/viewInit.ts": "d77b83eab802ff0046a4966e28b810a25592bcada49f526adae37556c1e4c3e9",
|
||||
"packages/artplayer/src/events/viewport.ts": "6196fccb8b08ae22bde732c4389d9aceb5d727a63efd87b6d3914e338aadc46f",
|
||||
"packages/artplayer/src/hotkey.ts": "d8e477bf451143e566e1f743a5f253dcf00beb23544709794779f275e11498e8",
|
||||
"packages/artplayer/src/i18n/ar.ts": "c1e41787c700096ecbc91de6558353f43d8930929ee312b7aa2c7da14a07ec75",
|
||||
"packages/artplayer/src/i18n/cs.ts": "62c5ffcf3ac24e0dc2d7222b7ebb2b4d3454e9c04b80930a50defb3867d645be",
|
||||
"packages/artplayer/src/i18n/es.ts": "5d31184b41ef29c1544c91ff08e3bbf9fc5c5776f0af0aa0238f90a9d161b9b1",
|
||||
"packages/artplayer/src/i18n/fa.ts": "1294b91178ebdc7bc26d14a6f407ba8598207ae0dc812f3b821b62b7bf0089e5",
|
||||
"packages/artplayer/src/i18n/fr.ts": "7125c0011b90f507d5b5fe20afd875992b62af9cdd44f02bbabed051c4ebc107",
|
||||
"packages/artplayer/src/i18n/id.ts": "0d2e79cc0118cff6be83786a3fc048461785a64bdffc6bc45ffb68cb595f6da4",
|
||||
"packages/artplayer/src/i18n/index.ts": "09c6f5bce58e4118dde10e8b2a2d3808785b7fde913a54dd189e0b473e21266a",
|
||||
"packages/artplayer/src/i18n/pl.ts": "f6fb58a0d3fa118e22cfa6df5edd74c7bf39dc9ff1d416fb2b01e1bb8708b06f",
|
||||
"packages/artplayer/src/i18n/publish.ts": "5b216bbe313b3cda56a5da41fba4fb9d095eeec0dc903fcf284ddd8f94926e99",
|
||||
"packages/artplayer/src/i18n/ru.ts": "473c43197acec10991b0f67814f79421dfe9ec4f534fb15413a32cf2a4d8ad38",
|
||||
"packages/artplayer/src/i18n/tr.ts": "7b6afbbe452c4907c8bef36663bd218fd140bd1a4b3c776f31c53415e78e8f16",
|
||||
"packages/artplayer/src/i18n/vi.ts": "29ea7f23d7400c847596632c86a4ca10c39cbafe1e6d723ed099b819aca7e764",
|
||||
"packages/artplayer/src/i18n/zh-cn.ts": "22584521b0aa92da5278b01581e6e8e5bb3a23a2c3029e9df8642b7f0bded392",
|
||||
"packages/artplayer/src/i18n/zh-tw.ts": "8da94a4fd508176bbb6b7ce2f4ba6ef6a56e7b1229bc67cc42d1a7bde70a7e9d",
|
||||
"packages/artplayer/src/icons/airplay.svg": "8c75a40f1bfacee2be2a425e132ff51f3712eba60679010f7b1349d4a04374bc",
|
||||
"packages/artplayer/src/icons/arrow-left.svg": "8b9d544b7bd728d01747005fc7a2d63f822eed3b605393e2435b6733861b585f",
|
||||
"packages/artplayer/src/icons/arrow-right.svg": "68c63d6d5810173ec9192c9e96ee7b6aefdc3b79d3c1329fb4d6c750f859fe10",
|
||||
"packages/artplayer/src/icons/aspect-ratio.svg": "987752a87701523057d8dfa7c45a6a139c4542b96fdcfaf8665722bbeb41f3b2",
|
||||
"packages/artplayer/src/icons/check.svg": "963ce0aee2337fdee951aa6c917cc75ee0b4e75158887ccc16baebfd3925942b",
|
||||
"packages/artplayer/src/icons/close.svg": "ebabfe8044f48d5df4d13f4f906a163fd55a4d6f1dedb3b5ba95601209bc8888",
|
||||
"packages/artplayer/src/icons/config.svg": "e1884d5411296b5cd1bfec7803b558b0afa5ab64478393977b07a662e2e0f15c",
|
||||
"packages/artplayer/src/icons/defaults.ts": "31df862d754922fe5d68b20911c477d7c22893a6a67b5dcb1a48d3b437a0b23a",
|
||||
"packages/artplayer/src/icons/error.svg": "b40c01e511a599c9dd369aeb9a3b2a0d1a76ef3c5ede8124cbbc23f8e4e7248c",
|
||||
"packages/artplayer/src/icons/fast-forward.svg": "abef6fe4d75ffa74d3a84683373b4702a4eda2a5b4045952f969ee62cc68b0be",
|
||||
"packages/artplayer/src/icons/flip.svg": "474a9d53a97add71e3fb7bc6530a68580ce63a1d83f9b75d1c2908a7cf494152",
|
||||
"packages/artplayer/src/icons/fullscreen-off.svg": "71125ac56586897e2c0e52035a4d65cff34cf52043a95b45d186e0d268671399",
|
||||
"packages/artplayer/src/icons/fullscreen-on.svg": "d46cdf265cac729c9b7382722ebe7a4c76d71ad4e5a27c2d5ed8323fd595ebf5",
|
||||
"packages/artplayer/src/icons/fullscreen-web-off.svg": "52a6862ecd7cba12ab7042de5064c498bc2e9f86b430358c912401fafe4f4a98",
|
||||
"packages/artplayer/src/icons/fullscreen-web-on.svg": "5cfaae62b61456251e771bff01356fad8376ebedb10a4b8819740f60e6e5a073",
|
||||
"packages/artplayer/src/icons/index.ts": "7152126328f6e485ee92b6d924c34776518b4a3925b2887867b516f7523b15cc",
|
||||
"packages/artplayer/src/icons/loading.svg": "485472153890eff3ed49963f7bf7d841f66ca2f40894c01d6e8bcf1bf4ad1c58",
|
||||
"packages/artplayer/src/icons/lock.svg": "431e9a25fae051016be0efa286387ec3e5f7651c3ecf569bf0ece9842f57156c",
|
||||
"packages/artplayer/src/icons/pause.svg": "57405dba81dd3d9f329d957fdc704101cbb6f6654325eb0083c03324c4453a68",
|
||||
"packages/artplayer/src/icons/pip.svg": "1e922140e0941e5b9ef53dc0b4776813e1c470ea229fe3ec786fd148148c3352",
|
||||
"packages/artplayer/src/icons/play.svg": "41a961c629a55cb25a813e115a25204e492d4e935a0879177e65d6e1ddfd6796",
|
||||
"packages/artplayer/src/icons/playback-rate.svg": "872deecac0365ab04aeb5ccb1cdd9a0c88589a1442709fdac7c0ed12a241ff2b",
|
||||
"packages/artplayer/src/icons/screenshot.svg": "538b5cd0c6b20afb98bd850e15019072d652d191075c2869f2fc0f28b597b131",
|
||||
"packages/artplayer/src/icons/setting.svg": "2976b00d1f03e78f28d0e55ebcb01d5a0746ec1a6ff8de97a5e8294bacdd1fad",
|
||||
"packages/artplayer/src/icons/state.svg": "620a127f74bb5e249993bd7008c027373263eacb4a44af8adeaa0d7523346887",
|
||||
"packages/artplayer/src/icons/switch-off.svg": "95a8d81a4a3bfcf7c016d5f71d46a72be73c5e94790c55fd1d31023416ef5deb",
|
||||
"packages/artplayer/src/icons/switch-on.svg": "cccd0f9c1e54d9ac50c323360da944d8ff44633a82ff17889914b6bc8b1652ae",
|
||||
"packages/artplayer/src/icons/unlock.svg": "fc058db3d99a475fb9ffbbbb6248978a95990a9c532b83d0955ac28eaa626c60",
|
||||
"packages/artplayer/src/icons/volume-close.svg": "f7e100fd9e9f3f6e06afe5bc994d5d9305ee4d1ee23fae37e4108cf286dab379",
|
||||
"packages/artplayer/src/icons/volume.svg": "3a78f40d8b48595e8f15d9189e4d767e0c7abbf0338d3f2db1ac810049dd3942",
|
||||
"packages/artplayer/src/image/load.ts": "b4f1517243249d5fb017b89f993660e8b148906bbf28d08fe5c9f6d3a41e1e88",
|
||||
"packages/artplayer/src/index.ts": "20cfe3738b3ce7e11b69721a5f0bdad9db77807417d8e421397a40dfade4c047",
|
||||
"packages/artplayer/src/info.ts": "6594ff3ee5643d63fec874631865d0e35b4ebdcf8aeafdd9fd3d9c595cfa3713",
|
||||
"packages/artplayer/src/info/poll.ts": "1d7a519dd1960c8cd5fb7a020d8d3dbcd2eb272b612d823f2167997751aaf663",
|
||||
"packages/artplayer/src/input/gesture-controller.ts": "1ebbd18184771a623b02ec19c363f84dcc72fdb7cd82bcf2adc97f4a138cb2b4",
|
||||
"packages/artplayer/src/input/gesture-direction.ts": "65737f60e177338ebb3337a13ca75aeae77d77e94bc21495ddb829cc30de33a7",
|
||||
"packages/artplayer/src/input/gesture-types.ts": "5ed25db69e0d9579a2fc0ab6faadf00fa073ad73a1ea5aa48096b4430c71141a",
|
||||
"packages/artplayer/src/input/hotkey-defaults.ts": "c28e14821e5c7f7ac92a302e92439ab68fe77d5ef7d90a36b147b7c979ab96c6",
|
||||
"packages/artplayer/src/input/hotkey-types.ts": "c7232470d725f3700481ab98bf9203403a67f1ab82e72394baa9c3ad6f3c9a4b",
|
||||
"packages/artplayer/src/input/keyboard-focus.ts": "270c9dba40c0eb6d9fb36118b53e7f1d42a301ba4514917849523b6a05ed9e11",
|
||||
"packages/artplayer/src/input/long-press.ts": "110cf16cf9dae845597377ebbc43249e103cbc0ece56f89e44ec6ecc7f3819b0",
|
||||
"packages/artplayer/src/input/pointer-focus.ts": "802087098c786135eefa6727f13177ffe4a98e2abf48fad0e356b91e26960077",
|
||||
"packages/artplayer/src/input/pointer-types.ts": "63e679498f8f42f6842f63e910c38717ac3438d58df3a75ef5b77c009b7931d4",
|
||||
"packages/artplayer/src/layer.ts": "4014268eed043d5dd7b925cdeef6245e357cda67192a1301c5612ef98cdbec12",
|
||||
"packages/artplayer/src/libs/screenfull.js": "2332b50c0c6364d5c99080be0f5739255e4b9e465d2cca40f761adce9a1908f8",
|
||||
"packages/artplayer/src/lifecycle/instance.ts": "3168f7db4271bae7a242e80798546b755ac15443e15dd9ebb7675f5a259299d8",
|
||||
"packages/artplayer/src/lifecycle/resources.ts": "399ea5e84545c973f8967e8ffd7326dad7b3168ca6f96f77286995a5b62ee389",
|
||||
"packages/artplayer/src/lifecycle/scope.ts": "e2188e8544b27cf8c7ac149e7146af628a2d6166c82b719a247adef5d85be5db",
|
||||
"packages/artplayer/src/lifecycle/template-rollback.ts": "7a83da6739bcec1587b02f8157934988910d7f9103fe489a0d6f4f65290c3d77",
|
||||
"packages/artplayer/src/loading.ts": "216fa5e2af5be5fcbf95a1578c869553a02f625683a98333d4a404f9a70df9f5",
|
||||
"packages/artplayer/src/mask.ts": "500b8c2fb5ded63d5acab3c984fc9757f28a8b6cbd4d5beeac8c5a6d73ca63e4",
|
||||
"packages/artplayer/src/media/events/forward.ts": "6b1b7e80036bfb523b51843dc6ec6d83c2b949cefb9cef085b2d679a444e46d8",
|
||||
"packages/artplayer/src/media/events/listen.ts": "4eb7e943c1ebca77da8025d83b7d408276187cd02860b7793284344378bd0fe0",
|
||||
"packages/artplayer/src/media/events/playback.ts": "2c68e4f6274a0dc65e56d42c928e500fc1d63bf3e03bbdd8a83c3f3ed7ae8ee4",
|
||||
"packages/artplayer/src/media/events/readiness.ts": "3ba74f26dd9ff0729967097c2cb6f329a9cea57745bfe8173f9173e0d134476a",
|
||||
"packages/artplayer/src/media/events/reconnect.ts": "876027b5116d0d3628755705682b30630f4b713199ed8015541932d81d2944be",
|
||||
"packages/artplayer/src/media/events/types.ts": "02bd29ad8b158fa04ce5c1524e397260ef24b94c2cf1f053e7bd02b23e5d29dd",
|
||||
"packages/artplayer/src/media/hosts.ts": "498d1cde31bf9ee12af1f13523eb0a4553adb285264529378abba5b629829e9a",
|
||||
"packages/artplayer/src/media/playback.ts": "b0364027e1ea26e44e435a938e93c022836885c2622cda6bc3a7ca791d3c2964",
|
||||
"packages/artplayer/src/media/position-revision.ts": "ba074cce7e7c6bda84aa234de8eb315e5ca482aa9b06250896f9ac6251192851",
|
||||
"packages/artplayer/src/media/types.ts": "96d4a7f066cbb6fb9138165dd736b4ca500cb19c827bd7702134d61c44cc0e87",
|
||||
"packages/artplayer/src/notice.ts": "4faa700323a8fdfd91a59491a5f57da2dee9bd1f2de0d900ed16e9809a208c94",
|
||||
"packages/artplayer/src/option/defaults.ts": "f357ef80cf32085fcbc3409d92dfa27b31c13fbcf823f576052c0347911c0cca",
|
||||
"packages/artplayer/src/option/resolve.ts": "53a73627cd540e3f21349c0a43beda35ea5195647a31e3f5b30ac292390b4b1b",
|
||||
"packages/artplayer/src/option/runtime.ts": "d1bcc7682da05a74d7af173304e47f71ba9eb59e5351436040e9dbdef5c58fa8",
|
||||
"packages/artplayer/src/option/types.ts": "f2ce01c01acf45fac6cbb34685b8e6c321bcad6b0da2526f3f189eb5962ea0e5",
|
||||
"packages/artplayer/src/player/airplayMix.ts": "bfa30e1dcd7cbaef97e977344e8a35524fad6bd23089cd8e45945e3b32b4bf04",
|
||||
"packages/artplayer/src/player/aspectRatioMix.ts": "9e5e7365d469aeaef65a6010cb92734702191f9086b2f21d98c9f0ad7f356898",
|
||||
"packages/artplayer/src/player/attrMix.ts": "d82150611a69423ed46bf673f44c3e0f61e80425026effd486a6951b6c0dd90c",
|
||||
"packages/artplayer/src/player/autoHeightMix.ts": "5848e34cd826f5d4cc81d076c83fb3bcea0aed1228cd93a1edb6b8ca402ad175",
|
||||
"packages/artplayer/src/player/autoSizeMix.ts": "6373a8ea7fff4cd875d17c5d3df6dc37764055ab77850a6c6348526969071cbb",
|
||||
"packages/artplayer/src/player/cssVarMix.ts": "0d023f28b7a8b4c1a5e2c4dd5672ef4294c86bce0013babd9d52efa32a443b2a",
|
||||
"packages/artplayer/src/player/currentTimeMix.ts": "cc374abeb85b203b9f31c566a6b9e53a4a1723d609fccc7b0c9c210993b79e75",
|
||||
"packages/artplayer/src/player/durationMix.ts": "60a9d665cf302dcb6b3e37e2f057e31720935e5e588fd7709231f691f6014191",
|
||||
"packages/artplayer/src/player/eventInit.ts": "a915c5a618e70b1ab10536b1273ba0fea4ec11d3a2ca629b538e90b5ad2b55f9",
|
||||
"packages/artplayer/src/player/flipMix.ts": "a1519c83f8c9437a9b7e99a59e38a3d931032c579f4085226fc0955c7c9eab67",
|
||||
"packages/artplayer/src/player/fullscreenMix.ts": "b339bebb4c87f7b75232d7e0d637ebe25bd09a0a0428ba87339a16af5daa71aa",
|
||||
"packages/artplayer/src/player/fullscreenWebMix.ts": "75b83a6093c7887ca8725f63c55503d0bf3aafdbbf2347b579120cb257503555",
|
||||
"packages/artplayer/src/player/index.ts": "359943c88dc99863e510fc0d51f8e8ee2397217e68045f755d4e9538579bdaec",
|
||||
"packages/artplayer/src/player/loadedMix.ts": "6a4c4a08ed74346dad3e138b1dda22c8c9c12f175fe6d00da41b89c78cbe2c18",
|
||||
"packages/artplayer/src/player/miniMix.ts": "d68a0c4f6c6059d5831d2d1fd4823b8d3cbce95eefd6d36d38670d6d8720f44e",
|
||||
"packages/artplayer/src/player/optionInit.ts": "7c1c47679ee6201d0e0d203fc7b449a09309e7b24a0a1099ad259a70fc1b1a35",
|
||||
"packages/artplayer/src/player/pauseMix.ts": "5bbb68eab7dcf2170c944cabb8d4b82be4e6d7623e37ad6ea464b81c1028bc0b",
|
||||
"packages/artplayer/src/player/pipMix.ts": "63dfb29ffd66ce7d081b24f8e8bf697c041675b49ab8919e206d2df5132de236",
|
||||
"packages/artplayer/src/player/playMix.ts": "60249fcacdc5b1bc6f33bcd806e8a4f5472cea21d40550b042794a75027fe34a",
|
||||
"packages/artplayer/src/player/playbackRateMix.ts": "e185c6ff52cd567f7fd7c30553bbd6c65517324d1d16c4948c3623ef457ef536",
|
||||
"packages/artplayer/src/player/playedMix.ts": "5b6b89bf8dec1efb19cd51e46af1505bae006bdb3fb798e9dec7e3fb5cf0acaa",
|
||||
"packages/artplayer/src/player/playingMix.ts": "968c9f6e6d23c233c77d62a593db64adcc6d1a2411f5f1c61a35c6996d6a54d9",
|
||||
"packages/artplayer/src/player/posterMix.ts": "d569dc24e8e64efe398bd76942bfaf563ffbf64d2a7387ea2e1cb1cf511183d4",
|
||||
"packages/artplayer/src/player/properties.ts": "76806d6273545ff556cf9c6d341b59b9041455a8ecbe1fd40510e841c0d5710b",
|
||||
"packages/artplayer/src/player/qualityMix.ts": "980ff584c8a5793f5ec9f049f144df31d184d7c9acef49fbe9d504b7657a96bb",
|
||||
"packages/artplayer/src/player/rectMix.ts": "a741ee09fa3271df84363c5d73eac1b2e5adb39491f95f8112af81f1219ffed4",
|
||||
"packages/artplayer/src/player/screenshotMix.ts": "1754bbce09f713204c120cd4657b52c06eb09eb1fe3244f84474e5967cd68e50",
|
||||
"packages/artplayer/src/player/seekMix.ts": "e6e1bf00e8441f1ce58d2a67a66f7e5e98c86d78620ff10a5e6268d54f13fadb",
|
||||
"packages/artplayer/src/player/stateMix.ts": "e45b3209a93ab14665d19c5740d5c632187e9fe234b019a2a0263e26884ab3b2",
|
||||
"packages/artplayer/src/player/subtitleOffsetMix.ts": "e7866cf3a6d9fe271a4c34973f7a961542a738e89a3647df85197cee5853ce8b",
|
||||
"packages/artplayer/src/player/switchMix.ts": "b47e174ef0edb2b96ff29f2ddd3c9f2dd2a38713db2a81002b18c89ce71994e9",
|
||||
"packages/artplayer/src/player/themeMix.ts": "5bf11bcf8b77cd5d5f2970bc3edcee315c693c1be3d567770d5107a5951cb48f",
|
||||
"packages/artplayer/src/player/thumbnailsMix.ts": "6c097d7d00779a6d0d3d65cf9ffd126624a48c9bdb98396c84c39f4de4bdf712",
|
||||
"packages/artplayer/src/player/toggleMix.ts": "a3050136248e7d0b942387484c61286ac2b33a90724b1dc3460f5061be76f247",
|
||||
"packages/artplayer/src/player/typeMix.ts": "c2a234a9c09f0269a4bd0659087635995945075ac70a5cf2478c8a135fc1b2fe",
|
||||
"packages/artplayer/src/player/urlMix.ts": "726a42899261879e03c8b1d4f716458bf3e6e614cecc3bb8d7a581afc2b7866d",
|
||||
"packages/artplayer/src/player/volumeMix.ts": "d830bb27b984e0ab2f687943fb49abcbd0331d71fe96049fd81edbddaa64f07f",
|
||||
"packages/artplayer/src/plugins/auto-playback/prompt.ts": "58c6dcaf540296ee6f6bdeeda38ee7302aca2b06ddb152b716c0c2bf9c6c96b4",
|
||||
"packages/artplayer/src/plugins/auto-playback/records.ts": "133a4ba2fd2d3df724d96eb203d05cffb0b82ecb8de72403974f7979bd37ce01",
|
||||
"packages/artplayer/src/plugins/autoOrientation.ts": "4a13b0c010ea7a5002e66c422260ed24bb0d18b3ed41ce10974ac7ca2804cc09",
|
||||
"packages/artplayer/src/plugins/autoPlayback.ts": "e349010813bbcd53503383b707c5f6e6e60d8ade6442d020fe6ba07a128c3122",
|
||||
"packages/artplayer/src/plugins/builtins.ts": "4631c9775732982dfdc87e16b1bd6b41a350be36fb27e0a9132c11a85b0c016d",
|
||||
"packages/artplayer/src/plugins/fastForward.ts": "74c03e3fcfe2f87dcb0ef1a5da5410cb96322509fd07e32930128584c54f62b5",
|
||||
"packages/artplayer/src/plugins/index.ts": "4c97f354769bbcb338263f321876a90745a87a9af2d267e216bd3d9d007f268a",
|
||||
"packages/artplayer/src/plugins/lock.ts": "9a08cec3a92006be8a9d2dba8d850bc4f8f38d586a50de86d725d0d8929130fd",
|
||||
"packages/artplayer/src/plugins/miniProgressBar.ts": "21b4850fcaf6b0e82d5e62ca7aca60c179c578f7ff6d5606e6025628ff4b1cc7",
|
||||
"packages/artplayer/src/plugins/registration.ts": "9891686c32aeaa33c48ca500cf30ab24ffbb0835c6248769b4c645a5ff20129b",
|
||||
"packages/artplayer/src/plugins/types.ts": "6823098d5ec1bf053f60ddfdd36bfcd3f06f3b528cc5dd30fd676a1318dac590",
|
||||
"packages/artplayer/src/scheme/index.ts": "dc4a3b5e08478cf72b46b0b59c023359ad5f79b891ea8a6a119ce24a5251821a",
|
||||
"packages/artplayer/src/setting/activity.ts": "699ceed4bdeddb6d48eacf79c8dbf737f5d2d8c4983be70205322b14807a91b7",
|
||||
"packages/artplayer/src/setting/aspectRatio.ts": "a16eb58fadf77f0a9009cf162d957ffd59d9b8fde83cc193d510fd642e3456cb",
|
||||
"packages/artplayer/src/setting/checkpoint.ts": "9d3bff311f9b15c067ca49661af4f48de939f266b8077e7c2f0d66edef22dde6",
|
||||
"packages/artplayer/src/setting/events.ts": "f7a3347ca146232caf2a8c9a5a18731cf7bc91dca4cd36370e0265c6eb70df53",
|
||||
"packages/artplayer/src/setting/flip.ts": "e72a4ae33300d9e48880897a4f85a04fa6d9a5fff7b06ecaf9081cfb1bb14404",
|
||||
"packages/artplayer/src/setting/index.ts": "f1e8a302077a8ccfa77c17ce344bdd6816943e77b5876c7f623314ff846742f7",
|
||||
"packages/artplayer/src/setting/layout.ts": "584604e8fffaeaf1d633d1ed45e64d94595c2a56976e3a3f7ede01839b83a37d",
|
||||
"packages/artplayer/src/setting/model.ts": "c47348f0f9494c4ce8ea5561bcde6eb698fb11e9197ccdc1ca1359a6d5e370dd",
|
||||
"packages/artplayer/src/setting/panels.ts": "64d48720971763985a2a652a18c2ed2f32300c3553d56b52049ae40c4dfceae1",
|
||||
"packages/artplayer/src/setting/playbackRate.ts": "2e70e0d2a33cb0ec9fcdd6d22424979fed7b2e01f87015d6be4e520d5cf4e88a",
|
||||
"packages/artplayer/src/setting/registration.ts": "c29db62b5d90e0efa4a926c753015e65e96a47add3f5b8840ee51017052edf7c",
|
||||
"packages/artplayer/src/setting/render.ts": "853090bfffe579c5106124d64c8d2a646876448bcc7258740a96820d56508ad0",
|
||||
"packages/artplayer/src/setting/resources.ts": "64c28cc2cb08cb87b0864ab957d7999bc94931be4788f282d6f190b8806a81fd",
|
||||
"packages/artplayer/src/setting/selection.ts": "a1bc04b99bda45cc1a2afcf2dd0925c88ccb55e169b971105277883ae2ccba0c",
|
||||
"packages/artplayer/src/setting/subtitleOffset.ts": "86513835d4e542ac39e9d551507473e3e14c71fd0d5ea725267008ecbff6ab83",
|
||||
"packages/artplayer/src/setting/types.ts": "08298ce2c04b5c909b3cc9b1071d2e3e91a7096ba878165a55073e20c33321b0",
|
||||
"packages/artplayer/src/setting/update.ts": "949c0001e9ae10c08ad9a9fce1c88603d98a9cb9b7ac5fa6620ee00a07933187",
|
||||
"packages/artplayer/src/source/listen.ts": "c0596b98258c1544c8e4b762509646428450e56588da36908cb8583b8b716c37",
|
||||
"packages/artplayer/src/source/operation.ts": "a6cb65594a5b28247e3a6889fe0a2f47a34aeb08cdde5f0125800a87862cd559",
|
||||
"packages/artplayer/src/source/restore-position.ts": "35d3fabf5415606a0bcf4c5f6c519d8b005a63ce1f1aeef67c75d0b37925266d",
|
||||
"packages/artplayer/src/source/switch.ts": "16f5418d73a1d6e89fbb797afcd79af13857861ba25cca9046c16b70ad31d431",
|
||||
"packages/artplayer/src/source/types.ts": "e5fa3a9cd6b84dffbbb02f61aad966d6046204d857de3e4564c795f02a0259ff",
|
||||
"packages/artplayer/src/storage.ts": "9c0a0f3d8ac18261db6e49b2ea14322d1d53bfec3531c7337b85005e708fef30",
|
||||
"packages/artplayer/src/style/accessibility.less": "2da8fcde7d38ca29cd1e42cd57ab0b0d47fde2a2866bbd33223f5c8e459472b5",
|
||||
"packages/artplayer/src/style/artplayer.less": "4e8513138d5d10c05b66986977d24ed17f1de3c0df3816dec6d90db7a97b5da3",
|
||||
"packages/artplayer/src/style/aspectRatio.less": "091931a0cdc83e65a669332811ef3276b85bca9e55f7fff42aa46893d728c1ef",
|
||||
"packages/artplayer/src/style/backdrop.less": "6c2cd0fa200d1f3525df98c3c56dbdc553445724aece3feb0386949245813343",
|
||||
"packages/artplayer/src/style/bottom.less": "6fb307d8449fd04b804d5e72ea0f175f8aa9c9dd2bf1efbf756f800b39ac97ab",
|
||||
"packages/artplayer/src/style/contextmenu.less": "70f6c7e26dc96652b659c7bf6fdad92737ed477dea69d253c57dc7266c76586d",
|
||||
"packages/artplayer/src/style/controls.less": "eb6d4bf4e4ff903d724d45f3ff60f0cf10c02e622fba195555a8179100cdce87",
|
||||
"packages/artplayer/src/style/danmuku.less": "e4215ee9fa2f1d0599e7311a2415cc975138265b7c6af0448d27d21b6c9e3511",
|
||||
"packages/artplayer/src/style/flip.less": "5d3c7a81df9be455c2f683ebf48f39597d218dc2144addacb72ee1736bac3b7f",
|
||||
"packages/artplayer/src/style/fullscreen.less": "dd350d3a0fc556d59b622a53c786b8c2a583e8fb28176e4b9e91baff90479496",
|
||||
"packages/artplayer/src/style/fullscreenWeb.less": "d74e785c2fbbb2976e131620e751326f622f2916eceff9f2333059ca3296cdc9",
|
||||
"packages/artplayer/src/style/hideCursor.less": "09a4607c8b0005dc199828172aa8dda395f861e407769b9696d793476c4a7823",
|
||||
"packages/artplayer/src/style/hint.less": "ae9f3115dfdb1e2d7b8249497c080e6a25f9667f915f6e89820338d67bbc2d85",
|
||||
"packages/artplayer/src/style/icon.less": "52d8f75c1d193e6160f57ca6997c3f9135adad8eb2338ed60c1eb8e5fe443be5",
|
||||
"packages/artplayer/src/style/index.less": "7fece0bc5b5a106d051eb80152d5e4558f2e73953c4c33175aa901b9695be61b",
|
||||
"packages/artplayer/src/style/index.ts": "856afc037ffcd4d18c4b54901ddbb30e310014553fe9d19560e34fb54b8378c1",
|
||||
"packages/artplayer/src/style/info.less": "fa56d1b8c8936218e581b2426026e4ba85cd5fea20d045c4f69aca96be4059be",
|
||||
"packages/artplayer/src/style/inject.ts": "9cddbe51b5de0da74f27c045ab982b509c3854cc6b81eeb02a6b974914760a4d",
|
||||
"packages/artplayer/src/style/layers.less": "9653c581190bb22d60a706109819cd010908898740701c9526957b5682991c5f",
|
||||
"packages/artplayer/src/style/loading.less": "185b0f05274196ba71fdb1d088b55af568f3342a495490c99c3f0e058a40659e",
|
||||
"packages/artplayer/src/style/mask.less": "d1239a171b71ea6184cb4aee6660d74d6ffc0c48f7c47c3cf5fbe52d2e93ac92",
|
||||
"packages/artplayer/src/style/mini.less": "927fd6c6c5ab440a2b25ecc43211ab89106c739385385b62de3880ed45dd7601",
|
||||
"packages/artplayer/src/style/mixins.less": "c6be95aa682f266749fe37cb89796fbec6488abc537174f817da79bdac6e00b5",
|
||||
"packages/artplayer/src/style/mobile.less": "ff3f64fca5d2dd7ddd50385d88d9b2fa1a645909488ab7a0978ba4f1670b7c0e",
|
||||
"packages/artplayer/src/style/notice.less": "72a935c0effc557a9d7ab3baccb2c3b77fc3a1783450b4e3178a40a5325fe369",
|
||||
"packages/artplayer/src/style/plugins.less": "589d05e12a62e04fe848b36ba748433d23f0b909a04e861b1d6737f2799be183",
|
||||
"packages/artplayer/src/style/poster.less": "36b38fe138f8c9537ff4e93f7ec4f2dbdba1ec41d243d741ddf1da7c6581e546",
|
||||
"packages/artplayer/src/style/progress.less": "59b9d95d49dbcb1be40752d7086239b6de5925b0574da231199d999e22ff4990",
|
||||
"packages/artplayer/src/style/selector.less": "295012ba379a7e957a24476616a0c3623d6a06e82ebbdaa45b916dd6412d7f4f",
|
||||
"packages/artplayer/src/style/setting.less": "5618eb443ab6368bc4a18e9a379ce6552629555cdca6074e753aa6fd7baf9bf9",
|
||||
"packages/artplayer/src/style/subtitle.less": "273cacb63ec0214ba434dcf19a4a455dbbdd408fb2d1749de4878804c1371e41",
|
||||
"packages/artplayer/src/style/variables.less": "703739b2bdfc77bfde063d8788ef6b6a55b8730764baae8e7d755b7c54d8ecc7",
|
||||
"packages/artplayer/src/style/video.less": "b89c6f6e27592d49825c68c9ab98d46e81cb1e5add855863f89d19637f98e35f",
|
||||
"packages/artplayer/src/style/volume.less": "a3954794a9478d3872202b90d349c873cbb51639dcd7d1e3d73a55ce635fcd99",
|
||||
"packages/artplayer/src/subtitle/index.ts": "b4ead680dc82fa47c53d1ec7e5fb8bf94abbf55730d5d1130ad8d544cb42adc8",
|
||||
"packages/artplayer/src/subtitle/parse.ts": "7db540c5edb1d2312eed82757fd15a7ce6a28996ba20d0087e56730f21dede74",
|
||||
"packages/artplayer/src/subtitle/render.ts": "96493fc35680af635a8db225a8bf002208df79ed48b1d4ee6cc73587543add5c",
|
||||
"packages/artplayer/src/subtitle/request.ts": "543c964571bd5ab984bc1adc9f64a8917dd134ed2892ad10b30ed9c859f34119",
|
||||
"packages/artplayer/src/subtitle/state.ts": "9f79b982d66747170bc39bdaf99b65676310965f23da62a4dec15547c756a56b",
|
||||
"packages/artplayer/src/subtitle/track.ts": "707f4c43af4ebf4b87521f6f577168460e739274d0cec28b9efe5704d2540d18",
|
||||
"packages/artplayer/src/subtitle/types.ts": "615e389b4bb36196a69a059eb04cf7e519cdac13d2da15e4374fede2f3b6631b",
|
||||
"packages/artplayer/src/template.ts": "0ea9155b9292d4c528a464d3c97996ee5a1c9c4aabc2959a744989085db2251b",
|
||||
"packages/artplayer/src/template/html.ts": "351c472bfd01fa5ba1a4e347ed31bd5faaf823d9b4c5cab1ce8c651e3b175021",
|
||||
"packages/artplayer/src/template/nodes.ts": "1572746a636647e4d313cc8752d3a110ff81fddb390ad7b0feb6a0db0d42b9d4",
|
||||
"packages/artplayer/src/template/types.ts": "2bf906b4a209e17dae4d79225e758e2e53772e93f19f188d0131051ea2a0143a",
|
||||
"packages/artplayer/src/thumbnails/layout.ts": "6630439242a880f53fcb374b7b15c7f486405aab8a0fad651b137f02971eeb59",
|
||||
"packages/artplayer/src/utils/compatibility.ts": "1fd2a5b17ee3245712eda961d3c0a15caf3c428010112e48231890176ce1e5e2",
|
||||
"packages/artplayer/src/utils/component.ts": "c8ff22ef3774cf7d97713638cb562f1bfc11aa113df5c625a2c20527ffc450ad",
|
||||
"packages/artplayer/src/utils/dom.ts": "72f3539dabf296df37ab4cc7ade0c8ac9480f399987101589450c787e7d6719b",
|
||||
"packages/artplayer/src/utils/emitter.ts": "26a93d3ff35b53e71a5f3bb22c252a854559d8151ede50a66a28d9eefae6c008",
|
||||
"packages/artplayer/src/utils/error.ts": "ba303c7d4e4228919088f9d608fa364596f5853ee646eda2008deee354866f38",
|
||||
"packages/artplayer/src/utils/file.ts": "ea71d7fc0e818d473bf5a596211ba9d571e4febdf1878014eadefa8d0a98d4cc",
|
||||
"packages/artplayer/src/utils/format.ts": "891df5b7542b713aef46bf2b93924f42e68eee574afd802db3e6c62ff2655ede",
|
||||
"packages/artplayer/src/utils/index.ts": "5211af833dddb2937d25dcc772740d62f9d5c5039ce5505bffff0796d4afd756",
|
||||
"packages/artplayer/src/utils/property.ts": "c737d4582a4382f4038d12dafdf8b43418e508c9b8b859b2f0cc17c20f370343",
|
||||
"packages/artplayer/src/utils/subtitle.ts": "f058851d11a418e321a8a498472b67fa535fec2c7b5d3df739b6b4f263d00337",
|
||||
"packages/artplayer/src/utils/time.ts": "b8ce3d50865f6c343e8e3ce9f5c87de565a87b4e9fbcbccbe7030e30e80b93fe"
|
||||
},
|
||||
"tooling": {
|
||||
"package.json": "e229f7d1d2a2ce739ff71e81f0731c8ca5e2cd5db1495c885748f13960a762b9",
|
||||
"test/accessibility-button.test.js": "ef769c55fc0ec603dd966e44dba4cbf1a5208960213db7edb75065503655c735",
|
||||
"test/accessibility-focus.test.js": "ab7718f6e2615e6cce5362043f6a68ee51f556df7e4a993def36194a4e7225a1",
|
||||
"test/browser/accessibility.spec.js": "dbb5eb78f54e1fb34dd33a229531201218d0169b0e0443908ae04f7534f1adbc",
|
||||
"test/browser/hotkey.spec.js": "a6565949f25d702aeb33ef8ebbddf2ed995d67f09a47c7bfaa20010da34dfa1c"
|
||||
},
|
||||
"ci": {
|
||||
"passed": 456,
|
||||
"productionTypeScript": 232,
|
||||
"logSha256": "5490430473aa64d471ca910ecc25402fe6878ae34e865ae7640b45ac4297ecf8"
|
||||
},
|
||||
"browser": {
|
||||
"stats": {
|
||||
"startTime": "2026-09-11T10:14:10.867Z",
|
||||
"duration": 26968.483,
|
||||
"expected": 69,
|
||||
"skipped": 0,
|
||||
"unexpected": 0,
|
||||
"flaky": 0
|
||||
},
|
||||
"versions": {
|
||||
"chromium": "153.0.8010.12",
|
||||
"firefox": "155.0",
|
||||
"webkit": "26.6"
|
||||
},
|
||||
"sourceBuildSha256": "4529077aeee0e14d113478684ecbf06970a52e30edf312b8841579494cfea6b6",
|
||||
"cases": [
|
||||
{
|
||||
"file": "accessibility.spec.js",
|
||||
"title": "published: Tab skips the non-interactive main controls",
|
||||
"engine": "chromium",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "accessibility.spec.js",
|
||||
"title": "candidate: keyboard reaches stable play control and toggles once with focus retained",
|
||||
"engine": "chromium",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "accessibility.spec.js",
|
||||
"title": "candidate: mute state, focus visibility and automatic hiding follow keyboard focus",
|
||||
"engine": "chromium",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "accessibility.spec.js",
|
||||
"title": "candidate: custom control keyboard clicks retain the callback and release on replacement",
|
||||
"engine": "chromium",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "accessibility.spec.js",
|
||||
"title": "candidate: native buttons inside custom controls retain activation without player hotkeys",
|
||||
"engine": "chromium",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "accessibility.spec.js",
|
||||
"title": "candidate: pointer focus does not prevent the existing automatic control hiding",
|
||||
"engine": "chromium",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "accessibility.spec.js",
|
||||
"title": "published: Tab skips the non-interactive main controls",
|
||||
"engine": "firefox",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "accessibility.spec.js",
|
||||
"title": "candidate: keyboard reaches stable play control and toggles once with focus retained",
|
||||
"engine": "firefox",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "accessibility.spec.js",
|
||||
"title": "candidate: mute state, focus visibility and automatic hiding follow keyboard focus",
|
||||
"engine": "firefox",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "accessibility.spec.js",
|
||||
"title": "candidate: custom control keyboard clicks retain the callback and release on replacement",
|
||||
"engine": "firefox",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "accessibility.spec.js",
|
||||
"title": "candidate: native buttons inside custom controls retain activation without player hotkeys",
|
||||
"engine": "firefox",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "accessibility.spec.js",
|
||||
"title": "candidate: pointer focus does not prevent the existing automatic control hiding",
|
||||
"engine": "firefox",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "accessibility.spec.js",
|
||||
"title": "published: Tab skips the non-interactive main controls",
|
||||
"engine": "webkit",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "accessibility.spec.js",
|
||||
"title": "candidate: keyboard reaches stable play control and toggles once with focus retained",
|
||||
"engine": "webkit",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "accessibility.spec.js",
|
||||
"title": "candidate: mute state, focus visibility and automatic hiding follow keyboard focus",
|
||||
"engine": "webkit",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "accessibility.spec.js",
|
||||
"title": "candidate: custom control keyboard clicks retain the callback and release on replacement",
|
||||
"engine": "webkit",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "accessibility.spec.js",
|
||||
"title": "candidate: native buttons inside custom controls retain activation without player hotkeys",
|
||||
"engine": "webkit",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "accessibility.spec.js",
|
||||
"title": "candidate: pointer focus does not prevent the existing automatic control hiding",
|
||||
"engine": "webkit",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "published: mobile keeps keyboard initialization opt-in through the existing init method",
|
||||
"engine": "chromium",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "published: prototype-named hotkeys do not crash or replace the keys prototype",
|
||||
"engine": "chromium",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: mobile keeps keyboard initialization opt-in through the existing init method",
|
||||
"engine": "chromium",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: prototype-named hotkeys do not crash or replace the keys prototype",
|
||||
"engine": "chromium",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: native keyboard play/pause, seek, volume and web-fullscreen Escape retain their behavior",
|
||||
"engine": "chromium",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: inherited editing and IME composition do not activate player shortcuts",
|
||||
"engine": "chromium",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: plaintext editing and IME composition do not activate player shortcuts",
|
||||
"engine": "chromium",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: select editing and IME composition do not activate player shortcuts",
|
||||
"engine": "chromium",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: destroying during a key callback stops remaining keys and notifications",
|
||||
"engine": "chromium",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "published: hotkey registration retains chain, array identity, receiver and event order",
|
||||
"engine": "chromium",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "published: rebound document input retains typing instead of triggering a hotkey",
|
||||
"engine": "chromium",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "published: shadow-root input retains typing instead of triggering a hotkey",
|
||||
"engine": "chromium",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "published: repeated hotkey init does not multiply the keyboard subscription",
|
||||
"engine": "chromium",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: hotkey registration retains chain, array identity, receiver and event order",
|
||||
"engine": "chromium",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: rebound document input retains typing instead of triggering a hotkey",
|
||||
"engine": "chromium",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: shadow-root input retains typing instead of triggering a hotkey",
|
||||
"engine": "chromium",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: repeated hotkey init does not multiply the keyboard subscription",
|
||||
"engine": "chromium",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "published: mobile keeps keyboard initialization opt-in through the existing init method",
|
||||
"engine": "firefox",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "published: prototype-named hotkeys do not crash or replace the keys prototype",
|
||||
"engine": "firefox",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: mobile keeps keyboard initialization opt-in through the existing init method",
|
||||
"engine": "firefox",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: prototype-named hotkeys do not crash or replace the keys prototype",
|
||||
"engine": "firefox",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: native keyboard play/pause, seek, volume and web-fullscreen Escape retain their behavior",
|
||||
"engine": "firefox",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: inherited editing and IME composition do not activate player shortcuts",
|
||||
"engine": "firefox",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: plaintext editing and IME composition do not activate player shortcuts",
|
||||
"engine": "firefox",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: select editing and IME composition do not activate player shortcuts",
|
||||
"engine": "firefox",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: destroying during a key callback stops remaining keys and notifications",
|
||||
"engine": "firefox",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "published: hotkey registration retains chain, array identity, receiver and event order",
|
||||
"engine": "firefox",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "published: rebound document input retains typing instead of triggering a hotkey",
|
||||
"engine": "firefox",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "published: shadow-root input retains typing instead of triggering a hotkey",
|
||||
"engine": "firefox",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "published: repeated hotkey init does not multiply the keyboard subscription",
|
||||
"engine": "firefox",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: hotkey registration retains chain, array identity, receiver and event order",
|
||||
"engine": "firefox",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: rebound document input retains typing instead of triggering a hotkey",
|
||||
"engine": "firefox",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: shadow-root input retains typing instead of triggering a hotkey",
|
||||
"engine": "firefox",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: repeated hotkey init does not multiply the keyboard subscription",
|
||||
"engine": "firefox",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "published: mobile keeps keyboard initialization opt-in through the existing init method",
|
||||
"engine": "webkit",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "published: prototype-named hotkeys do not crash or replace the keys prototype",
|
||||
"engine": "webkit",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: mobile keeps keyboard initialization opt-in through the existing init method",
|
||||
"engine": "webkit",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: prototype-named hotkeys do not crash or replace the keys prototype",
|
||||
"engine": "webkit",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: native keyboard play/pause, seek, volume and web-fullscreen Escape retain their behavior",
|
||||
"engine": "webkit",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: inherited editing and IME composition do not activate player shortcuts",
|
||||
"engine": "webkit",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: plaintext editing and IME composition do not activate player shortcuts",
|
||||
"engine": "webkit",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: select editing and IME composition do not activate player shortcuts",
|
||||
"engine": "webkit",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: destroying during a key callback stops remaining keys and notifications",
|
||||
"engine": "webkit",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "published: hotkey registration retains chain, array identity, receiver and event order",
|
||||
"engine": "webkit",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "published: rebound document input retains typing instead of triggering a hotkey",
|
||||
"engine": "webkit",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "published: shadow-root input retains typing instead of triggering a hotkey",
|
||||
"engine": "webkit",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "published: repeated hotkey init does not multiply the keyboard subscription",
|
||||
"engine": "webkit",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: hotkey registration retains chain, array identity, receiver and event order",
|
||||
"engine": "webkit",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: rebound document input retains typing instead of triggering a hotkey",
|
||||
"engine": "webkit",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: shadow-root input retains typing instead of triggering a hotkey",
|
||||
"engine": "webkit",
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"file": "hotkey.spec.js",
|
||||
"title": "candidate: repeated hotkey init does not multiply the keyboard subscription",
|
||||
"engine": "webkit",
|
||||
"passed": true
|
||||
}
|
||||
],
|
||||
"reportSha256": "ad537a08516746b05d646b64874f971243c0c049964f2f34a200e5fee09fb24e"
|
||||
},
|
||||
"probes": [
|
||||
{
|
||||
"name": "core23-tab-before",
|
||||
"stats": {
|
||||
"startTime": "2026-09-11T09:59:37.648Z",
|
||||
"duration": 10403.492,
|
||||
"expected": 1,
|
||||
"skipped": 0,
|
||||
"unexpected": 1,
|
||||
"flaky": 0
|
||||
},
|
||||
"reportSha256": "780609ae9d3abcd573f4656555587ce2b1ad7f5fc2cf42ec9a7a6dca73dc6a99",
|
||||
"failures": [
|
||||
{
|
||||
"title": "candidate: keyboard reaches stable play control and toggles once with focus retained",
|
||||
"engine": "chromium",
|
||||
"errors": [
|
||||
"Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeFocused\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.art-control-playAndPause')\nExpected: focused\nReceived: inactive\nTimeout: 7000ms\n\nCall log:\n\u001b[2m - Expect \"toBeFocused\" locator('.art-control-playAndPause') with timeout 7000ms\u001b[22m\n\u001b[2m - waiting for locator('.art-control-playAndPause')\u001b[22m\n\u001b[2m 18 × locator resolved to <div data-index=\"10\" class=\"art-control art-control-playAndPause\">…</div>\u001b[22m\n\u001b[2m - unexpected value \"inactive\"\u001b[22m\n\n\n 27 | await page.keyboard.press('Tab')\n 28 | const play = page.locator('.art-control-playAndPause')\n> 29 | await expect(play).toBeFocused()\n | ^\n 30 | await expect(play).toHaveAttribute('role', 'button')\n 31 | await expect(play).toHaveAttribute('aria-label', 'Play')\n 32 | await page.keyboard.press('Enter')\n at D:\\github\\ArtPlayer\\test\\browser\\accessibility.spec.js:29:22"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "core23-firefox-tab-probe",
|
||||
"stats": {
|
||||
"startTime": "2026-09-11T10:07:29.727Z",
|
||||
"duration": 11754.319000000001,
|
||||
"expected": 0,
|
||||
"skipped": 0,
|
||||
"unexpected": 1,
|
||||
"flaky": 0
|
||||
},
|
||||
"reportSha256": "30333ddddf2f1c999fe3e78167cd92c48f649f31f0bb8a0fc5dd51ba2ef8f47e",
|
||||
"failures": [
|
||||
{
|
||||
"title": "published: Tab skips the non-interactive main controls",
|
||||
"engine": "firefox",
|
||||
"errors": [
|
||||
"Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeFocused\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#play')\nExpected: focused\nReceived: inactive\nTimeout: 7000ms\n\nCall log:\n\u001b[2m - Expect \"toBeFocused\" locator('#play') with timeout 7000ms\u001b[22m\n\u001b[2m - waiting for locator('#play')\u001b[22m\n\u001b[2m 17 × locator resolved to <button id=\"play\">Play</button>\u001b[22m\n\u001b[2m - unexpected value \"inactive\"\u001b[22m\n\n\n 20 | await page.keyboard.press('Tab')\n 21 | console.log('Tab focus probe', await page.evaluate(() => ({ tag: document.activeElement.tagName, className: document.activeElement.className, html: document.activeElement.outerHTML.slice(0, 300) })))\n> 22 | await expect(page.locator('#play')).toBeFocused()\n | ^\n 23 | expect(await page.locator('.art-controls [tabindex=\"0\"]').count()).toBe(0)\n 24 | })\n 25 |\n at D:\\github\\ArtPlayer\\test\\browser\\accessibility.spec.js:22:39"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "core23-pointer-focus-before",
|
||||
"stats": {
|
||||
"startTime": "2026-09-11T10:12:12.449Z",
|
||||
"duration": 10358.796,
|
||||
"expected": 0,
|
||||
"skipped": 0,
|
||||
"unexpected": 1,
|
||||
"flaky": 0
|
||||
},
|
||||
"reportSha256": "de4e873006d7284271f330bc95f33786d54009c1b7a1655361fec6324f28a368",
|
||||
"failures": [
|
||||
{
|
||||
"title": "candidate: pointer focus does not prevent the existing automatic control hiding",
|
||||
"engine": "chromium",
|
||||
"errors": [
|
||||
"Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32mfalse\u001b[39m\nReceived: \u001b[31mtrue\u001b[39m\n\nCall Log:\n- Timeout 7000ms exceeded while waiting on the predicate\n\n 151 | })\n 152 | await page.mouse.move(900, 650)\n> 153 | await expect.poll(() => page.evaluate(() => window.art.controls.show)).toBe(false)\n | ^\n 154 | await expect.poll(() => page.locator('.art-bottom').evaluate(element => getComputedStyle(element).opacity)).toBe('0')\n 155 | })\n 156 |\n at D:\\github\\ArtPlayer\\test\\browser\\accessibility.spec.js:153:74"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"remaining": [
|
||||
"CORE-23 remains doing, BASE-DOM-01 open, no completed-task commit.",
|
||||
"Progress/volume sliders, control selectors, settings tree and focus restoration, mode exit, dynamic focus removal, multi-instance/SSR and subtitle accessibility still require implementation/audit.",
|
||||
"These are source-build browser results, not validation of freshly packed modern/legacy artifacts or a full browser matrix.",
|
||||
"Physical devices and screen-reader certification remain release gates; no npm publication, push, tag or merge."
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,173 @@
|
||||
# CORE-23 键盘、焦点与可访问名称
|
||||
|
||||
从 faaa3e8c 接续,开始时工作区干净。任务 doing,覆盖主要控件、设置树/范围输入、选择列表、模式退出及字幕可用性;本页随实现补充证据,不代表全任务已完成。
|
||||
|
||||
## 已核实的问题与边界
|
||||
|
||||
BASE-DOM-01 已记录主要控件没有 Tab 入口。进一步源码审查发现:播放/音量由两个互斥显示的图标处理点击,直接让图标可聚焦会在切换时隐藏焦点;控件自动隐藏仅检查鼠标/播放/输入状态;设置按钮/树和质量 selector 依赖点击及 hover,未实现键盘操作。已有 tooltip 提供 aria-label,应复用当前语言文本。
|
||||
|
||||
保留现有 DOM 节点和类名、指针点击事件及公开回调形状。新增内部按键归属记录,避免键盘激活同时触发全局 Space 快捷键;不把所有 defaultPrevented 事件一概排除,以免改变旧自定义热键行为。内部监听器随条目/实例 scope 释放,更新/移除/销毁后不得继续响应。
|
||||
|
||||
实现依据:[WAI Button Pattern](https://www.w3.org/WAI/ARIA/apg/patterns/button/)、[Slider Pattern](https://www.w3.org/WAI/ARIA/apg/patterns/slider/)、[Keyboard Interface](https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/)。采用 Enter/Space 激活、可见焦点及范围键盘语义;角色和属性必须与真实交互一起验证。这些模式不等于整个产品已通过屏幕阅读器或 WCAG 认证。
|
||||
|
||||
## 分步实施与验收
|
||||
|
||||
1. 固定实际 Tab 缺口,建立可清理的按钮按键处理,接入稳定的主控件节点与已有点击路径。
|
||||
2. 补齐进度/音量范围操作、选择列表与设置树的进入/返回/关闭和焦点恢复;保护输入和已有快捷键。
|
||||
3. 检查全屏/mini 等模式退出、动态更新/移除、跨实例、SSR、名称变化及字幕可用性。
|
||||
4. 严格类型、风险用例、安装包及三浏览器完整回归;更新架构、风险、任务状态后独立提交。
|
||||
|
||||
CORE-23 已完成。按钮、滑块、选择列表、设置树、动态控件、mini、信息面板、锁定层和默认菜单均已实现并取得阶段证据;模式退出、SSR/字幕及设置入口失效的补充检查通过,新安装包现代/legacy 全量验收通过,BASE-DOM-01 已关闭。下列各阶段记录保留当时的状态与证据,最终结论见末尾验收表。
|
||||
|
||||
## 按钮与焦点第一阶段
|
||||
|
||||
新增 accessibility/button、keyboard、focus 三个 TS 模块。按键标记保留原事件身份,Enter 按下/Space 松开复用旧 click 路径,阻止重复按键、失焦或销毁后的晚到操作;旧 Hotkey 的普通 keydown 观察和无关 defaultPrevented 策略保留。原生 button/summary/ARIA button/switch 的激活键及链接 Enter 不被播放器劫持,KeyK 等其他自定义快捷键仍工作。
|
||||
|
||||
已接入主要按钮和自定义 option.click 控件。播放使用稳定 wrapper;音量保留原图标/面板层级,在互斥图标切换时只移交原有焦点;设置按钮增加 aria-expanded。原有 tooltip/i18n 提供名称,没有新增英文专用翻译键。键盘焦点更新已有 isFocus/isInput,不增加指针 focus/blur 公开事件次数。新增焦点样式和 art-keyboard-focus 类。
|
||||
|
||||
首次真实 Chromium 运行固定 Tab 缺口:发布基线通过“控件被跳过”的已知行为断言,修改前候选在目标可达断言失败。首轮三浏览器有三个 Firefox 用例失败,精确探针确认原生 video 本身先接受 Tab;修正测试保留该原生入口,再验证控制按钮,未删除或跳过失败测试。随后新增鼠标用例复现本轮最初 :focus-within/任意焦点策略会让控制栏常驻;改为独立输入方式与资源归属,保留鼠标自动隐藏。该回归及修正证据保留在阶段记录中。
|
||||
|
||||
当前 accessibility/hotkey 三浏览器共 69 项通过(含 18 项按钮/焦点/指针用例),25 项按钮/焦点/Hotkey/组件资源单元通过。最终本阶段 CI 456 项(425 单元、6 工程、25 基线)、232 个生产 TS 文件严格检查通过。[阶段证据](../baselines/keyboard-buttons-partial.json) 保存当前源/用例指纹、三组失败复现和最终通过结果。核心源已有改动,当前浏览器使用 Vite 源码构建,不能作为最新 npm/legacy 安装产物的验收;完整包构建和全量矩阵留最终任务收尾。
|
||||
|
||||
下一步继续进度/音量 slider、selector、设置树与 Escape/焦点恢复、动态更新/跨实例/SSR/字幕检查。CORE-23 和 BASE-DOM-01 仍开放,未创建任务完成 commit;上一完成任务仍为 faaa3e8c。无新依赖、版本调整、push/publish/tag/merge。
|
||||
|
||||
## 进度与音量滑块阶段
|
||||
|
||||
新增 accessibility/slider.ts 与 control/progress/keyboard.ts,分别负责通用范围键盘/ARIA 状态和播放器进度绑定。原 progress/interactions.ts 保持鼠标职责。方向键使用 SEEK_STEP 或 VOLUME_STEP;PageUp/PageDown 使用十倍步长,Home/End 到达端点,重复按键可连续调整。无有效时长/范围时禁用操作并认领按键,避免回落到播放器全局快捷键;ARIA 数值随实际媒体时间、时长、音量更新。
|
||||
|
||||
进度按键保持 setBar 在 seek 之前,第三个指针事件参数省略,不把 KeyboardEvent 混入旧 MouseEvent/TouchEvent 类型。回调切源、移除、销毁或触发更新的嵌套按键后,旧 seek 不得继续。音量键先取消静音再设置音量,muted 回调销毁或触发新操作会取消旧写入。音量范围位于原图标按钮之外,键盘聚焦静音图标时展开面板,Tab 继续进入滑块;鼠标拖动和原图标节点保留。
|
||||
|
||||
增加 Progress 可访问名称及十二个已有语言字典的翻译。public/i18n.ts 使用可选 Progress 字段,保持完整旧字典可赋值;通过 build:types/build:ts 同步生成包声明与 Monaco 声明,未手工修改生成文件。无新增依赖。
|
||||
|
||||
验证与实际修正:
|
||||
|
||||
- 新增七项单元用例,与原进度拖动测试合计 17 项通过:步长/重复/上下限、无效范围、修饰键/IME、scope 清理、事件顺序、切源与嵌套取消。
|
||||
- 初次 Chromium 浏览器 9 通过、1 失败,复现 transition: all 将新 visibility 状态一起过渡,快速 Tab 跳过音量滑块。限制过渡为 opacity/transform 后,原用例通过,未通过等待或跳过来隐藏该问题。
|
||||
- 首次三浏览器 122 通过、1 失败,WebKit 在请求 1 秒时实际落点约 1.003 秒;测试改为验证实际时间的步长和 ARIA 同步,并保留请求值/事件顺序的精确检查。
|
||||
- 首次完整 CI 检出 Monaco 声明遗漏新翻译键;build:ts 生成修复后完整 CI 463 项通过(432 单元、6 工程、25 基线),234 个生产 TS 文件严格检查通过。此处计数包括核心与 chapter。
|
||||
- 最终 accessibility、hotkey、progress-quality 三浏览器 123 项全部通过,无失败、重试或跳过;其中滑块专项 12 项。实际版本 Chromium 153.0.8010.12、Firefox 155.0、WebKit 26.6。
|
||||
|
||||
[滑块阶段证据](../baselines/keyboard-sliders-partial.json) 保存源文件、声明、用例、日志及报告指纹、浏览器构建来源、失败复现与最终结果。此前按钮阶段快照保持原样。本阶段浏览器仍为 Vite 源码构建,最新安装包/legacy 全量验收尚未执行。
|
||||
|
||||
下一步处理 selector 与设置树的键盘进入、选择、返回/Escape,以及动态焦点恢复、模式退出、跨实例/SSR/字幕检查。CORE-23 仍 doing,BASE-DOM-01 保持开放,总体 57 done、1 doing、156 todo;完成整个任务后再独立 commit。
|
||||
|
||||
## 选择列表阶段
|
||||
|
||||
control/selector-keyboard.ts 独立管理打开/关闭、焦点与键盘导航,旧 selector.ts 继续负责条目绑定、check 和异步 onSelect 结果归属。Tab 可到达当前值,Enter/Space/上下键打开并聚焦当前项;方向键、Home/End 和连续字符前缀仅移动焦点,不提前切换清晰度。Enter/Space 通过原 item.click 提交,保持回调 this、item/node 身份、click 参数及已有 generation/trackSelection 检查。Escape 关闭并返回当前值,Tab 离开不提交;关闭后再次 Escape 交回播放器。
|
||||
|
||||
普通列表采用 listbox/option 和 aria-selected,参考 [WAI Listbox Pattern](https://www.w3.org/WAI/ARIA/apg/patterns/listbox/)。含原生交互 HTML 的选项采用 group,保留按钮/输入框语义与编辑按键;group 不声明不匹配的 aria-haspopup。原生按钮作为当前值时直接承担展开入口,外层不新增嵌套 button 角色。check/异步 HTML 返回会刷新该绑定,仅在替换已聚焦的当前值子节点导致焦点回到 body 时恢复新入口;回调主动移交外部焦点时不抢回。调用方自定义交互内容仍需自行提供其可访问名称。
|
||||
|
||||
列表的可见性过渡只涉及 opacity/transform,避免重现滑块阶段的快速 Tab 问题。hover 与键盘打开状态分别维护,Escape 可在鼠标仍悬停时关闭列表。disabled 空列表不会报告 expanded=true。原来的 DOM 类名、selector getter 描述符、鼠标 click 路径和异步失效检查保留;无新增依赖或公开类型字段。
|
||||
|
||||
新增十项浏览器场景,覆盖实际 Tab/Enter/Space、typeahead、Escape 与 web fullscreen 的先后归属、空列表、鼠标 hover、异步竞态/移除、回调移交焦点及原生按钮/输入框。截图检查确认当前项高亮与独立焦点框同时可见。补充用例先在 Chromium 复现“关闭后的第二次 Escape 仍被吞掉”和“空列表悬停报告展开”两个失败,再统一用实际 expanded 条件修复;失败与最终验证均保留在阶段证据中。
|
||||
|
||||
最终 CI 463 项通过(432 单元、6 工程、25 基线),235 个生产 TS 文件严格检查通过;accessibility/hotkey/progress-quality/components 匹配到的三浏览器回归共 282 项通过(包括 prompt-components),无失败、重试或跳过,其中选择列表专项 30 项。[选择列表阶段证据](../baselines/keyboard-selectors-partial.json) 保存当前源文件/用例、完整 CI、浏览器构建来源、三引擎截图指纹和修复前两个失败。浏览器仍使用 Vite 源码构建,尚非新安装包/legacy 全量验收。
|
||||
|
||||
下一步是设置树、模式退出、动态控件移除/替换焦点恢复,以及跨实例/SSR/字幕检查。任务与发布门槛保持开放:CORE-23 doing,BASE-DOM-01 open;57 done、1 doing、156 todo,完成全部任务验收后再独立 commit。无 push/publish/tag/merge。
|
||||
|
||||
## 设置面板、DOM 移动焦点与原生跳转校正阶段
|
||||
|
||||
设置模块新增 keyboard.ts、keyboard-item.ts、keyboard-focus.ts,分别负责面板导航和关闭、条目按键/语义、可见焦点目标及恢复。设置按钮 Enter/Space/ArrowDown 进入当前项,ArrowUp 直接进入最后一项;方向键/Home/End 在可操作项间移动,Right 进入子面板,Left/返回行回到原项,Escape 关闭并返回设置按钮。Tab 离开后关闭,不把原生 input 的编辑键交给播放器。原生按钮保留浏览器 click 路径,不新增嵌套按钮角色;开关同步 aria-checked,选择项同步 aria-current,范围输入使用条目文字作为名称。
|
||||
|
||||
面板与条目监听器遵循已有 scope 暂停/恢复/释放。更新成功、失败回滚及移除后,仅在原焦点因替换或隐藏丢失时恢复可见目标;回调已移交外部焦点则保留外部焦点。focusout 使用可释放的零延迟任务读取浏览器完成 Tab 后的实际焦点:首次微任务版本会在焦点暂处 body 时误关闭,已由真实用例复现修正。暂停中的条目既不能激活,也不能让方向键落入全局 seek。
|
||||
|
||||
accessibility/moved-focus.ts 保存 DOM 移动前实际聚焦节点。网页全屏进入/退出和失败恢复后,只有该节点仍连接且移动导致焦点落到 body 才恢复;销毁清理不聚焦,恢复时回调销毁会阻止后续 fullscreenWeb/resize 通知。真实用例先复现 FULLSCREEN_WEB_IN_BODY 丢失设置按钮焦点,再验证恢复和销毁边界。新增 Back、Settings 的十二语言翻译,公开字段可选,包和 Monaco 声明均用生成脚本同步。无新增依赖。
|
||||
|
||||
扩大回归时复现 WebKit 的原生跳转竞态:End 后立即 PageDown 已正确发出 seek(3),焦点未丢失,但结束事件随后将实际时间写回约 8 秒。重复五次探针中四次失败,不能归为帧级舍入。进度键盘复用 source/restore-position.ts 的一次有限校正;初次仍经过原 seek setter,校正使用 currentTime,不重复公开 seek 事件。操作 scope 同时归控件与 source 管理;新键盘操作、公开 currentTime 写入、切源、移除或销毁会取消旧校正。新增单元检查一次上限、事件顺序、手动覆盖及监听器释放;修正后五次 WebKit 探针全部通过。
|
||||
|
||||
验证记录:
|
||||
|
||||
- 完整 CI 468 项(437 单元、6 工程、25 基线)和 239 个生产 TS 严格检查通过。严格检查期间修正 cleanup 的 undefined 返回约定和 proxy 媒体宿主的内部结构类型,没有放宽到 any。
|
||||
- 扩大 accessibility/setting/display-web/hotkey/progress-quality/source 三浏览器回归 477 项通过。该运行在上述内部类型修正前启动;之后对最终源码重跑设置、滑块、切源专项 57 项,全部通过。分别保存构建指纹,不能把两次当作同一构建的全量通过。
|
||||
- 最终专项中途出现 56 通过、1 失败:旧测试 once(setBar) 会被媒体加载的 loaded/零进度更新提前消费,控件提前移除后按键实际走全局 Hotkey。测试改为匹配本次非零 played 更新后再移除,仍精确验证取消 seek;未添加等待、重试或跳过。修改后的两个浏览器文件额外 lint 通过。
|
||||
- 七项设置场景跨三引擎共 21 项通过,覆盖真实 Enter/Space/Tab、树导航、switch/range、更新回滚、暂停和原生按钮。截图目标改为全屏移动后的实际 .art-video-player,避免只截到旧容器的局部视频。
|
||||
|
||||
[设置阶段证据](../baselines/keyboard-settings-partial.json) 保存失败报告、源文件/类型/测试指纹、CI、两轮浏览器构建及截图。此前三个阶段快照不改写。当前均为 Vite 源码构建;新安装包/legacy 全量验收、剩余动态控件焦点/模式退出/跨实例/SSR/字幕检查及最终提交仍未完成。CORE-23 doing,57 done、1 doing、156 todo;无版本调整、push/publish/tag/merge。
|
||||
|
||||
## 动态控件替换与移除焦点阶段
|
||||
|
||||
修改前在真实 Chromium 固定六个场景,其中五项失败:聚焦控件更新、移除、失败替换、聚焦 selector 子项替换及最后控件移除均会失去焦点;回调主动聚焦外部的既有场景通过。新增 component/focus.ts,Component.remove/update 在 finally 中结束焦点操作,仅对 control 生效;同一 update 的内部 remove 不先把焦点移到相邻项,保持单次最终恢复和旧 add/update 返回约定。
|
||||
|
||||
优先聚焦同名替换条目的可用节点,否则按原 DOM 顺序选择后续或前一个仍存活的控件。原生按钮作为实际目标,隐藏/禁用字段集/aria-disabled/inert 内容不能承担恢复目标。beforeUnmount 拒绝移除时原节点仍聚焦;mounted 失败清理后恢复相邻控件。回调主动聚焦外部,或正在操作其他实例时不移交焦点;焦点恢复中的回调销毁播放器后,保留节点也不得再触发旧 click。
|
||||
|
||||
没有可用控件时使用 accessibility/player-focus.ts 聚焦仍连接的播放器。首版立即移除临时 tabindex 的实测会让 Chromium 再次失焦;现在保留自建 tabindex=-1 至实例清理,不增加顺序 Tab 停留点,既有调用方 tabindex 保留。该失败及修正记录保存在独立报告中。
|
||||
|
||||
最终增加到九项动态控件场景,包括原生替换按钮、禁用字段集、跨实例隔离及恢复时销毁,三引擎共 27 项通过。完整 CI 468 项通过(437 单元、6 工程、25 基线),241 个生产 TS 文件严格检查;accessibility/components/setting/hotkey/progress-quality 组合三浏览器 507 项通过,无失败、重试或跳过。12 项原组件资源和焦点单元专项也通过,未添加只镜像实现的模拟 DOM 测试。
|
||||
|
||||
[动态控件阶段证据](../baselines/keyboard-control-focus-partial.json) 保存两组先失败的报告、最终源/用例指纹、CI 和完整组合回归。架构说明同步至 packages/artplayer/ARCHITECTURE.md;此前阶段快照不改写。本阶段无新增依赖、公开类型或版本调整。
|
||||
|
||||
源码检查显示 mini-view.ts 的关闭与播放图标、info/poll.ts 的关闭图标及 plugins/lock.ts 的层按钮仍主要依赖点击,后续需先固定真实键盘缺口,再补模式内操作和退出焦点。跨实例动态控件已验证,但不能代表整个播放器的跨实例可用性已验收。SSR/字幕及安装包/legacy 全量检查继续保留;CORE-23 doing、BASE-DOM-01 open,57 done、1 doing、156 todo,无任务完成 commit,无 push/publish/tag/merge。
|
||||
|
||||
## mini 播放器键盘与退出焦点阶段
|
||||
|
||||
修改前四项真实 Chromium 场景全部失败。自建 mini-view 的既有关闭节点和稳定播放 wrapper 现使用 keyboardButton,Enter/Space 通过原关闭或当前可见播放/暂停图标的 click 路径执行。播放状态变化保留 wrapper 焦点并更新名称;弹窗内 Escape 仅在 mini 活跃时认领。focus-within 显示原 hover 按钮,focus-visible 提供白色焦点框。使用 Close、Mini Player、Play、Pause 既有翻译键,无新增公开类型或字典字段。
|
||||
|
||||
新增 display/mini-focus.ts 管理会话来源:键盘从播放器进入时聚焦关闭按钮;指针/程序打开不会抢走外部焦点。关闭仅在焦点仍属于弹窗时恢复原入口,入口已删除、隐藏、禁用或 inert 时聚焦播放器;新会话清除陈旧来源。mini 原有 revision/closing 检查围绕焦点回调,恢复焦点时销毁或再次切换会取消旧 mini 通知。销毁清理不尝试恢复焦点。
|
||||
|
||||
保留首次/复用 DOM 顺序、拖动、播放器视频节点移动/恢复和失败重试。调用方提供的自有 mini 容器不追加本轮自建按钮绑定、角色或样式,其交互继续由调用方管理;退出 API 可恢复其当前弹窗焦点。新 UI 资源随已有 mini scope 释放。
|
||||
|
||||
最终六场景跨三引擎共 18 项通过,覆盖实际 Tab/Enter/Space/Escape、真实播放/暂停、指针打开、重复会话、外部/隐藏/删除来源、国际化、隐藏后的晚到按键,以及焦点回调销毁后的节点点击。此前 Chromium 组合 24 项通过;最终 accessibility/display-mini/display-web/hotkey 三浏览器组合 300 项全部通过,无失败、重试或跳过。完整 CI 468 项、242 个生产 TS 严格检查通过。
|
||||
|
||||
[mini 阶段证据](../baselines/keyboard-mini-partial.json) 保存修改前失败、最终源和测试指纹、CI、三引擎版本及构建来源;截图保存在本地缓存并检查焦点框和按钮可见性。包内架构文档已同步。当前仍为 Vite 源码构建;信息面板/锁定层、其他模式退出、跨实例/SSR/字幕和安装包/legacy 最终验收仍待完成。CORE-23 doing,57 done、1 doing、156 todo,无新依赖、版本调整、任务完成 commit 或 push/publish/tag/merge。
|
||||
|
||||
## 信息面板与锁定层阶段
|
||||
|
||||
信息面板新增 info/keyboard.ts,监听器随原 poll scope 初始化、替换和释放,保留 Info 自有字段、原型方法、轮询次数及 close click 路径。键盘打开聚焦关闭按钮,Enter/Space/Escape 关闭并返回当前会话的播放器入口,原入口不再可用时聚焦播放器。程序/指针操作保留外部焦点;重复 init 不丢失返回目标。名称复用 Close、Video Info。失败名称初始化释放新监听器和轮询,原错误仍可捕获并重试。
|
||||
|
||||
严格类型检查发现 $info 在历史模板边界中可空,不能为了通过检查直接断言为必需。保留这个 SSR 约定:缺少外层时跳过依赖该节点的键盘逻辑,轮询和原关闭事件保持;旧发布版和候选版都通过真实 SSR 节点保留与关闭用例。节点存在时才加 group 名称和按键行为。Node 单元宿主补齐实际新增的 EventTarget/属性契约,原轮询和错误用例仍完整执行。
|
||||
|
||||
锁定层新增 plugins/lock-keyboard.ts,使用原层节点作为稳定 toggle button,aria-pressed 跟随 lock 通知,Enter/Space 复用原 click,Escape 仅在锁定状态解锁。accessibility/suspend-focus.ts 在锁定期间为控制栏设置自有 inert/aria-hidden 并保存 tabindex,MutationObserver 处理新增与移出节点;解锁、移除或销毁恢复自有值,已被调用方改成不同值的属性不覆盖。实际移除原生 inert 后仍能通过 Tab 回退用例,原有 inert/aria-hidden 和正 tabindex 也能恢复。
|
||||
|
||||
键盘焦点样式不再覆盖锁定控制栏原来的隐藏位移;锁定按钮在控制栏隐藏时保留 Tab 可达性,仍按原逻辑视觉隐藏,聚焦后显示。新增可选 Lock 字典类型和十二语言翻译,通过 build:types/build:ts 生成包及 Monaco 声明,旧完整字典不被新增必需字段拒绝。无新依赖。
|
||||
|
||||
另外固定了已锁定状态重挂载层的旧缺陷:原 mounted 总把锁定图标隐藏,与实际 state 不符;现在按 getState 初始化图标,保留通常未锁定初始化的样式写入。重挂载恢复新的焦点 scope,Space 解锁仍仅发一次事件。
|
||||
|
||||
验证与纠正:
|
||||
|
||||
- 信息面板修改前四项 Chromium 场景中三项失败、程序/指针焦点场景通过;锁定层修改前三项全部失败。实现后首批信息面板/提示组件 Chromium 19 项和相关 Node 17 项通过。
|
||||
- 首轮锁定组合有一项测试错误假设外部 Outside 按钮紧随播放器,真实测试页先有 Play/Pause;依据实际 Tab 结果改为验证 Play,再 Shift+Tab 返回锁定按钮。未增加等待或跳过。
|
||||
- 重挂载先复现图标 display:none,修正后浏览器把 flex 子项的 inline-flex 计算为 flex,导致三个引擎的计算样式断言失败。测试改为实际可见性与 inline display 值分别检查,仍保留解锁次数及属性清理断言。失败和修正报告都保留。
|
||||
- 最终完整 CI 468 项通过(437 单元、6 工程、25 基线),245 个生产 TS 文件严格检查;最后仅上述浏览器样式断言调整,额外 lint 通过。最终 accessibility/builtin-layers/prompt-components/hotkey 三浏览器组合 306 项全部通过,无失败、重试或跳过;信息面板共 21 项(含旧/新 SSR 对照),锁定层共 18 项。新专项没有未处理浏览器错误或 console error。
|
||||
|
||||
[信息面板与锁定层证据](../baselines/keyboard-info-lock-partial.json) 固定源文件、单元宿主、公开/编辑器声明、用例、CI、构建指纹及各次失败。移动条件使用 UA 选择加真实键盘测试,不能当作物理 Android/iOS 或屏幕阅读器验收。默认菜单入口、其他模式退出、跨实例/SSR/字幕和新安装包/legacy 完整矩阵继续交本任务剩余工作。CORE-23 doing、BASE-DOM-01 open,57 done、1 doing、156 todo,无任务完成 commit、版本调整或 push/publish/tag/merge。
|
||||
|
||||
## 默认菜单键盘与跨面板焦点阶段
|
||||
|
||||
修改前六项 Chromium 场景中四项失败。新增 contextmenu/keyboard.ts 管理 Shift+F10/ContextMenu、方向键/Home/End、文字导航、Escape/Tab 退出与焦点恢复;contextmenu/position.ts 原样提取鼠标定位计算,键盘使用当前元素边界作为入口坐标。容器用具名 group,动作项为 button,选择行保留 data-value span 并逐个增加按钮语义、aria-pressed;contextmenu/choices.ts 同步既有 art-current 状态。版本原生链接、自定义 button/input 保持原生角色与编辑/激活路径。
|
||||
|
||||
菜单 init 在成功添加条目后替换根 scope,重复添加失败不拆掉既有监听器。Component 焦点恢复从 control 扩展到 contextmenu,同名替换优先,否则选择 DOM 后续/前一个可用项。菜单关闭跳过已隐藏、删除、禁用或 inert 的原入口,必要时回到播放器;外部主动焦点、销毁中回调和双播放器相互独立。
|
||||
|
||||
accessibility/overlay-focus.ts 记录菜单来源,Info/mini 进入时解析到原始控件,避免退出后聚焦已经隐藏的菜单项。没有提前移动焦点或调整原 click/public 事件顺序;自定义菜单 callback 仍自行决定是否关闭,参数与 this 保持不变。输入/textarea/select/contenteditable 上的上下文菜单手势改为不拦截,这是修复用户编辑功能的行为差异(API-08),合成事件验证不等于操作过系统原生菜单。
|
||||
|
||||
Context Menu 是新增可选公开 i18n 键,十二语言及生成包/Monaco 声明一致。无依赖或版本调整。测试修正保留证据:首轮错误预期移除 Beta 后回到 Alpha,实际排序下下一项是 Info,截图确认恢复正确,现先断言 DOM 邻居再断言焦点;第二轮取消监听器错误假设 Emitter 默认 this 是 art,改为闭包引用已有实例,未修改 Emitter 契约。
|
||||
|
||||
最终完整 CI 468 项通过(437 单元、6 工程、25 基线),249 个生产 TS 文件严格检查;之后只有浏览器文件增加边界及修正上述假设,额外 lint 通过。最终 accessibility/components/prompt-components/display-mini/hotkey 三浏览器组合 444 项全部通过,无失败、重试或跳过;菜单十三场景共 39 项,无未处理错误或 console error。测试包含 Info/mini 交接、重复 init、失效来源、外部焦点/销毁、原生内容、取消打开、双实例及菜单边界,保留各引擎中文键盘焦点截图。
|
||||
|
||||
[菜单阶段证据](../baselines/keyboard-contextmenu-partial.json) 固定当前源/声明/用例、构建、CI、截图与失败报告,不改写此前快照。剩余原生模式退出、SSR/字幕和最终新安装包/legacy 全量验收继续推进;CORE-23 doing、BASE-DOM-01 open,57 done、1 doing、156 todo,尚无任务完成 commit,无 push/publish/tag/merge。
|
||||
|
||||
## 模式、SSR/字幕与最终边界审查
|
||||
|
||||
新增 accessibility-integration 四项真实场景,三引擎 12 项通过:Enter/Space 原生全屏进入退出、浏览器 API 主动退出后保留当前控件焦点、原生 PiP 键盘切换或不支持时提示,以及 SSR 保留播放器/video/字幕节点、实际 WebVTT cue、键盘字幕开关和网页全屏焦点。Chromium 153 与 Firefox 155 本次具有标准 PiP API,实际进入/退出并验证原事件;Windows WebKit 26.6 无该能力,验证既有不支持提示且不误触发播放,不能把该分支当作成功 PiP 会话。字幕维持被动呈现,不追加 Tab 停留点或强制 aria-live 逐条播报;截图检查字幕与焦点框实际可见,物理辅助技术仍由发布复盘验证。
|
||||
|
||||
第一次新安装包全量运行期间,额外真实 Chromium 探针复现设置按钮被删除后 Escape 仍聚焦隐藏面板中的条目。增加四项回归,在旧安装包上全部失败:入口删除、visibility:hidden、aria-disabled,以及导航遇到隐藏行/inert 子树。setting/keyboard-focus.ts 统一可用目标过滤,增加只接管关闭面板内焦点的设置入口恢复;无可用入口时使用播放器 fallback,外部焦点或销毁状态不接管。没有改变公开 Setting 的属性/方法或回调形状。
|
||||
|
||||
已验证原全量进程树身份后主动停止旧产物测试;保留 interrupted 日志,不计入通过。修正后三浏览器设置/集成组合 45 项通过;随后将隐藏面板断言的错误单数选择器改为实际 .art-settings,先检查唯一节点再检查隐藏,核心焦点缺陷的前后证据仍来自明确 toBeFocused 断言。最终 CI 和新打包检查重新执行,源与声明不复用旧结果。refactor/.cache/core23-setting-exit-before.json 保存四项旧产物失败;原阶段快照保留不变。
|
||||
|
||||
## 最终验收与交接
|
||||
|
||||
| 验收项 | 实际证据 |
|
||||
| --- | --- |
|
||||
| 结构 | 按键认领/按钮/范围/焦点与 DOM 所有权分离;控件、设置、菜单、mini、信息/锁定层各自持有局部状态和清理范围;包内 ARCHITECTURE.md 提供文件地图、回归入口及限制 |
|
||||
| 类型 | 最终 CI 468 项通过,249 个生产 TS 文件严格检查;37 个公共声明无漂移;五组历史消费与八组精确消费模式无诊断,新增五个翻译字段均可选 |
|
||||
| 兼容 | 保留旧构造器、属性、快捷键、click 回调参数/this、DOM/CSS 钩子及分发入口;新增键盘路径不重复激活播放;34 项隔离安装运行时契约通过,原有新旧核心/chapter 组合在全量矩阵中继续通过 |
|
||||
| 真实交互 | 控件 Tab、Enter/Space、slider、selector/设置树、菜单/模式退出、动态更新移除、失效入口、双实例、SSR/字幕有真实浏览器用例,缺陷先固定失败再修正 |
|
||||
| 最终安装包 | run-4QYvJQ 经 Yarn pack、隔离安装和 frozen 重装;源/声明/资源 381 文件与快照一致,工作区构建的分发内容与安装包字节一致;没有把工作区链接当作 npm 安装 |
|
||||
| 完整浏览器 | modern 1749 项、legacy 1749 项;每种格式 Chromium/Firefox/WebKit 各 583 项,无失败、重试或跳过;每个用例核对已安装核心和 chapter 产物哈希 |
|
||||
| 分发与导入 | 按正式脚本重建核心三个 JS 格式与 i18n;ESM/i18n/SSR 三项导入检查通过,声明/Monaco 由生成器维护 |
|
||||
| 交接与提交 | 任务状态、风险台账、阶段快照和最终证据一并更新;本任务独立本地 commit,后续任务必须在核实该提交后开始 |
|
||||
|
||||
[最终证据](../baselines/keyboard-validation.json) 保存源/测试/工具指纹、包完整文件清单、运行时与类型结果、两个完整浏览器矩阵、构建/安装日志指纹、设置入口四项失败及中断旧产物运行的原因。此前八份阶段 JSON 不改写。新增 Progress/Back/Settings/Lock/Context Menu 可选翻译键,十二语言与两份声明同步;本任务没有新增依赖或改版本。
|
||||
|
||||
BASE-DOM-01 resolved,只关闭主要控件 Tab 不可达这一已复现问题。Windows 浏览器与受控 adapter 检查不代表物理 Apple/AirPlay/触摸/IME 或屏幕阅读器认证;相关 REL-03/REVIEW-02 与 BASE-ENV-01 门槛保留。CORE-22 仍待核心资源/性能及生态集成总验收,其前置 ENG-08 尚未完成,因此下一项先补覆盖率、资源清理与性能报告,再进入 CORE-22。多数生态包、CI/CD、各包下一大版本和三轮发布复盘仍待推进,没有公开发布结论。
|
||||
|
||||
总体为 214 项:58 done、156 todo。回退时以父提交 faaa3e8c 为基准整体 revert 本任务 commit,同步回退源、生成声明/编辑器、dist/docs 编译文件与测试,不只回退 helper 或复制旧 bundle。无 push/publish/tag/merge。
|
||||
+3
-2
@@ -4,7 +4,7 @@
|
||||
|
||||
基线:`40fcda6a37d0049d42e49c1e64e70d4fd9ba5f7f`。总任务 214 项,范围 22 个包及工作区/示例。
|
||||
|
||||
状态:todo 157 / doing 0 / blocked 0 / done 57 / deferred 0。风险 L/M/H 表示兼容风险,不表示工期。
|
||||
状态:todo 156 / doing 0 / blocked 0 / done 58 / deferred 0。风险 L/M/H 表示兼容风险,不表示工期。
|
||||
|
||||
前置依赖是启动条件;验收是完成条件。任务可以继续拆分,但不能复用或悄悄删除旧 ID。
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
| CORE-19 | artplayer<br>整理进度、质量、缩略图和截图 | CORE-10, CORE-13, CORE-16 | 相关 player/control 功能与纯计算分离 | 截图跨域失败、缩略图布局、quality/进度边界保持 | M | done |
|
||||
| CORE-20 | artplayer<br>收敛核心入口与依赖方向 | CORE-14, CORE-15, CORE-18, CORE-19 | Artplayer 门面、初始化依赖与最终目录 | 所有核心自有源码迁移,公开描述符/静态接口/事件差分通过 | H | done |
|
||||
| CORE-21 | artplayer<br>生成核心声明并校验包内容 | CORE-20, ENG-07 | 由 TS 生成的既有入口声明与三种发布产物 | 内部类型不泄漏,旧 JS/TS 消费者与 i18n 通过;逐项完成 CORE-07 留下的 BASE-TYPE-04/05/07 声明方案,旧合法消费者与实际返回分别留证;不能以虚假的交叉返回类型或改变运行时来掩盖冲突,未决项阻止核心声明出口;处理 CORE-10 / BASE-TYPE-08 的 setter-only 属性虚构 getter 声明,并复核 PlaybackControls 精确视图与旧 toggle 声明共存策略 | H | done |
|
||||
| CORE-23 | artplayer<br>检查并补齐键盘、焦点与可访问名称 | CORE-13, CORE-14, CORE-17, ENG-05, BASE-04 | 主要控件/设置/模式退出的键盘与焦点回归、名称和字幕可用性检查及必要兼容修正 | 保持旧快捷键和 DOM/CSS 钩子;真实浏览器验证,不以静态属性检查代替交互;处理 BASE-DOM-01 的主要控件 Tab 不可达,保留既有名称与快捷键 | H | todo |
|
||||
| CORE-23 | artplayer<br>检查并补齐键盘、焦点与可访问名称 | CORE-13, CORE-14, CORE-17, ENG-05, BASE-04 | 主要控件/设置/模式退出的键盘与焦点回归、名称和字幕可用性检查及必要兼容修正 | 保持旧快捷键和 DOM/CSS 钩子;真实浏览器验证,不以静态属性检查代替交互;处理 BASE-DOM-01 的主要控件 Tab 不可达,保留既有名称与快捷键 | H | done |
|
||||
| CORE-22 | artplayer<br>核心阶段完整验收 | CORE-21, CORE-23, PILOT-01, ENG-08, ENG-10 | 核心与旧插件的可自动化完整回归、资源/性能及明确外部验证缺口 | 核心自动化和公开差异处置通过;真实环境缺口链接包集成/REL 门槛,阶段完成不代表可公开发布 | H | todo |
|
||||
|
||||
## 5 包迁移:artplayer-plugin-chapter
|
||||
@@ -456,6 +456,7 @@
|
||||
- CORE-19: [记录](changes/2026-09-11-CORE-19-capture-thumbnails.md) [记录](baselines/capture-progress-validation.json)
|
||||
- CORE-20: [记录](changes/2026-09-11-CORE-20-entry.md) [记录](baselines/entry-validation.json)
|
||||
- CORE-21: [记录](changes/2026-09-11-CORE-21-public-declarations.md) [记录](baselines/core-declarations-validation.json) [记录](core-public-types.md) [记录](typechecking.md)
|
||||
- CORE-23: [记录](changes/2026-09-11-CORE-23-keyboard-focus.md) [记录](baselines/keyboard-validation.json)
|
||||
- PKG-CHAPTER-01: [记录](changes/2026-09-10-PKG-CHAPTER-01-contract.md) [记录](baselines/chapter-contract.md)
|
||||
- PKG-CHAPTER-02: [记录](changes/2026-09-10-PKG-CHAPTER-02-tests.md) [记录](baselines/chapter-validation.json)
|
||||
- PKG-CHAPTER-03: [记录](changes/2026-09-10-PKG-CHAPTER-03-typescript-modules.md) [记录](baselines/chapter-migration-validation.json)
|
||||
|
||||
@@ -1,5 +1,79 @@
|
||||
# 进度与证据
|
||||
|
||||
## 最新完成:CORE-23 键盘、焦点与可访问名称
|
||||
|
||||
默认菜单、原生模式/SSR/字幕检查已完成阶段验证;最终审查另复现并修正设置入口被删除/隐藏/禁用后留下隐藏焦点,以及导航进入隐藏/inert 设置项。四项旧产物回归全部失败,修正后三浏览器设置/集成组合 45 项通过。
|
||||
|
||||
修正后的完整 CI 468 项、249 个生产 TS 文件、新安装包 34 项运行时/5 组旧类型/8 组精确类型通过;381 个源/声明/资源文件与打包快照一致,工作区生成产物与安装包字节一致。现代版与 legacy 安装包全量各 1749 项通过(各引擎 583 项),无失败、重试或跳过。见 [最终验收证据](baselines/keyboard-validation.json) 与 [实施记录](changes/2026-09-11-CORE-23-keyboard-focus.md)。
|
||||
|
||||
CORE-23 done、BASE-DOM-01 resolved;58 done、156 todo。本任务以独立本地 commit 交付,包含源码、测试、生成文件、架构与迁移记录。下一步先完成 CORE-22 尚缺的依赖 ENG-08(覆盖率、资源与性能报告),再做核心总验收。其余生态包、CI/CD 完整流程、各包下一大版本及三轮发布复盘继续推进;没有 push/publish/tag/merge。下方各阶段保留当时的状态与证据。
|
||||
|
||||
## 当前实施:CORE-23 默认菜单键盘阶段
|
||||
|
||||
默认菜单新增 Shift+F10/ContextMenu 入口、方向键/Home/End/文字导航和 Escape/Tab 退出。保留原 action/choice 点击路径、回调参数与关闭职责;菜单转入信息面板或 mini 后回到最初控件。动态菜单项替换/移除复用组件焦点恢复;输入字段的上下文菜单手势不再被播放器拦截。Context Menu 可选翻译键、十二语言与两份声明已同步。
|
||||
|
||||
完整 CI 468 项、249 个生产 TS 严格检查通过;accessibility/components/prompt-components/display-mini/hotkey 三浏览器组合 444 项全部通过,其中菜单十三场景共 39 项,无失败、重试或跳过。见 [菜单阶段证据](baselines/keyboard-contextmenu-partial.json) 和 [实施记录](changes/2026-09-11-CORE-23-keyboard-focus.md)。中途两个测试假设错误按实际 DOM 顺序和 Emitter 上下文契约修正,保留失败报告。
|
||||
|
||||
CORE-23 doing、BASE-DOM-01 open;57 done、1 doing、156 todo。继续原生模式退出焦点与 SSR/字幕可用性,再进行新安装包/legacy 完整验收。本阶段仍是源码构建证据,尚无本任务完成 commit,无 push/publish/tag/merge。
|
||||
|
||||
## 当前实施:CORE-23 信息面板与锁定层阶段
|
||||
|
||||
信息面板新增独立键盘模块,支持进入、关闭和返回焦点,重复 init 保留返回目标并替换监听器;缺少可选 SSR 外层时保留原轮询/关闭行为。锁定层增加稳定按钮、aria-pressed 和 Escape 解锁,隐藏控制栏暂时退出 Tab 顺序,动态新增/移出控件和清理恢复原属性;保留调用方后续修改的值。已锁定时重挂载的图标初始化也按实际状态修正。
|
||||
|
||||
最终完整 CI 468 项、245 个生产 TS 严格检查通过;accessibility/builtin-layers/prompt-components/hotkey 三浏览器组合 306 项通过,其中信息面板及锁定层共 39 项,无失败、重试或跳过。见 [阶段证据](baselines/keyboard-info-lock-partial.json) 与 [实施记录](changes/2026-09-11-CORE-23-keyboard-focus.md)。本轮新增可选 Lock 翻译键,十二语言、包声明与 Monaco 声明已同步生成。
|
||||
|
||||
CORE-23 仍 doing、BASE-DOM-01 open;57 done、1 doing、156 todo。接下来审查默认菜单入口、其余模式退出和跨实例/SSR/字幕可用性,再做新安装包与 legacy 全量验收。当前为源码构建阶段证据,尚无本任务完成 commit;未推送或发布。
|
||||
|
||||
## 当前实施:CORE-23 mini 键盘与退出焦点阶段
|
||||
|
||||
mini 关闭和稳定播放 wrapper 已支持 Enter/Space,弹窗内 Escape 关闭;键盘打开聚焦关闭入口,关闭后恢复原控件或播放器,鼠标/程序打开保留外部焦点。重复会话不沿用陈旧入口,回调销毁/重入取消后续通知。复用现有翻译键及图标 click 路径,调用方自有 mini 容器的 DOM、样式和控件仍由调用方管理。
|
||||
|
||||
修改前四项 Chromium 场景全部失败;最终六场景跨三引擎 18 项通过。完整 CI 468 项、242 个生产 TS 严格检查通过;accessibility/display-mini/display-web/hotkey 三浏览器组合回归 300 项通过,无失败、重试或跳过。见 [mini 阶段证据](baselines/keyboard-mini-partial.json) 与 [实施记录](changes/2026-09-11-CORE-23-keyboard-focus.md)。
|
||||
|
||||
下一步信息面板/锁定层、其他模式退出和跨实例/SSR/字幕检查,然后重新构建安装包与 legacy 全量验收。CORE-23 doing、BASE-DOM-01 open;57 done、1 doing、156 todo。当前为源码构建专项证据,尚无本任务完成 commit,未推送或发布。
|
||||
|
||||
## 当前实施:CORE-23 动态控件焦点阶段
|
||||
|
||||
新增 component/focus.ts,控件更新只在完整替换结束后恢复一次焦点;移除、禁用替换或 mounted 失败时选择可用相邻控件,beforeUnmount 中断则保留原节点。支持 selector 子项与原生按钮,跳过隐藏/禁用/inert 内容;不抢回调用方已移交外部或另一实例的焦点。最后一个控件移除后使用受实例清理管理的 tabindex=-1 聚焦播放器,不新增顺序 Tab 入口。
|
||||
|
||||
真实 Chromium 修改前六项中五项失败,修正后动态控件九场景跨三引擎 27 项通过。完整 CI 468 项、241 个生产 TS 严格检查通过;accessibility/components/setting/hotkey/progress-quality 三浏览器组合回归 507 项全部通过,无失败、重试或跳过。见 [阶段证据](baselines/keyboard-control-focus-partial.json) 与 [实施记录](changes/2026-09-11-CORE-23-keyboard-focus.md)。
|
||||
|
||||
下一步补齐 mini/信息面板/锁定层等模式操作与退出焦点,继续跨实例/SSR/字幕可用性及最终安装包/legacy 全量验收。当前仍为 Vite 源码构建证据;CORE-23 doing、BASE-DOM-01 open,57 done、1 doing、156 todo,完成整项后独立 commit。最近完成提交仍 faaa3e8c,未推送或发布。
|
||||
|
||||
## 当前实施:CORE-23 设置面板与播放位置校正阶段
|
||||
|
||||
核心自有源码 TS 迁移已在 CORE-20 完成,公开声明生成与兼容入口在 CORE-21 完成。当前继续修改源码:设置面板新增独立键盘、条目语义与焦点恢复模块,支持进入/返回、Escape、原生范围输入及更新失败恢复;网页全屏移动播放器节点后恢复已有焦点。最新完成提交仍为 faaa3e8c,CORE-23 尚未验收提交。
|
||||
|
||||
本阶段完整 CI 468 项通过(437 单元、6 工程、25 基线),239 个生产 TS 文件严格检查通过。扩大三浏览器回归 477 项通过;随后修正内部类型和清理回调返回类型,最终源码上的设置/滑块/切源专项 57 项通过。两轮构建指纹分别保留,不能合并宣称最终源码已跑完完整矩阵。见 [设置阶段证据](baselines/keyboard-settings-partial.json) 与 [实施记录](changes/2026-09-11-CORE-23-keyboard-focus.md)。
|
||||
|
||||
回归复现 WebKit 在 End 后立即 PageDown 时原生结束状态覆盖新 seek;复用一次有限校正,保留公开事件顺序,新操作、公开时间写入、切源、控件移除或销毁取消旧校正。修复后的 WebKit 五次重复探针通过。另修正测试 once(setBar) 提前消费加载事件的竞态,未增加等待或跳过失败。
|
||||
|
||||
总体仍为 214 项:57 done、1 doing、156 todo,覆盖 22 个包。下一步完成动态控件焦点、剩余模式退出及跨实例/SSR/字幕可用性,进行 CORE-23 新安装包和 legacy 全量验收,再提交并进入 CORE-22 核心总验收。多数生态包、后续 CI/CD、各包下一大版本、三轮发布复盘和真机门槛仍待实施。BASE-DOM-01 open;没有 push/publish/tag/merge。
|
||||
|
||||
## 当前实施:CORE-23 选择列表阶段
|
||||
|
||||
选择列表已拆出 selector-keyboard.ts,支持实际 Tab 入口、Enter/Space 打开与提交、方向键/Home/End/typeahead 导航、Escape 返回和不提交的 Tab 离开。原 selector.ts 保留绑定与异步结果归属;正常列表同步 aria-selected,包含原生交互 HTML 的内容保留按钮/输入框语义。鼠标悬停、异步结果、回调移交焦点及旧 click 参数均经过回归。
|
||||
|
||||
补充浏览器用例先复现再修复“已关闭列表继续吞掉 Escape”和“空列表悬停报告展开”。最终 CI 463 项、235 个生产 TS 严格检查通过;相关三浏览器回归 282 项通过,无失败/重试/跳过,其中选择列表专项 30 项。见 [阶段证据](baselines/keyboard-selectors-partial.json) 和 [实施记录](changes/2026-09-11-CORE-23-keyboard-focus.md)。当前仍是源码构建证据,新安装包/legacy 全量验收尚待进行。
|
||||
|
||||
下一步设置树和面板切换焦点,再检查模式退出、动态控件移除/替换、跨实例/SSR/字幕。CORE-23 doing,BASE-DOM-01 open;57 done、1 doing、156 todo,最新完成提交仍 faaa3e8c。整个 CORE-23 验收后独立 commit;未推送或发布。
|
||||
|
||||
## 当前实施:CORE-23 进度与音量滑块阶段
|
||||
|
||||
进度/音量已有独立 TS 键盘范围模块,支持方向键、PageUp/PageDown、Home/End、范围禁用和 ARIA 同步;进度保留 setBar-before-seek 及可选指针参数,切源/销毁/嵌套操作取消旧写入。音量面板可通过 Tab 进入,修复 visibility 过渡导致快速 Tab 跳过滑块的问题。新增十二语言 Progress 翻译,公开字段可选,包与 Monaco 声明均由脚本再生成。
|
||||
|
||||
最终 CI 463 项、234 个生产 TS 严格检查通过;accessibility/hotkey/progress-quality 三浏览器 123 项通过,无失败/重试/跳过。WebKit 实际 seek 时间与目标的微小差值按实际媒体值校验;中途检出的 Monaco 声明遗漏已生成修复。具体失败、修正和来源见 [滑块阶段证据](baselines/keyboard-sliders-partial.json) 与 [实施记录](changes/2026-09-11-CORE-23-keyboard-focus.md)。这是源码构建专项,尚非新安装包/legacy 全量验收。
|
||||
|
||||
接下来实现 selector、设置树和 Escape/焦点恢复,再检查模式退出、动态移除、跨实例/SSR/字幕。CORE-23 仍 doing,BASE-DOM-01 开放;57 done、1 doing、156 todo,最新完成提交仍 faaa3e8c。整个 CORE-23 完成后独立 commit;未推送或发布。
|
||||
|
||||
## 当前实施:CORE-23 按钮与键盘焦点第一阶段
|
||||
|
||||
从 faaa3e8c 接续,任务 doing。新增 accessibility/button、keyboard、focus 三个 TS 模块,接入播放、音量、设置、全屏/PiP/AirPlay/截图及自定义 click 控件;处理 Enter/Space、按键归属、焦点切换、动态移除和 scope 清理。新增键盘焦点样式,保留鼠标自动隐藏、旧点击回调和普通快捷键。
|
||||
|
||||
真实 Chromium 固定修改前 Tab 缺口;Firefox 探针确认其原生 video 是既有 Tab 入口,测试保留该入口后继续检查控件。新指针用例复现并修正了本轮任意焦点策略造成的控制栏常驻,现使用独立输入方式状态。当前完整 CI 456 项、232 个生产 TS 文件、按钮/焦点及 Hotkey 三浏览器 69 项通过。见 [阶段证据](baselines/keyboard-buttons-partial.json) 和 [变更记录](changes/2026-09-11-CORE-23-keyboard-focus.md)。
|
||||
|
||||
下一步实现/验证进度与音量 slider、selector、设置树进入/返回/Escape、模式退出、动态焦点恢复、跨实例/SSR 和字幕可用性,再进行安装包与全量矩阵验收。当前是源码构建浏览器证据,不能当作最新 npm/legacy 安装包已验证。CORE-23 与 BASE-DOM-01 保持开放,尚无本任务完成 commit;57 done、1 doing、156 todo。未推送或发布。
|
||||
|
||||
## 当前实施:CORE-21 公开声明生成与兼容视图完成
|
||||
|
||||
从 ee895a55 接续。公开声明源移至 packages/artplayer/public/,生成 37 个声明文件:22 个历史文件与精确模块/入口。新增 artplayer/runtime、runtime/legacy 和共享类型扩展入口,映射原有 JS 产物;build:types/check:types 已接入 CI 和隔离构建。旧入口继续支持 4.3.5,新精确入口验证 5.1.6/5.9.3 各四模式。核心自有源码 TS 迁移已在 CORE-20 完成,本任务完成公开类型出口与核心编辑器验收。
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
| BASE-LIFE-03 | resolved / 已复现 | Async plugin registers its result after destroy | CORE-08 |
|
||||
| BASE-LIFE-04 | resolved / 已复现 | Destroying an instance twice unregisters a different live instance | CORE-04 |
|
||||
| BASE-LIFE-05 | resolved / 已复现 | Failed constructor leaves initialized markup/listeners until explicit probe cleanup | CORE-04 |
|
||||
| BASE-DOM-01 | open / 已复现 | 控件 Tab 不可达 | CORE-23, CORE-17 |
|
||||
| BASE-DOM-01 | resolved / 已复现 | 控件 Tab 不可达 | CORE-23, CORE-17 |
|
||||
| BASE-DOM-02 | resolved / 已复现 | 窄容器中控件裁切 | CORE-13, CORE-14 |
|
||||
| BASE-DEMO-01 | open / 源码/产物事实 | 旧 thumbnail 插件示例不对应当前 workspace 包 | SITE-01, EX-03 |
|
||||
| BASE-TYPE-01 | resolved / 已复现 | NodeNext ESM 默认导出与声明互操作失配 | ENG-04, CORE-07, PKG-CHAPTER-04 |
|
||||
|
||||
+10
-2
@@ -146,7 +146,7 @@
|
||||
"id": "BASE-DOM-01",
|
||||
"title": "控件 Tab 不可达",
|
||||
"confirmation": "reproduced",
|
||||
"status": "open",
|
||||
"status": "resolved",
|
||||
"owners": [
|
||||
"CORE-23",
|
||||
"CORE-17"
|
||||
@@ -155,7 +155,15 @@
|
||||
"refactor/baselines/dom.json"
|
||||
],
|
||||
"compatibleResolution": "补键盘可达性、焦点及名称,保留旧 DOM/CSS 和快捷键。",
|
||||
"closureCriteria": "真实键盘与焦点回归通过,不只检查静态属性。"
|
||||
"closureCriteria": "真实键盘与焦点回归通过,不只检查静态属性。",
|
||||
"resolutionEvidence": [
|
||||
"refactor/changes/2026-09-11-CORE-23-keyboard-focus.md",
|
||||
"refactor/baselines/keyboard-validation.json",
|
||||
"test/browser/accessibility.spec.js",
|
||||
"test/browser/accessibility-setting.spec.js",
|
||||
"test/browser/accessibility-integration.spec.js"
|
||||
],
|
||||
"resolutionRationale": "旧发布包的 Tab 缺口保留对照;现有按钮、进度/音量滑块、选择列表、设置、mini、信息/锁定层及菜单具备真实键盘与焦点回归,保留旧快捷键和点击契约。新安装包 modern/legacy 各 1749 项三引擎全量通过,CI 468 项;动态入口失效先复现再修正。只关闭主要控件 Tab 不可达;物理 Apple/触摸/IME/辅助技术与 CORE-22/发布复盘仍为独立门槛。"
|
||||
},
|
||||
{
|
||||
"id": "BASE-DOM-02",
|
||||
|
||||
+5
-2
@@ -1168,9 +1168,12 @@
|
||||
"scope": [
|
||||
"artplayer"
|
||||
],
|
||||
"status": "todo",
|
||||
"status": "done",
|
||||
"risk": "H",
|
||||
"evidence": [],
|
||||
"evidence": [
|
||||
"changes/2026-09-11-CORE-23-keyboard-focus.md",
|
||||
"baselines/keyboard-validation.json"
|
||||
],
|
||||
"id": "CORE-23",
|
||||
"phase": "3-4 核心迁移",
|
||||
"title": "检查并补齐键盘、焦点与可访问名称",
|
||||
|
||||
Reference in new issue
Block a user