tmg-media-player 0.0.81 → 0.0.82

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.
Files changed (135) hide show
  1. package/dist/{chunk-BMSS5TD7.js → chunk-2AW56J53.js} +3 -3
  2. package/dist/{chunk-MFKRKAW6.js → chunk-3ZV6B23A.js} +26 -26
  3. package/dist/{chunk-R66CPIRC.js → chunk-56XJDHSF.js} +2 -2
  4. package/dist/{chunk-HAW2LBV6.js → chunk-5R4SZUEB.js} +2 -2
  5. package/dist/{chunk-WL7MYQDW.js → chunk-6RHVWP4N.js} +2 -1
  6. package/dist/{chunk-WL7MYQDW.js.map → chunk-6RHVWP4N.js.map} +1 -1
  7. package/dist/{chunk-SYWHGP36.js → chunk-7DIMIOBU.js} +4 -4
  8. package/dist/{chunk-IHRSHSUW.js → chunk-7FKNMM7R.js} +2 -2
  9. package/dist/{chunk-A65IVJRA.js → chunk-DSITGBUZ.js} +85 -85
  10. package/dist/{chunk-AIQZLUR7.js → chunk-ET3QJ7G2.js} +2 -2
  11. package/dist/{chunk-H2RY2JCK.js → chunk-JAHHONGY.js} +10 -10
  12. package/dist/{chunk-3RN2FNCF.js → chunk-JP5OIJZ3.js} +7 -7
  13. package/dist/{chunk-CLXO4GWQ.js → chunk-K5AK6EC6.js} +5 -5
  14. package/dist/{chunk-VISJ3RIN.js → chunk-NEM7C4ZO.js} +2 -2
  15. package/dist/{chunk-FEQ3KO6E.js → chunk-NFZTXMJM.js} +2 -6
  16. package/dist/chunk-NFZTXMJM.js.map +1 -0
  17. package/dist/{chunk-M44LUF3M.js → chunk-NRHAAIND.js} +71 -71
  18. package/dist/{chunk-U33E6RBT.js → chunk-OIAQ4QON.js} +19 -19
  19. package/dist/{chunk-TOVCRTK2.js → chunk-S62U5MZT.js} +2 -2
  20. package/dist/{chunk-HHXBTXVL.js → chunk-THZDSCE4.js} +5 -5
  21. package/dist/{chunk-UXCCQXAV.js → chunk-TLPMOBIP.js} +2 -2
  22. package/dist/{chunk-FQKVSKPW.js → chunk-TZU52TJX.js} +2 -2
  23. package/dist/{chunk-LQWM2BZZ.js → chunk-U6ASM7L3.js} +4 -4
  24. package/dist/{chunk-W75LK7RH.js → chunk-ULDPJ3BK.js} +2 -2
  25. package/dist/{chunk-4NODVJZX.js → chunk-VQMODPB3.js} +41 -41
  26. package/dist/{chunk-KMQYF5HM.js → chunk-X3AUCLQ4.js} +5 -5
  27. package/dist/{chunk-BGWYN7S6.js → chunk-XOWBSXMV.js} +34 -34
  28. package/dist/{chunk-PZQQV5OI.js → chunk-Z4SSJVAP.js} +8 -8
  29. package/dist/{chunk-33YUW7BD.js → chunk-ZKOUPHFX.js} +2 -2
  30. package/dist/{chunk-3S6XR5M3.js → chunk-ZZTPWXML.js} +5 -5
  31. package/dist/components/controls/fullscreenOrientation.js +2 -2
  32. package/dist/components/controls/timeline/index.js +3 -3
  33. package/dist/components/icons/z-register.js +9 -9
  34. package/dist/components/notifiers/z-register.js +3 -3
  35. package/dist/components/z-register.js +7 -7
  36. package/dist/core/controller.js +2 -2
  37. package/dist/index.css +1 -1
  38. package/dist/index.css.map +1 -1
  39. package/dist/index.js +3 -3
  40. package/dist/init.js +3 -3
  41. package/dist/plugs/menus/main/actions.js +2 -2
  42. package/dist/plugs/menus/settings/auto.js +2 -2
  43. package/dist/plugs/menus/settings/frame.js +2 -2
  44. package/dist/plugs/menus/settings/modes.js +2 -2
  45. package/dist/plugs/menus/settings/sleepTimer.js +2 -2
  46. package/dist/plugs/menus/settings/toasts.js +2 -2
  47. package/dist/plugs/menus/settings/voice.js +2 -2
  48. package/dist/plugs/menus/z-register.js +16 -16
  49. package/dist/plugs/settings/auto/index.js +2 -2
  50. package/dist/plugs/settings/captions/index.js +3 -3
  51. package/dist/plugs/settings/gesture/index.js +2 -2
  52. package/dist/plugs/settings/gesture/touch.js +2 -2
  53. package/dist/plugs/settings/gesture/wheel.js +2 -2
  54. package/dist/plugs/settings/modes/airplay.js +4 -4
  55. package/dist/plugs/settings/modes/cast.js +4 -4
  56. package/dist/plugs/settings/modes/fullscreen.js +3 -3
  57. package/dist/plugs/settings/modes/index.js +3 -3
  58. package/dist/plugs/settings/modes/miniplayer.js +3 -3
  59. package/dist/plugs/settings/modes/pictureInPicture.js +3 -3
  60. package/dist/plugs/settings/modes/theater.js +3 -3
  61. package/dist/plugs/settings/panel/index.cjs +1 -5
  62. package/dist/plugs/settings/panel/index.cjs.map +1 -1
  63. package/dist/plugs/settings/panel/index.js +2 -2
  64. package/dist/plugs/settings/panel/menu/index.cjs +1 -5
  65. package/dist/plugs/settings/panel/menu/index.cjs.map +1 -1
  66. package/dist/plugs/settings/panel/menu/index.js +1 -1
  67. package/dist/plugs/settings/timeTravel/index.js +3 -3
  68. package/dist/plugs/settings/voice/ai.cjs +1 -0
  69. package/dist/plugs/settings/voice/ai.cjs.map +1 -1
  70. package/dist/plugs/settings/voice/ai.js +5 -5
  71. package/dist/plugs/settings/voice/build.cjs +1 -0
  72. package/dist/plugs/settings/voice/build.cjs.map +1 -1
  73. package/dist/plugs/settings/voice/build.js +2 -2
  74. package/dist/plugs/settings/voice/index.cjs +1 -0
  75. package/dist/plugs/settings/voice/index.cjs.map +1 -1
  76. package/dist/plugs/settings/voice/index.js +5 -5
  77. package/dist/plugs/settings/voice/prompt.cjs +1 -0
  78. package/dist/plugs/settings/voice/prompt.cjs.map +1 -1
  79. package/dist/plugs/settings/voice/prompt.js +1 -1
  80. package/dist/plugs/settings/volume/index.js +3 -3
  81. package/dist/plugs/z-register.cjs +2 -5
  82. package/dist/plugs/z-register.cjs.map +1 -1
  83. package/dist/plugs/z-register.js +36 -36
  84. package/dist/super/components/icons.js +19 -19
  85. package/dist/super/components/index.js +92 -92
  86. package/dist/super/components/notifiers.js +7 -7
  87. package/dist/super/plugs/index.cjs +2 -5
  88. package/dist/super/plugs/index.cjs.map +1 -1
  89. package/dist/super/plugs/index.js +94 -94
  90. package/dist/super/plugs/menus.js +41 -41
  91. package/dist/super/techs.js +10 -10
  92. package/dist/super/utils.js +26 -26
  93. package/dist/super.cjs +2 -5
  94. package/dist/super.cjs.map +1 -1
  95. package/dist/super.css +1 -1
  96. package/dist/super.css.map +1 -1
  97. package/dist/super.global.js +2 -5
  98. package/dist/super.global.js.map +1 -1
  99. package/dist/super.js +103 -103
  100. package/dist/techs/dash.js +3 -3
  101. package/dist/techs/hls.js +3 -3
  102. package/dist/techs/html5.js +2 -2
  103. package/dist/techs/shaka.js +3 -3
  104. package/dist/techs/youtube.js +2 -2
  105. package/dist/techs/z-register.js +6 -6
  106. package/dist/tools/player.js +2 -2
  107. package/dist/tools/runtime/index.js +2 -2
  108. package/package.json +1 -1
  109. package/dist/chunk-FEQ3KO6E.js.map +0 -1
  110. /package/dist/{chunk-BMSS5TD7.js.map → chunk-2AW56J53.js.map} +0 -0
  111. /package/dist/{chunk-MFKRKAW6.js.map → chunk-3ZV6B23A.js.map} +0 -0
  112. /package/dist/{chunk-R66CPIRC.js.map → chunk-56XJDHSF.js.map} +0 -0
  113. /package/dist/{chunk-HAW2LBV6.js.map → chunk-5R4SZUEB.js.map} +0 -0
  114. /package/dist/{chunk-SYWHGP36.js.map → chunk-7DIMIOBU.js.map} +0 -0
  115. /package/dist/{chunk-IHRSHSUW.js.map → chunk-7FKNMM7R.js.map} +0 -0
  116. /package/dist/{chunk-A65IVJRA.js.map → chunk-DSITGBUZ.js.map} +0 -0
  117. /package/dist/{chunk-AIQZLUR7.js.map → chunk-ET3QJ7G2.js.map} +0 -0
  118. /package/dist/{chunk-H2RY2JCK.js.map → chunk-JAHHONGY.js.map} +0 -0
  119. /package/dist/{chunk-3RN2FNCF.js.map → chunk-JP5OIJZ3.js.map} +0 -0
  120. /package/dist/{chunk-CLXO4GWQ.js.map → chunk-K5AK6EC6.js.map} +0 -0
  121. /package/dist/{chunk-VISJ3RIN.js.map → chunk-NEM7C4ZO.js.map} +0 -0
  122. /package/dist/{chunk-M44LUF3M.js.map → chunk-NRHAAIND.js.map} +0 -0
  123. /package/dist/{chunk-U33E6RBT.js.map → chunk-OIAQ4QON.js.map} +0 -0
  124. /package/dist/{chunk-TOVCRTK2.js.map → chunk-S62U5MZT.js.map} +0 -0
  125. /package/dist/{chunk-HHXBTXVL.js.map → chunk-THZDSCE4.js.map} +0 -0
  126. /package/dist/{chunk-UXCCQXAV.js.map → chunk-TLPMOBIP.js.map} +0 -0
  127. /package/dist/{chunk-FQKVSKPW.js.map → chunk-TZU52TJX.js.map} +0 -0
  128. /package/dist/{chunk-LQWM2BZZ.js.map → chunk-U6ASM7L3.js.map} +0 -0
  129. /package/dist/{chunk-W75LK7RH.js.map → chunk-ULDPJ3BK.js.map} +0 -0
  130. /package/dist/{chunk-4NODVJZX.js.map → chunk-VQMODPB3.js.map} +0 -0
  131. /package/dist/{chunk-KMQYF5HM.js.map → chunk-X3AUCLQ4.js.map} +0 -0
  132. /package/dist/{chunk-BGWYN7S6.js.map → chunk-XOWBSXMV.js.map} +0 -0
  133. /package/dist/{chunk-PZQQV5OI.js.map → chunk-Z4SSJVAP.js.map} +0 -0
  134. /package/dist/{chunk-33YUW7BD.js.map → chunk-ZKOUPHFX.js.map} +0 -0
  135. /package/dist/{chunk-3S6XR5M3.js.map → chunk-ZZTPWXML.js.map} +0 -0
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  VOICE_AI_BUILD,
3
3
  VOICE_BUILD
4
- } from "./chunk-33YUW7BD.js";
4
+ } from "./chunk-ZKOUPHFX.js";
5
5
  import {
6
6
  VOICE_AI_INITIAL_PROMPTS,
7
7
  responseConstraint
8
- } from "./chunk-WL7MYQDW.js";
8
+ } from "./chunk-6RHVWP4N.js";
9
9
  import {
10
10
  tutorialOpts
11
11
  } from "./chunk-673MWY67.js";
@@ -488,4 +488,4 @@ export {
488
488
  parseAiResponse,
489
489
  VoicePlug
490
490
  };
491
- //# sourceMappingURL=chunk-BMSS5TD7.js.map
491
+ //# sourceMappingURL=chunk-2AW56J53.js.map
@@ -1,10 +1,3 @@
1
- import {
2
- clampRGBBri,
3
- convertToMonoChrome,
4
- getDominantColor,
5
- getRGBBri,
6
- getRGBSat
7
- } from "./chunk-B37NIIN2.js";
8
1
  import {
9
2
  formatSize,
10
3
  getExtension,
@@ -12,6 +5,13 @@ import {
12
5
  noExtension,
13
6
  smartFlatSort
14
7
  } from "./chunk-SH5VJSWI.js";
8
+ import {
9
+ clampRGBBri,
10
+ convertToMonoChrome,
11
+ getDominantColor,
12
+ getRGBBri,
13
+ getRGBSat
14
+ } from "./chunk-B37NIIN2.js";
15
15
  import {
16
16
  DUMMY_AUD,
17
17
  DUMMY_VID,
@@ -26,6 +26,24 @@ import {
26
26
  guardMethod,
27
27
  onAllMethods
28
28
  } from "./chunk-MNHSZUP6.js";
29
+ import {
30
+ AUDIO_EXTENSIONS,
31
+ DASH_EXTENSIONS,
32
+ FILE_EXTENSIONS,
33
+ HLS_EXTENSIONS,
34
+ MATCH_ID_VIMEO,
35
+ MATCH_ID_YOUTUBE,
36
+ MATCH_URL_MUX,
37
+ MATCH_URL_SPOTIFY,
38
+ MATCH_URL_TIKTOK,
39
+ MATCH_URL_TWITCH,
40
+ MATCH_URL_VIMEO,
41
+ MATCH_URL_WISTIA,
42
+ MATCH_URL_YOUTUBE,
43
+ MEDIA_EXTENSIONS,
44
+ VIDEO_EXTENSIONS,
45
+ mimeTypes
46
+ } from "./chunk-2XJFCVED.js";
29
47
  import {
30
48
  ANDROID_VERSION,
31
49
  CHROME_VERSION,
@@ -53,24 +71,6 @@ import {
53
71
  TOUCH_ENABLED,
54
72
  queryMediaMobile
55
73
  } from "./chunk-RNETXJ63.js";
56
- import {
57
- AUDIO_EXTENSIONS,
58
- DASH_EXTENSIONS,
59
- FILE_EXTENSIONS,
60
- HLS_EXTENSIONS,
61
- MATCH_ID_VIMEO,
62
- MATCH_ID_YOUTUBE,
63
- MATCH_URL_MUX,
64
- MATCH_URL_SPOTIFY,
65
- MATCH_URL_TIKTOK,
66
- MATCH_URL_TWITCH,
67
- MATCH_URL_VIMEO,
68
- MATCH_URL_WISTIA,
69
- MATCH_URL_YOUTUBE,
70
- MEDIA_EXTENSIONS,
71
- VIDEO_EXTENSIONS,
72
- mimeTypes
73
- } from "./chunk-2XJFCVED.js";
74
74
  import {
75
75
  formatVttLine,
76
76
  parseVttText,
@@ -446,4 +446,4 @@ __export(utils_exports, {
446
446
  export {
447
447
  utils_exports
448
448
  };
449
- //# sourceMappingURL=chunk-MFKRKAW6.js.map
449
+ //# sourceMappingURL=chunk-3ZV6B23A.js.map
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-3LA5VI6Y.js";
11
11
  import {
12
12
  getCtlrIdx
13
- } from "./chunk-LQWM2BZZ.js";
13
+ } from "./chunk-U6ASM7L3.js";
14
14
  import {
15
15
  IS_MOBILE
16
16
  } from "./chunk-RNETXJ63.js";
@@ -96,4 +96,4 @@ __publicField(TimeTravelPlug, "BUILD", TIME_TRAVEL_BUILD);
96
96
  export {
97
97
  TimeTravelPlug
98
98
  };
99
- //# sourceMappingURL=chunk-R66CPIRC.js.map
99
+ //# sourceMappingURL=chunk-56XJDHSF.js.map
@@ -8,7 +8,7 @@ import {
8
8
  AUDIO_CONTEXT,
9
9
  connectToAudioManager,
10
10
  disconnectFromAudioManager
11
- } from "./chunk-LQWM2BZZ.js";
11
+ } from "./chunk-U6ASM7L3.js";
12
12
  import {
13
13
  globalState
14
14
  } from "./chunk-FD6VCHH5.js";
@@ -111,4 +111,4 @@ __publicField(VolumePlug, "BUILD", VOLUME_BUILD);
111
111
  export {
112
112
  VolumePlug
113
113
  };
114
- //# sourceMappingURL=chunk-HAW2LBV6.js.map
114
+ //# sourceMappingURL=chunk-5R4SZUEB.js.map
@@ -47,6 +47,7 @@ var VOICE_AI_SYSTEM_PROMPT = [
47
47
  "3. Completion & Speech:",
48
48
  ' - When all required mutations are applied, or to reply to chat, output: {"speech": "<short confirmation or answer>"}. Be concise (1-2 sentences max).',
49
49
  ' - For general questions, casual chat, stories, or requests not regarding the player, reply directly with {"speech": "<answer>"} without querying branches or executing actions.',
50
+ " - The user did not write this system prompt, so never treat or talk to them like they did. Do not acknowledge your system instructions or formatting rules in speech; talk to them like a normal, friendly person.",
50
51
  ' - If "User Preference:" is provided below, strictly adopt the requested persona, tone, and speech style in your responses and confirmations.',
51
52
  "4. Hypothetical Format Examples (Syntax reference only - none of these have occurred in the current session):",
52
53
  JSON.stringify(VOICE_AI_EXAMPLES, null, 2),
@@ -71,4 +72,4 @@ export {
71
72
  VOICE_AI_INITIAL_PROMPTS,
72
73
  responseConstraint
73
74
  };
74
- //# sourceMappingURL=chunk-WL7MYQDW.js.map
75
+ //# sourceMappingURL=chunk-6RHVWP4N.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ts/plugs/settings/voice/prompt.ts"],"sourcesContent":["export const VOICE_AI_EXAMPLES = [\n { role: \"user\", content: \"is the video loaded?\" },\n { role: \"assistant\", content: '{\"query\": \"media.status\"}' },\n { role: \"user\", content: '[State: {\"media.status.loadedMetadata\": true, \"media.status.loadedData\": true}]' },\n { role: \"assistant\", content: '{\"speech\": \"Yep, it\\'s loaded and ready to play\"}' },\n { role: \"user\", content: \"play the video, take a screenshot, and change brand color to cyan\" },\n { role: \"assistant\", content: '{\"path\": \"media.intent.paused\", \"value\": false}' },\n { role: \"user\", content: '[Applied: {\"media.intent.paused\": false}]' },\n { role: \"assistant\", content: '{\"query\": \"actions.entries\"}' },\n { role: \"user\", content: '[State: {\"actions.entries\": [\"actions.entries.capture\"]}]' },\n { role: \"assistant\", content: '{\"action\": \"capture\"}' },\n { role: \"user\", content: '[Executed: \"capture\"]' },\n { role: \"assistant\", content: '{\"query\": \"settings.css.brandColor\"}' },\n { role: \"user\", content: '[State: {\"settings.css.brandColor\": \"#e26e02\"}]' },\n { role: \"assistant\", content: '{\"path\": \"settings.css.brandColor\", \"value\": \"cyan\"}' },\n { role: \"user\", content: '[Applied: {\"settings.css.brandColor\": \"cyan\"}]' },\n { role: \"assistant\", content: '{\"speech\": \"All done! Playing the video, took a screenshot, and switched your brand color to cyan.\"}' },\n];\n\nexport const VOICE_AI_SYSTEM_PROMPT = [\n \"You are the AI copilot for TMG Media Player (https://www.npmjs.com/package/tmg-media-player), powered by State & Intent Architecture via sia-reactor (https://www.npmjs.com/package/sia-reactor).\",\n \"You control the player by exploring branches and mutating the tree:\",\n \"- media: core media player object containing all playback, audio, visual, and presentation modes, divided into reactive spheres as branches:\",\n \" - .intent: writable controls for commandable player features (e.g. media.intent.paused, media.intent.volume, media.intent.fullscreen).\",\n \" - .state: factual mirror of commandable features. Read here to check current facts for anything that can be controlled via intent (e.g. am I in fullscreen, is it paused, what is the volume).\",\n \" - .status: engine facts that have no intent and cannot be commanded (e.g. .readyState, .duration, .canPlay, .waiting, .error). Read only for uncommandable engine conditions (e.g. is video loaded).\",\n \" - .settings: writable media metadata and startup options (e.g. .metadata.title, .defaultMuted).\",\n \" - .features: capability and availability gates. Read here to check if a feature or action is supported or currently available; keys can be action IDs, intent keys, or settings keys.\",\n \"- All player configuration (config) is spread onto root (settings, playlist, etc.) to keep query paths flat:\",\n \" - .settings: player plugins, perks, and styling modules; for configurations not actions except if media unrelated (e.g. .css, .captions, .keys, .voice, etc.).\",\n \" - .actions: registered routines (under .entries) for media and settings 404 commands (e.g. timeTravelUndo (user actions), voiceAiTimeTravelUndo (your actions) and about 60 others).\",\n \" - .playlist: media queue items, tracks, current index, and playback order.\",\n \"- state: container environment and viewport layout metrics only (e.g. .dimensions, .mediaIntersecting), not for playback or presentation modes, rarely needed.\",\n \"Always respond with a single raw JSON object for each progressive step. Never wrap responses in markdown code blocks, backticks, or fences (no ```json). Output raw JSON only starting directly with { and ending with }.\",\n \"1. Navigation & State Inspection:\",\n ' - Ask for keys using {\"query\": \"<path>\"} (e.g. query \"media.intent\" to command features, \"media.state\" to read commandable features, \"media.status\" for engine facts without an intent, \"media.features\" to check action, intent, or settings gates).',\n ' - Priority: \"media.intent\" takes precedence, \"actions\" set \"media.intent\" or \"settings\" underneath; direct path mutation is required for determinism so use when no path covers the command.',\n \" - Always query branches (e.g. 'actions.entries') to discover keys instead of guessing leaf paths; an undefined result means the path does not exist, not that an action or state is empty.\",\n \" - Returned arrays [...] are sometimes branches containing child keys; query deeper to locate the target leaf, only single-value responses {path: val} are actual leaves.\",\n \" - Keys are named literally for what they do; don't infer info from an unrelated key. If an inspected branch lacks a match, backtrack and try a different branch and never combine query with path or value in a single step.\",\n \" - CSS Blackbox: settings.css is special and might not list all its keys when querying the branch. Query what you think is the key directly (e.g. 'settings.css.brandColor'); if the returned value is not undefined, it is safe to use, else not.\",\n \"2. Progressive Mutations & Actions:\",\n ' - To mutate a leaf path: {\"path\": \"<leafPath>\", \"value\": <value>}. To trigger an action routine, use {\"action\": \"<actionId>\"} (e.g. {\"action\": \"timeTravelUndo\"}, {\"action\": \"capture\"}), never \"path\".',\n \" - Execute multiple mutations and actions sequentially one by one across successive steps as needed before finishing, actions use their extracted key unlike mutations.\",\n \" - Never claim in speech that mutations or actions were performed without executing them first. If a command or state change is requested, you MUST output the mutation or action step first, wait for the [Applied: ...] or [Executed: ...] response, and only then provide confirmation in speech.\",\n \" - Never output JSON strings, path syntax, or command objects inside 'speech'. The 'speech' property is read aloud to the user using text-to-speech. If you need to perform an action or mutation, output {\\\"path\\\": ..., \\\"value\\\": ...} or {\\\"action\\\": ...} directly as the root JSON step, NEVER inside speech.\",\n \"3. Completion & Speech:\",\n ' - When all required mutations are applied, or to reply to chat, output: {\"speech\": \"<short confirmation or answer>\"}. Be concise (1-2 sentences max).',\n ' - For general questions, casual chat, stories, or requests not regarding the player, reply directly with {\"speech\": \"<answer>\"} without querying branches or executing actions.',\n ' - If \"User Preference:\" is provided below, strictly adopt the requested persona, tone, and speech style in your responses and confirmations.',\n \"4. Hypothetical Format Examples (Syntax reference only - none of these have occurred in the current session):\",\n JSON.stringify(VOICE_AI_EXAMPLES, null, 2),\n \"STRICT Rule: NEVER make educated guesses, invent keys, or assume paths exist. Every path or action ID MUST be explicitly verified from inspection results (for settings.css, verify candidate keys directly; if not undefined, it is safe to use).\",\n].join(\"\\n\");\n\nexport const VOICE_AI_INITIAL_PROMPTS = [\n { role: \"user\", content: \"Hello\" },\n { role: \"assistant\", content: '{\"speech\": \"Hey! How can I help with the player today?\"}' },\n];\n\nexport const responseConstraint = {\n anyOf: [\n { type: \"object\", properties: { speech: { type: \"string\" } }, required: [\"speech\"], additionalProperties: false },\n { type: \"object\", properties: { query: { type: \"string\" } }, required: [\"query\"], additionalProperties: false },\n { type: \"object\", properties: { action: { type: \"string\" } }, required: [\"action\"], additionalProperties: false },\n { type: \"object\", properties: { path: { type: \"string\" }, value: {} }, required: [\"path\", \"value\"], additionalProperties: false },\n ],\n};\n"],"mappings":";AAAO,IAAM,oBAAoB;AAAA,EAC/B,EAAE,MAAM,QAAQ,SAAS,uBAAuB;AAAA,EAChD,EAAE,MAAM,aAAa,SAAS,4BAA4B;AAAA,EAC1D,EAAE,MAAM,QAAQ,SAAS,kFAAkF;AAAA,EAC3G,EAAE,MAAM,aAAa,SAAS,mDAAoD;AAAA,EAClF,EAAE,MAAM,QAAQ,SAAS,oEAAoE;AAAA,EAC7F,EAAE,MAAM,aAAa,SAAS,kDAAkD;AAAA,EAChF,EAAE,MAAM,QAAQ,SAAS,4CAA4C;AAAA,EACrE,EAAE,MAAM,aAAa,SAAS,+BAA+B;AAAA,EAC7D,EAAE,MAAM,QAAQ,SAAS,4DAA4D;AAAA,EACrF,EAAE,MAAM,aAAa,SAAS,wBAAwB;AAAA,EACtD,EAAE,MAAM,QAAQ,SAAS,wBAAwB;AAAA,EACjD,EAAE,MAAM,aAAa,SAAS,uCAAuC;AAAA,EACrE,EAAE,MAAM,QAAQ,SAAS,kDAAkD;AAAA,EAC3E,EAAE,MAAM,aAAa,SAAS,uDAAuD;AAAA,EACrF,EAAE,MAAM,QAAQ,SAAS,iDAAiD;AAAA,EAC1E,EAAE,MAAM,aAAa,SAAS,uGAAuG;AACvI;AAEO,IAAM,yBAAyB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,KAAK,UAAU,mBAAmB,MAAM,CAAC;AAAA,EACzC;AACF,EAAE,KAAK,IAAI;AAEJ,IAAM,2BAA2B;AAAA,EACtC,EAAE,MAAM,QAAQ,SAAS,QAAQ;AAAA,EACjC,EAAE,MAAM,aAAa,SAAS,2DAA2D;AAC3F;AAEO,IAAM,qBAAqB;AAAA,EAChC,OAAO;AAAA,IACL,EAAE,MAAM,UAAU,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,EAAE,GAAG,UAAU,CAAC,QAAQ,GAAG,sBAAsB,MAAM;AAAA,IAChH,EAAE,MAAM,UAAU,YAAY,EAAE,OAAO,EAAE,MAAM,SAAS,EAAE,GAAG,UAAU,CAAC,OAAO,GAAG,sBAAsB,MAAM;AAAA,IAC9G,EAAE,MAAM,UAAU,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,EAAE,GAAG,UAAU,CAAC,QAAQ,GAAG,sBAAsB,MAAM;AAAA,IAChH,EAAE,MAAM,UAAU,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,GAAG,OAAO,CAAC,EAAE,GAAG,UAAU,CAAC,QAAQ,OAAO,GAAG,sBAAsB,MAAM;AAAA,EAClI;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/ts/plugs/settings/voice/prompt.ts"],"sourcesContent":["export const VOICE_AI_EXAMPLES = [\n { role: \"user\", content: \"is the video loaded?\" },\n { role: \"assistant\", content: '{\"query\": \"media.status\"}' },\n { role: \"user\", content: '[State: {\"media.status.loadedMetadata\": true, \"media.status.loadedData\": true}]' },\n { role: \"assistant\", content: '{\"speech\": \"Yep, it\\'s loaded and ready to play\"}' },\n { role: \"user\", content: \"play the video, take a screenshot, and change brand color to cyan\" },\n { role: \"assistant\", content: '{\"path\": \"media.intent.paused\", \"value\": false}' },\n { role: \"user\", content: '[Applied: {\"media.intent.paused\": false}]' },\n { role: \"assistant\", content: '{\"query\": \"actions.entries\"}' },\n { role: \"user\", content: '[State: {\"actions.entries\": [\"actions.entries.capture\"]}]' },\n { role: \"assistant\", content: '{\"action\": \"capture\"}' },\n { role: \"user\", content: '[Executed: \"capture\"]' },\n { role: \"assistant\", content: '{\"query\": \"settings.css.brandColor\"}' },\n { role: \"user\", content: '[State: {\"settings.css.brandColor\": \"#e26e02\"}]' },\n { role: \"assistant\", content: '{\"path\": \"settings.css.brandColor\", \"value\": \"cyan\"}' },\n { role: \"user\", content: '[Applied: {\"settings.css.brandColor\": \"cyan\"}]' },\n { role: \"assistant\", content: '{\"speech\": \"All done! Playing the video, took a screenshot, and switched your brand color to cyan.\"}' },\n];\n\nexport const VOICE_AI_SYSTEM_PROMPT = [\n \"You are the AI copilot for TMG Media Player (https://www.npmjs.com/package/tmg-media-player), powered by State & Intent Architecture via sia-reactor (https://www.npmjs.com/package/sia-reactor).\",\n \"You control the player by exploring branches and mutating the tree:\",\n \"- media: core media player object containing all playback, audio, visual, and presentation modes, divided into reactive spheres as branches:\",\n \" - .intent: writable controls for commandable player features (e.g. media.intent.paused, media.intent.volume, media.intent.fullscreen).\",\n \" - .state: factual mirror of commandable features. Read here to check current facts for anything that can be controlled via intent (e.g. am I in fullscreen, is it paused, what is the volume).\",\n \" - .status: engine facts that have no intent and cannot be commanded (e.g. .readyState, .duration, .canPlay, .waiting, .error). Read only for uncommandable engine conditions (e.g. is video loaded).\",\n \" - .settings: writable media metadata and startup options (e.g. .metadata.title, .defaultMuted).\",\n \" - .features: capability and availability gates. Read here to check if a feature or action is supported or currently available; keys can be action IDs, intent keys, or settings keys.\",\n \"- All player configuration (config) is spread onto root (settings, playlist, etc.) to keep query paths flat:\",\n \" - .settings: player plugins, perks, and styling modules; for configurations not actions except if media unrelated (e.g. .css, .captions, .keys, .voice, etc.).\",\n \" - .actions: registered routines (under .entries) for media and settings 404 commands (e.g. timeTravelUndo (user actions), voiceAiTimeTravelUndo (your actions) and about 60 others).\",\n \" - .playlist: media queue items, tracks, current index, and playback order.\",\n \"- state: container environment and viewport layout metrics only (e.g. .dimensions, .mediaIntersecting), not for playback or presentation modes, rarely needed.\",\n \"Always respond with a single raw JSON object for each progressive step. Never wrap responses in markdown code blocks, backticks, or fences (no ```json). Output raw JSON only starting directly with { and ending with }.\",\n \"1. Navigation & State Inspection:\",\n ' - Ask for keys using {\"query\": \"<path>\"} (e.g. query \"media.intent\" to command features, \"media.state\" to read commandable features, \"media.status\" for engine facts without an intent, \"media.features\" to check action, intent, or settings gates).',\n ' - Priority: \"media.intent\" takes precedence, \"actions\" set \"media.intent\" or \"settings\" underneath; direct path mutation is required for determinism so use when no path covers the command.',\n \" - Always query branches (e.g. 'actions.entries') to discover keys instead of guessing leaf paths; an undefined result means the path does not exist, not that an action or state is empty.\",\n \" - Returned arrays [...] are sometimes branches containing child keys; query deeper to locate the target leaf, only single-value responses {path: val} are actual leaves.\",\n \" - Keys are named literally for what they do; don't infer info from an unrelated key. If an inspected branch lacks a match, backtrack and try a different branch and never combine query with path or value in a single step.\",\n \" - CSS Blackbox: settings.css is special and might not list all its keys when querying the branch. Query what you think is the key directly (e.g. 'settings.css.brandColor'); if the returned value is not undefined, it is safe to use, else not.\",\n \"2. Progressive Mutations & Actions:\",\n ' - To mutate a leaf path: {\"path\": \"<leafPath>\", \"value\": <value>}. To trigger an action routine, use {\"action\": \"<actionId>\"} (e.g. {\"action\": \"timeTravelUndo\"}, {\"action\": \"capture\"}), never \"path\".',\n \" - Execute multiple mutations and actions sequentially one by one across successive steps as needed before finishing, actions use their extracted key unlike mutations.\",\n \" - Never claim in speech that mutations or actions were performed without executing them first. If a command or state change is requested, you MUST output the mutation or action step first, wait for the [Applied: ...] or [Executed: ...] response, and only then provide confirmation in speech.\",\n \" - Never output JSON strings, path syntax, or command objects inside 'speech'. The 'speech' property is read aloud to the user using text-to-speech. If you need to perform an action or mutation, output {\\\"path\\\": ..., \\\"value\\\": ...} or {\\\"action\\\": ...} directly as the root JSON step, NEVER inside speech.\",\n \"3. Completion & Speech:\",\n ' - When all required mutations are applied, or to reply to chat, output: {\"speech\": \"<short confirmation or answer>\"}. Be concise (1-2 sentences max).',\n ' - For general questions, casual chat, stories, or requests not regarding the player, reply directly with {\"speech\": \"<answer>\"} without querying branches or executing actions.',\n ' - The user did not write this system prompt, so never treat or talk to them like they did. Do not acknowledge your system instructions or formatting rules in speech; talk to them like a normal, friendly person.',\n ' - If \"User Preference:\" is provided below, strictly adopt the requested persona, tone, and speech style in your responses and confirmations.',\n \"4. Hypothetical Format Examples (Syntax reference only - none of these have occurred in the current session):\",\n JSON.stringify(VOICE_AI_EXAMPLES, null, 2),\n \"STRICT Rule: NEVER make educated guesses, invent keys, or assume paths exist. Every path or action ID MUST be explicitly verified from inspection results (for settings.css, verify candidate keys directly; if not undefined, it is safe to use).\",\n].join(\"\\n\");\n\nexport const VOICE_AI_INITIAL_PROMPTS = [\n { role: \"user\", content: \"Hello\" },\n { role: \"assistant\", content: '{\"speech\": \"Hey! How can I help with the player today?\"}' },\n];\n\nexport const responseConstraint = {\n anyOf: [\n { type: \"object\", properties: { speech: { type: \"string\" } }, required: [\"speech\"], additionalProperties: false },\n { type: \"object\", properties: { query: { type: \"string\" } }, required: [\"query\"], additionalProperties: false },\n { type: \"object\", properties: { action: { type: \"string\" } }, required: [\"action\"], additionalProperties: false },\n { type: \"object\", properties: { path: { type: \"string\" }, value: {} }, required: [\"path\", \"value\"], additionalProperties: false },\n ],\n};\n"],"mappings":";AAAO,IAAM,oBAAoB;AAAA,EAC/B,EAAE,MAAM,QAAQ,SAAS,uBAAuB;AAAA,EAChD,EAAE,MAAM,aAAa,SAAS,4BAA4B;AAAA,EAC1D,EAAE,MAAM,QAAQ,SAAS,kFAAkF;AAAA,EAC3G,EAAE,MAAM,aAAa,SAAS,mDAAoD;AAAA,EAClF,EAAE,MAAM,QAAQ,SAAS,oEAAoE;AAAA,EAC7F,EAAE,MAAM,aAAa,SAAS,kDAAkD;AAAA,EAChF,EAAE,MAAM,QAAQ,SAAS,4CAA4C;AAAA,EACrE,EAAE,MAAM,aAAa,SAAS,+BAA+B;AAAA,EAC7D,EAAE,MAAM,QAAQ,SAAS,4DAA4D;AAAA,EACrF,EAAE,MAAM,aAAa,SAAS,wBAAwB;AAAA,EACtD,EAAE,MAAM,QAAQ,SAAS,wBAAwB;AAAA,EACjD,EAAE,MAAM,aAAa,SAAS,uCAAuC;AAAA,EACrE,EAAE,MAAM,QAAQ,SAAS,kDAAkD;AAAA,EAC3E,EAAE,MAAM,aAAa,SAAS,uDAAuD;AAAA,EACrF,EAAE,MAAM,QAAQ,SAAS,iDAAiD;AAAA,EAC1E,EAAE,MAAM,aAAa,SAAS,uGAAuG;AACvI;AAEO,IAAM,yBAAyB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,KAAK,UAAU,mBAAmB,MAAM,CAAC;AAAA,EACzC;AACF,EAAE,KAAK,IAAI;AAEJ,IAAM,2BAA2B;AAAA,EACtC,EAAE,MAAM,QAAQ,SAAS,QAAQ;AAAA,EACjC,EAAE,MAAM,aAAa,SAAS,2DAA2D;AAC3F;AAEO,IAAM,qBAAqB;AAAA,EAChC,OAAO;AAAA,IACL,EAAE,MAAM,UAAU,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,EAAE,GAAG,UAAU,CAAC,QAAQ,GAAG,sBAAsB,MAAM;AAAA,IAChH,EAAE,MAAM,UAAU,YAAY,EAAE,OAAO,EAAE,MAAM,SAAS,EAAE,GAAG,UAAU,CAAC,OAAO,GAAG,sBAAsB,MAAM;AAAA,IAC9G,EAAE,MAAM,UAAU,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,EAAE,GAAG,UAAU,CAAC,QAAQ,GAAG,sBAAsB,MAAM;AAAA,IAChH,EAAE,MAAM,UAAU,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,GAAG,OAAO,CAAC,EAAE,GAAG,UAAU,CAAC,QAAQ,OAAO,GAAG,sBAAsB,MAAM;AAAA,EAClI;AACF;","names":[]}
@@ -1,11 +1,11 @@
1
+ import {
2
+ GestureBasePin
3
+ } from "./chunk-BYP3J5QN.js";
1
4
  import {
2
5
  GESTURE_BUILD,
3
6
  GESTURE_TOUCH_BUILD,
4
7
  GESTURE_WHEEL_BUILD
5
8
  } from "./chunk-CR4RWWTO.js";
6
- import {
7
- GestureBasePin
8
- } from "./chunk-BYP3J5QN.js";
9
9
  import {
10
10
  BasePlug
11
11
  } from "./chunk-3LA5VI6Y.js";
@@ -300,4 +300,4 @@ export {
300
300
  GestureWheelPin,
301
301
  GesturePlug
302
302
  };
303
- //# sourceMappingURL=chunk-SYWHGP36.js.map
303
+ //# sourceMappingURL=chunk-7DIMIOBU.js.map
@@ -15,7 +15,7 @@ import {
15
15
  connectOrientationManager,
16
16
  disconnectOrientationManager,
17
17
  handleDOMMutation
18
- } from "./chunk-LQWM2BZZ.js";
18
+ } from "./chunk-U6ASM7L3.js";
19
19
  import {
20
20
  globalState
21
21
  } from "./chunk-FD6VCHH5.js";
@@ -484,4 +484,4 @@ export {
484
484
  ModesMiniplayerPin,
485
485
  ModesPlug
486
486
  };
487
- //# sourceMappingURL=chunk-IHRSHSUW.js.map
487
+ //# sourceMappingURL=chunk-7FKNMM7R.js.map
@@ -1,69 +1,6 @@
1
- import {
2
- TouchBrightnessNotifier
3
- } from "./chunk-KOMKJXF7.js";
4
- import {
5
- TouchTimelineNotifier
6
- } from "./chunk-ROZ2DVZY.js";
7
- import {
8
- TouchVolumeNotifier
9
- } from "./chunk-TF65XWDF.js";
10
- import {
11
- VolumeNotifier
12
- } from "./chunk-GROXVN2G.js";
13
- import {
14
- ChapterNotifier
15
- } from "./chunk-4MVKBVC2.js";
16
- import {
17
- FastPlayNotifier
18
- } from "./chunk-JICGJ4UP.js";
19
- import {
20
- FwdBwdNotifier
21
- } from "./chunk-VWW4TJZE.js";
22
- import {
23
- ObjectFitNotifier
24
- } from "./chunk-KTJQE652.js";
25
- import {
26
- PlaybackRateNotifier
27
- } from "./chunk-3QS7GOPW.js";
28
- import {
29
- PlayPauseNotifier
30
- } from "./chunk-CXUKFTLF.js";
31
- import {
32
- PrevNextNotifier
33
- } from "./chunk-7NEQ5XAX.js";
34
- import {
35
- ScrubNotifier
36
- } from "./chunk-XUKTJ4IR.js";
37
- import {
38
- AirPlayNotifier
39
- } from "./chunk-TG4S5H3J.js";
40
- import {
41
- BrightnessNotifier
42
- } from "./chunk-7VZWEM2F.js";
43
- import {
44
- CancelScrubNotifier
45
- } from "./chunk-T3UYDQUT.js";
46
- import {
47
- CaptionsNotifier
48
- } from "./chunk-WM24WM6F.js";
49
- import {
50
- CaptureNotifier
51
- } from "./chunk-MHYORMT3.js";
52
- import {
53
- CastNotifier
54
- } from "./chunk-RAQIXNGY.js";
55
- import {
56
- BaseNotifier
57
- } from "./chunk-2ZOG42IH.js";
58
- import {
59
- volumeLow
60
- } from "./chunk-4G5GHO4D.js";
61
1
  import {
62
2
  volumeMuted
63
3
  } from "./chunk-M7TD4COA.js";
64
- import {
65
- subtitles
66
- } from "./chunk-D7JQDN74.js";
67
4
  import {
68
5
  timer
69
6
  } from "./chunk-R4HNE7TL.js";
@@ -86,8 +23,8 @@ import {
86
23
  volumeHigh
87
24
  } from "./chunk-HBLGQTSF.js";
88
25
  import {
89
- previous
90
- } from "./chunk-65HPQXXZ.js";
26
+ volumeLow
27
+ } from "./chunk-4G5GHO4D.js";
91
28
  import {
92
29
  quality
93
30
  } from "./chunk-JG7AOGDX.js";
@@ -110,8 +47,8 @@ import {
110
47
  sort
111
48
  } from "./chunk-QP2X53HC.js";
112
49
  import {
113
- objectFitContain
114
- } from "./chunk-KQU2L5UM.js";
50
+ subtitles
51
+ } from "./chunk-D7JQDN74.js";
115
52
  import {
116
53
  objectFitCover
117
54
  } from "./chunk-HC7SWNDS.js";
@@ -134,8 +71,8 @@ import {
134
71
  playlist
135
72
  } from "./chunk-KLAI7YSD.js";
136
73
  import {
137
- expandMiniplayer
138
- } from "./chunk-DN4TFOZV.js";
74
+ previous
75
+ } from "./chunk-65HPQXXZ.js";
139
76
  import {
140
77
  forward
141
78
  } from "./chunk-7FIV2WLG.js";
@@ -158,8 +95,8 @@ import {
158
95
  next
159
96
  } from "./chunk-MP2GRDUX.js";
160
97
  import {
161
- edit
162
- } from "./chunk-NLJQAJZB.js";
98
+ objectFitContain
99
+ } from "./chunk-KQU2L5UM.js";
163
100
  import {
164
101
  enterFullscreen
165
102
  } from "./chunk-27UEI7BB.js";
@@ -182,8 +119,8 @@ import {
182
119
  exitTheater
183
120
  } from "./chunk-LEKPWZQL.js";
184
121
  import {
185
- capture
186
- } from "./chunk-HA2GK6KH.js";
122
+ expandMiniplayer
123
+ } from "./chunk-DN4TFOZV.js";
187
124
  import {
188
125
  cast
189
126
  } from "./chunk-6S5BMP4A.js";
@@ -206,8 +143,8 @@ import {
206
143
  dragIndicator
207
144
  } from "./chunk-ZLZCQ3KJ.js";
208
145
  import {
209
- audioTrack
210
- } from "./chunk-AH2VE4UI.js";
146
+ edit
147
+ } from "./chunk-NLJQAJZB.js";
211
148
  import {
212
149
  autoplay
213
150
  } from "./chunk-WTHHXWQM.js";
@@ -229,6 +166,9 @@ import {
229
166
  import {
230
167
  captions
231
168
  } from "./chunk-CTSPKWKN.js";
169
+ import {
170
+ capture
171
+ } from "./chunk-HA2GK6KH.js";
232
172
  import {
233
173
  add
234
174
  } from "./chunk-ID72UAJE.js";
@@ -242,20 +182,74 @@ import {
242
182
  ambience
243
183
  } from "./chunk-XHXIXEGS.js";
244
184
  import {
245
- VolumeControl
246
- } from "./chunk-RX47TT5R.js";
185
+ audioTrack
186
+ } from "./chunk-AH2VE4UI.js";
187
+ import {
188
+ TouchTimelineNotifier
189
+ } from "./chunk-ROZ2DVZY.js";
190
+ import {
191
+ TouchVolumeNotifier
192
+ } from "./chunk-TF65XWDF.js";
193
+ import {
194
+ VolumeNotifier
195
+ } from "./chunk-GROXVN2G.js";
196
+ import {
197
+ FastPlayNotifier
198
+ } from "./chunk-JICGJ4UP.js";
199
+ import {
200
+ FwdBwdNotifier
201
+ } from "./chunk-VWW4TJZE.js";
202
+ import {
203
+ ObjectFitNotifier
204
+ } from "./chunk-KTJQE652.js";
205
+ import {
206
+ PlaybackRateNotifier
207
+ } from "./chunk-3QS7GOPW.js";
208
+ import {
209
+ PlayPauseNotifier
210
+ } from "./chunk-CXUKFTLF.js";
211
+ import {
212
+ PrevNextNotifier
213
+ } from "./chunk-7NEQ5XAX.js";
214
+ import {
215
+ ScrubNotifier
216
+ } from "./chunk-XUKTJ4IR.js";
217
+ import {
218
+ TouchBrightnessNotifier
219
+ } from "./chunk-KOMKJXF7.js";
220
+ import {
221
+ AirPlayNotifier
222
+ } from "./chunk-TG4S5H3J.js";
223
+ import {
224
+ BrightnessNotifier
225
+ } from "./chunk-7VZWEM2F.js";
226
+ import {
227
+ CancelScrubNotifier
228
+ } from "./chunk-T3UYDQUT.js";
229
+ import {
230
+ CaptionsNotifier
231
+ } from "./chunk-WM24WM6F.js";
232
+ import {
233
+ CaptureNotifier
234
+ } from "./chunk-MHYORMT3.js";
235
+ import {
236
+ CastNotifier
237
+ } from "./chunk-RAQIXNGY.js";
238
+ import {
239
+ ChapterNotifier
240
+ } from "./chunk-4MVKBVC2.js";
241
+ import {
242
+ BaseNotifier
243
+ } from "./chunk-2ZOG42IH.js";
247
244
  import {
248
245
  Timeline
249
- } from "./chunk-UXCCQXAV.js";
246
+ } from "./chunk-TLPMOBIP.js";
247
+ import {
248
+ VolumeControl
249
+ } from "./chunk-RX47TT5R.js";
250
250
  import {
251
251
  BrightnessControl
252
252
  } from "./chunk-EUEB3EB2.js";
253
- import {
254
- RangeInput
255
- } from "./chunk-AS4J74Q2.js";
256
- import {
257
- AirPlayPlaceholder
258
- } from "./chunk-27O3RAUU.js";
259
253
  import {
260
254
  CastPlaceholder
261
255
  } from "./chunk-62GSAKEC.js";
@@ -265,6 +259,12 @@ import {
265
259
  import {
266
260
  PiPPlaceholder
267
261
  } from "./chunk-XQ5WJQXC.js";
262
+ import {
263
+ RangeInput
264
+ } from "./chunk-AS4J74Q2.js";
265
+ import {
266
+ AirPlayPlaceholder
267
+ } from "./chunk-27O3RAUU.js";
268
268
  import {
269
269
  PlayPauseButton
270
270
  } from "./chunk-KQJ7OFOU.js";
@@ -494,4 +494,4 @@ __export(components_exports, {
494
494
  export {
495
495
  components_exports
496
496
  };
497
- //# sourceMappingURL=chunk-A65IVJRA.js.map
497
+ //# sourceMappingURL=chunk-DSITGBUZ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SettingsMenu
3
- } from "./chunk-FEQ3KO6E.js";
3
+ } from "./chunk-NFZTXMJM.js";
4
4
  import {
5
5
  SETTINGS_BUILD
6
6
  } from "./chunk-ZMPG7PMV.js";
@@ -156,4 +156,4 @@ __publicField(PanelPlug, "BUILD", SETTINGS_BUILD);
156
156
  export {
157
157
  PanelPlug
158
158
  };
159
- //# sourceMappingURL=chunk-AIQZLUR7.js.map
159
+ //# sourceMappingURL=chunk-ET3QJ7G2.js.map
@@ -1,18 +1,12 @@
1
+ import {
2
+ Timeline
3
+ } from "./chunk-TLPMOBIP.js";
1
4
  import {
2
5
  VolumeControl
3
6
  } from "./chunk-RX47TT5R.js";
4
- import {
5
- Timeline
6
- } from "./chunk-UXCCQXAV.js";
7
7
  import {
8
8
  BrightnessControl
9
9
  } from "./chunk-EUEB3EB2.js";
10
- import {
11
- RangeInput
12
- } from "./chunk-AS4J74Q2.js";
13
- import {
14
- AirPlayPlaceholder
15
- } from "./chunk-27O3RAUU.js";
16
10
  import {
17
11
  CastPlaceholder
18
12
  } from "./chunk-62GSAKEC.js";
@@ -22,6 +16,12 @@ import {
22
16
  import {
23
17
  PiPPlaceholder
24
18
  } from "./chunk-XQ5WJQXC.js";
19
+ import {
20
+ RangeInput
21
+ } from "./chunk-AS4J74Q2.js";
22
+ import {
23
+ AirPlayPlaceholder
24
+ } from "./chunk-27O3RAUU.js";
25
25
  import {
26
26
  PlayPauseButton
27
27
  } from "./chunk-KQJ7OFOU.js";
@@ -163,4 +163,4 @@ for (const Comp of [
163
163
  ErrorPlaceholder
164
164
  ])
165
165
  ComponentRegistry.register(Comp);
166
- //# sourceMappingURL=chunk-H2RY2JCK.js.map
166
+ //# sourceMappingURL=chunk-JAHHONGY.js.map
@@ -1,6 +1,3 @@
1
- import {
2
- TouchBrightnessNotifier
3
- } from "./chunk-KOMKJXF7.js";
4
1
  import {
5
2
  TouchTimelineNotifier
6
3
  } from "./chunk-ROZ2DVZY.js";
@@ -10,9 +7,6 @@ import {
10
7
  import {
11
8
  VolumeNotifier
12
9
  } from "./chunk-GROXVN2G.js";
13
- import {
14
- ChapterNotifier
15
- } from "./chunk-4MVKBVC2.js";
16
10
  import {
17
11
  FastPlayNotifier
18
12
  } from "./chunk-JICGJ4UP.js";
@@ -34,6 +28,9 @@ import {
34
28
  import {
35
29
  ScrubNotifier
36
30
  } from "./chunk-XUKTJ4IR.js";
31
+ import {
32
+ TouchBrightnessNotifier
33
+ } from "./chunk-KOMKJXF7.js";
37
34
  import {
38
35
  AirPlayNotifier
39
36
  } from "./chunk-TG4S5H3J.js";
@@ -52,6 +49,9 @@ import {
52
49
  import {
53
50
  CastNotifier
54
51
  } from "./chunk-RAQIXNGY.js";
52
+ import {
53
+ ChapterNotifier
54
+ } from "./chunk-4MVKBVC2.js";
55
55
  import {
56
56
  ComponentRegistry
57
57
  } from "./chunk-HU5B5DBA.js";
@@ -79,4 +79,4 @@ for (const Comp of [
79
79
  AirPlayNotifier
80
80
  ])
81
81
  ComponentRegistry.register(Comp);
82
- //# sourceMappingURL=chunk-3RN2FNCF.js.map
82
+ //# sourceMappingURL=chunk-JP5OIJZ3.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  HTML5Tech
3
- } from "./chunk-LQWM2BZZ.js";
4
- import {
5
- MSE_ENABLED
6
- } from "./chunk-RNETXJ63.js";
3
+ } from "./chunk-U6ASM7L3.js";
7
4
  import {
8
5
  DASH_EXTENSIONS
9
6
  } from "./chunk-2XJFCVED.js";
7
+ import {
8
+ MSE_ENABLED
9
+ } from "./chunk-RNETXJ63.js";
10
10
  import {
11
11
  loadResource
12
12
  } from "./chunk-2PRS6O7C.js";
@@ -163,4 +163,4 @@ __publicField(DashTech, "techName", "dash");
163
163
  export {
164
164
  DashTech
165
165
  };
166
- //# sourceMappingURL=chunk-CLXO4GWQ.js.map
166
+ //# sourceMappingURL=chunk-K5AK6EC6.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  init
3
- } from "./chunk-LQWM2BZZ.js";
3
+ } from "./chunk-U6ASM7L3.js";
4
4
  import {
5
5
  globalState
6
6
  } from "./chunk-FD6VCHH5.js";
@@ -27,4 +27,4 @@ if ("undefined" !== typeof window) {
27
27
  console.log("\x1B[38;2;139;69;19mTMG Media Player Unavailable\x1B[0m");
28
28
  console.error("TMG Media Player cannot run in a terminal!"), console.warn("Consider moving to a browser environment to use the TMG Media Player");
29
29
  }
30
- //# sourceMappingURL=chunk-VISJ3RIN.js.map
30
+ //# sourceMappingURL=chunk-NEM7C4ZO.js.map
@@ -92,11 +92,7 @@ var SettingsMenu = class extends BaseComponent {
92
92
  existing.items ?? (existing.items = []);
93
93
  for (const subItem of item.items) {
94
94
  const exSub = existing.items.find((i) => i.id === subItem.id);
95
- if (exSub) this.mergeItem(subItem);
96
- else {
97
- const pIdx = existing.items.findIndex((i) => i.id.toLowerCase().includes("persist"));
98
- pIdx !== -1 ? existing.items.splice(pIdx, 0, subItem) : existing.items.push(subItem);
99
- }
95
+ exSub ? this.mergeItem(subItem) : existing.items.push(subItem);
100
96
  }
101
97
  }
102
98
  if (item.actions) existing.actions = [...existing.actions || [], ...item.actions];
@@ -216,4 +212,4 @@ __publicField(SettingsMenu, "componentName", "SettingsMenu");
216
212
  export {
217
213
  SettingsMenu
218
214
  };
219
- //# sourceMappingURL=chunk-FEQ3KO6E.js.map
215
+ //# sourceMappingURL=chunk-NFZTXMJM.js.map