@corti/dictation-web 0.0.0-test.562 → 0.0.0-test.571.1

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 (129) hide show
  1. package/README.md +164 -112
  2. package/dist/bundle.js +1428 -546
  3. package/dist/components/audio-visualiser.d.ts +3 -2
  4. package/dist/components/audio-visualiser.js +15 -12
  5. package/dist/components/audio-visualiser.js.map +1 -1
  6. package/dist/components/corti-dictation.d.ts +26 -13
  7. package/dist/components/corti-dictation.js +70 -21
  8. package/dist/components/corti-dictation.js.map +1 -1
  9. package/dist/components/device-selector.d.ts +6 -16
  10. package/dist/components/device-selector.js +27 -58
  11. package/dist/components/device-selector.js.map +1 -1
  12. package/dist/components/keybinding-selector.d.ts +14 -0
  13. package/dist/components/keybinding-selector.js +81 -0
  14. package/dist/components/keybinding-selector.js.map +1 -0
  15. package/dist/components/language-selector.d.ts +8 -17
  16. package/dist/components/language-selector.js +26 -52
  17. package/dist/components/language-selector.js.map +1 -1
  18. package/dist/components/mode-selector.d.ts +14 -0
  19. package/dist/components/mode-selector.js +73 -0
  20. package/dist/components/mode-selector.js.map +1 -0
  21. package/dist/components/recording-button.d.ts +8 -14
  22. package/dist/components/recording-button.js +156 -96
  23. package/dist/components/recording-button.js.map +1 -1
  24. package/dist/components/settings-menu.d.ts +4 -2
  25. package/dist/components/settings-menu.js +34 -14
  26. package/dist/components/settings-menu.js.map +1 -1
  27. package/dist/constants.d.ts +5 -0
  28. package/dist/constants.js +5 -0
  29. package/dist/constants.js.map +1 -1
  30. package/dist/contexts/dictation-context.d.ts +24 -14
  31. package/dist/contexts/dictation-context.js +128 -46
  32. package/dist/contexts/dictation-context.js.map +1 -1
  33. package/dist/controllers/devices-controller.d.ts +26 -0
  34. package/dist/controllers/devices-controller.js +99 -0
  35. package/dist/controllers/devices-controller.js.map +1 -0
  36. package/dist/controllers/dictation-controller.d.ts +29 -0
  37. package/dist/controllers/dictation-controller.js +179 -0
  38. package/dist/controllers/dictation-controller.js.map +1 -0
  39. package/dist/controllers/keybinding-controller.d.ts +18 -0
  40. package/dist/controllers/keybinding-controller.js +83 -0
  41. package/dist/controllers/keybinding-controller.js.map +1 -0
  42. package/dist/controllers/languages-controller.d.ts +26 -0
  43. package/dist/controllers/languages-controller.js +83 -0
  44. package/dist/controllers/languages-controller.js.map +1 -0
  45. package/dist/controllers/media-controller.d.ts +24 -0
  46. package/dist/controllers/media-controller.js +115 -0
  47. package/dist/controllers/media-controller.js.map +1 -0
  48. package/dist/index.d.ts +9 -7
  49. package/dist/index.js +30 -20
  50. package/dist/index.js.map +1 -1
  51. package/dist/src/components/audio-visualiser.d.ts +1 -0
  52. package/dist/src/components/audio-visualiser.js +6 -3
  53. package/dist/src/components/audio-visualiser.js.map +1 -1
  54. package/dist/src/components/corti-dictation.d.ts +21 -6
  55. package/dist/src/components/corti-dictation.js +25 -2
  56. package/dist/src/components/corti-dictation.js.map +1 -1
  57. package/dist/src/components/recording-button.d.ts +4 -0
  58. package/dist/src/components/recording-button.js +34 -10
  59. package/dist/src/components/recording-button.js.map +1 -1
  60. package/dist/src/components/settings-menu.js +1 -1
  61. package/dist/src/components/settings-menu.js.map +1 -1
  62. package/dist/src/constants.js +24 -6
  63. package/dist/src/constants.js.map +1 -1
  64. package/dist/src/contexts/dictation-context.d.ts +19 -5
  65. package/dist/src/contexts/dictation-context.js +32 -12
  66. package/dist/src/contexts/dictation-context.js.map +1 -1
  67. package/dist/src/controllers/DictationController.d.ts +5 -0
  68. package/dist/src/controllers/DictationController.js +27 -8
  69. package/dist/src/controllers/DictationController.js.map +1 -1
  70. package/dist/src/controllers/MediaController.d.ts +6 -0
  71. package/dist/src/controllers/MediaController.js +17 -1
  72. package/dist/src/controllers/MediaController.js.map +1 -1
  73. package/dist/src/styles/ComponentStyles.js +5 -5
  74. package/dist/src/styles/ComponentStyles.js.map +1 -1
  75. package/dist/src/styles/audio-visualiser.js +1 -1
  76. package/dist/src/styles/audio-visualiser.js.map +1 -1
  77. package/dist/src/styles/buttons.js +12 -12
  78. package/dist/src/styles/buttons.js.map +1 -1
  79. package/dist/src/styles/callout.js +7 -7
  80. package/dist/src/styles/callout.js.map +1 -1
  81. package/dist/src/styles/select.js +8 -8
  82. package/dist/src/styles/select.js.map +1 -1
  83. package/dist/src/styles/settings-menu.js +4 -4
  84. package/dist/src/styles/settings-menu.js.map +1 -1
  85. package/dist/src/types.d.ts +5 -0
  86. package/dist/src/types.js.map +1 -1
  87. package/dist/src/utils/converters.js +4 -1
  88. package/dist/src/utils/converters.js.map +1 -1
  89. package/dist/src/utils/events.d.ts +11 -4
  90. package/dist/src/utils/events.js.map +1 -1
  91. package/dist/src/utils/languages.js +2 -1
  92. package/dist/src/utils/languages.js.map +1 -1
  93. package/dist/src/utils/media.d.ts +1 -1
  94. package/dist/src/utils/media.js +13 -1
  95. package/dist/src/utils/media.js.map +1 -1
  96. package/dist/src/utils/token.d.ts +1 -1
  97. package/dist/src/utils/token.js +12 -11
  98. package/dist/src/utils/token.js.map +1 -1
  99. package/dist/styles/buttons.js +1 -2
  100. package/dist/styles/buttons.js.map +1 -1
  101. package/dist/styles/component-styles.d.ts +3 -0
  102. package/dist/styles/component-styles.js +32 -0
  103. package/dist/styles/component-styles.js.map +1 -0
  104. package/dist/styles/keybinding-selector.d.ts +2 -0
  105. package/dist/styles/keybinding-selector.js +72 -0
  106. package/dist/styles/keybinding-selector.js.map +1 -0
  107. package/dist/styles/mode-selector.d.ts +2 -0
  108. package/dist/styles/mode-selector.js +56 -0
  109. package/dist/styles/mode-selector.js.map +1 -0
  110. package/dist/styles/select.d.ts +1 -1
  111. package/dist/styles/select.js +6 -10
  112. package/dist/styles/select.js.map +1 -1
  113. package/dist/styles/settings-menu.js +9 -1
  114. package/dist/styles/settings-menu.js.map +1 -1
  115. package/dist/tsconfig.stories.tsbuildinfo +1 -1
  116. package/dist/types.d.ts +3 -1
  117. package/dist/types.js.map +1 -1
  118. package/dist/utils/events.d.ts +16 -3
  119. package/dist/utils/events.js +22 -0
  120. package/dist/utils/events.js.map +1 -1
  121. package/dist/utils/keybinding.d.ts +36 -0
  122. package/dist/utils/keybinding.js +125 -0
  123. package/dist/utils/keybinding.js.map +1 -0
  124. package/dist/utils/languages.d.ts +4 -3
  125. package/dist/utils/languages.js.map +1 -1
  126. package/dist/utils/token.d.ts +1 -1
  127. package/dist/utils/token.js +12 -11
  128. package/dist/utils/token.js.map +1 -1
  129. package/package.json +9 -8
@@ -1 +1 @@
1
- {"version":3,"file":"buttons.js","sourceRoot":"","sources":["../../../src/styles/buttons.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,YAAY,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDvB,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["import { css } from 'lit';\n\nconst ButtonStyles = css`\n /* Default (plain) button styling */\n button {\n background: var(--action-plain-background);\n /* border: 1px solid var(--action-plain-border-color); */\n border: none;\n color: var(--component-text-color);\n cursor: pointer;\n padding: 8px;\n border-radius: var(--card-inner-border-radius);\n display: inline-flex;\n gap: 4px;\n align-items: center;\n justify-content: center;\n transition: background 0.3s ease;\n font-family: var(--component-font-family);\n }\n\n button:hover {\n background: var(--action-plain-background-hover);\n }\n\n button:focus-visible {\n outline: 2px solid var(--action-accent-background);\n outline-offset: 2px;\n }\n\n /* Accent variant */\n button.accent {\n background: var(--action-accent-background);\n color: var(--action-accent-text-color);\n border: none;\n }\n\n button.accent:hover {\n background: var(--action-accent-background-hover);\n }\n\n /* Red variant */\n button.red {\n background: var(--action-red-background);\n color: var(--action-red-text-color);\n border: none;\n }\n\n button.red:hover {\n background: var(--action-red-background-hover);\n }\n`;\n\nexport default ButtonStyles;\n"]}
1
+ {"version":3,"file":"buttons.js","sourceRoot":"","sources":["../../../src/styles/buttons.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,YAAY,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDvB,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["import { css } from 'lit';\n\nconst ButtonStyles = css`\n /* Default (plain) button styling */\n button {\n background: var(--action-plain-background, transparent);\n /* border: 1px solid var(--action-plain-border-color); */\n border: none;\n color: var(--component-text-color, light-dark(#333, #eee));\n cursor: pointer;\n padding: 8px;\n border-radius: var(--card-inner-border-radius, 6px);\n display: inline-flex;\n gap: 4px;\n align-items: center;\n justify-content: center;\n transition: background 0.3s ease;\n font-family: var(--component-font-family, -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, Cantarell, Ubuntu, roboto, noto, helvetica, arial, sans-serif);\n }\n\n button:hover {\n background: var(--action-plain-background-hover, light-dark(#ddd, #444));\n }\n\n button:focus-visible {\n outline: 2px solid var(--action-accent-background, light-dark(#007bff, #0056b3));\n outline-offset: 2px;\n }\n\n /* Accent variant */\n button.accent {\n background: var(--action-accent-background, light-dark(#007bff, #0056b3));\n color: var(--action-accent-text-color, #fff);\n border: none;\n }\n\n button.accent:hover {\n background: var(--action-accent-background-hover, light-dark(#0056b3, #003d80));\n }\n\n /* Red variant */\n button.red {\n background: var(--action-red-background, light-dark(#dc3545, #bd2130));\n color: var(--action-red-text-color, #fff);\n border: none;\n }\n\n button.red:hover {\n background: var(--action-red-background-hover, light-dark(#bd2130, #a71c24));\n }\n`;\n\nexport default ButtonStyles;\n"]}
@@ -1,11 +1,11 @@
1
1
  import { css } from 'lit';
2
2
  const CalloutStyles = css `
3
3
  .callout {
4
- background: var(--callout-info-background);
5
- border: 1px solid var(--callout-info-border);
6
- color: var(--callout-info-text);
4
+ background: var(--callout-info-background, light-dark(#007bff33, #0056b333));
5
+ border: 1px solid var(--callout-info-border, light-dark(#007bff99, #0056b399));
6
+ color: var(--callout-info-text, light-dark(#007bff, #0056b3));
7
7
  padding: 8px;
8
- border-radius: var(--card-inner-border-radius);
8
+ border-radius: var(--card-inner-border-radius, 6px);
9
9
  display: flex;
10
10
  font-size: 0.9rem;
11
11
  gap: 8px;
@@ -13,9 +13,9 @@ const CalloutStyles = css `
13
13
  max-width: 100%;
14
14
  height: fit-content;
15
15
  &.warn {
16
- background: var(--callout-warn-background);
17
- border: 1px solid var(--callout-warn-border);
18
- color: var(--callout-warn-text);
16
+ background: var(--callout-warn-background, light-dark(#fd7e1433, #e06c1233));
17
+ border: 1px solid var(--callout-warn-border, light-dark(#fd7e1499, #e06c1299));
18
+ color: var(--callout-warn-text, light-dark(#fd7e14, #e06c12));
19
19
  }
20
20
  }
21
21
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"callout.js","sourceRoot":"","sources":["../../../src/styles/callout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,aAAa,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;CAmBxB,CAAC;AAEF,eAAe,aAAa,CAAC","sourcesContent":["import { css } from 'lit';\n\nconst CalloutStyles = css`\n .callout {\n background: var(--callout-info-background);\n border: 1px solid var(--callout-info-border);\n color: var(--callout-info-text);\n padding: 8px;\n border-radius: var(--card-inner-border-radius);\n display: flex;\n font-size: 0.9rem;\n gap: 8px;\n align-items: center;\n max-width: 100%;\n height: fit-content;\n &.warn {\n background: var(--callout-warn-background);\n border: 1px solid var(--callout-warn-border);\n color: var(--callout-warn-text);\n }\n }\n`;\n\nexport default CalloutStyles;\n"]}
1
+ {"version":3,"file":"callout.js","sourceRoot":"","sources":["../../../src/styles/callout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,aAAa,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;CAmBxB,CAAC;AAEF,eAAe,aAAa,CAAC","sourcesContent":["import { css } from 'lit';\n\nconst CalloutStyles = css`\n .callout {\n background: var(--callout-info-background, light-dark(#007bff33, #0056b333));\n border: 1px solid var(--callout-info-border, light-dark(#007bff99, #0056b399));\n color: var(--callout-info-text, light-dark(#007bff, #0056b3));\n padding: 8px;\n border-radius: var(--card-inner-border-radius, 6px);\n display: flex;\n font-size: 0.9rem;\n gap: 8px;\n align-items: center;\n max-width: 100%;\n height: fit-content;\n &.warn {\n background: var(--callout-warn-background, light-dark(#fd7e1433, #e06c1233));\n border: 1px solid var(--callout-warn-border, light-dark(#fd7e1499, #e06c1299));\n color: var(--callout-warn-text, light-dark(#fd7e14, #e06c12));\n }\n }\n`;\n\nexport default CalloutStyles;\n"]}
@@ -5,15 +5,15 @@ const SelectStyles = css `
5
5
  font-size: 0.8rem;
6
6
  padding-bottom: 0.5rem;
7
7
  font-weight: 500;
8
- color: var(--component-text-color);
8
+ color: var(--component-text-color, light-dark(#333, #eee));
9
9
  pointer-events: none;
10
10
  }
11
11
  select {
12
- background: var(--card-background);
13
- color: var(--component-text-color);
14
- border: 1px solid var(--card-border-color);
15
- padding: var(--card-padding);
16
- border-radius: var(--card-inner-border-radius);
12
+ background: var(--card-background, light-dark(#fff, #333));
13
+ color: var(--component-text-color, light-dark(#333, #eee));
14
+ border: 1px solid var(--card-border-color, light-dark(#ddd, #555));
15
+ padding: var(--card-padding, 4px);
16
+ border-radius: var(--card-inner-border-radius, 6px);
17
17
  outline: none;
18
18
  width: 100%;
19
19
  }
@@ -24,11 +24,11 @@ const SelectStyles = css `
24
24
  }
25
25
 
26
26
  select:hover {
27
- background: var(--action-plain-background-hover);
27
+ background: var(--action-plain-background-hover, light-dark(#ddd, #444));
28
28
  }
29
29
 
30
30
  select:focus-visible {
31
- outline: 2px solid var(--action-accent-background);
31
+ outline: 2px solid var(--action-accent-background, light-dark(#007bff, #0056b3));
32
32
  /* outline-offset: 2px; */
33
33
  }
34
34
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"select.js","sourceRoot":"","sources":["../../../src/styles/select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,YAAY,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCvB,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["import { css } from \"lit\";\n\nconst SelectStyles = css`\n label {\n display: block;\n font-size: 0.8rem;\n padding-bottom: 0.5rem;\n font-weight: 500;\n color: var(--component-text-color);\n pointer-events: none;\n }\n select {\n background: var(--card-background);\n color: var(--component-text-color);\n border: 1px solid var(--card-border-color);\n padding: var(--card-padding);\n border-radius: var(--card-inner-border-radius);\n outline: none;\n width: 100%;\n }\n\n select:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n select:hover {\n background: var(--action-plain-background-hover);\n }\n\n select:focus-visible {\n outline: 2px solid var(--action-accent-background);\n /* outline-offset: 2px; */\n }\n`;\n\nexport default SelectStyles;\n"]}
1
+ {"version":3,"file":"select.js","sourceRoot":"","sources":["../../../src/styles/select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,YAAY,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCvB,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["import { css } from \"lit\";\n\nconst SelectStyles = css`\n label {\n display: block;\n font-size: 0.8rem;\n padding-bottom: 0.5rem;\n font-weight: 500;\n color: var(--component-text-color, light-dark(#333, #eee));\n pointer-events: none;\n }\n select {\n background: var(--card-background, light-dark(#fff, #333));\n color: var(--component-text-color, light-dark(#333, #eee));\n border: 1px solid var(--card-border-color, light-dark(#ddd, #555));\n padding: var(--card-padding, 4px);\n border-radius: var(--card-inner-border-radius, 6px);\n outline: none;\n width: 100%;\n }\n\n select:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n select:hover {\n background: var(--action-plain-background-hover, light-dark(#ddd, #444));\n }\n\n select:focus-visible {\n outline: 2px solid var(--action-accent-background, light-dark(#007bff, #0056b3));\n /* outline-offset: 2px; */\n }\n`;\n\nexport default SelectStyles;\n"]}
@@ -10,10 +10,10 @@ const SettingsMenuStyles = css `
10
10
  [popover] {
11
11
  margin: 0;
12
12
  padding: 16px;
13
- background: var(--card-background);
14
- border: 1px solid var(--card-border-color);
15
- border-radius: var(--card-border-radius);
16
- box-shadow: var(--card-box-shadow);
13
+ background: var(--card-background, light-dark(#fff, #333));
14
+ border: 1px solid var(--card-border-color, light-dark(#ddd, #555));
15
+ border-radius: var(--card-border-radius, 8px);
16
+ box-shadow: var(--card-box-shadow, 0 2px 5px rgba(0, 0, 0, 0.1));
17
17
  z-index: 1000;
18
18
  max-width: 260px;
19
19
  width: 100%;
@@ -1 +1 @@
1
- {"version":3,"file":"settings-menu.js","sourceRoot":"","sources":["../../../src/styles/settings-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,kBAAkB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8B7B,CAAC;AAEF,eAAe,kBAAkB,CAAC","sourcesContent":["import { css } from \"lit\";\n\nconst SettingsMenuStyles = css`\n :host {\n display: block;\n }\n /* Retain the anchor-name styling for this component */\n #settings-popover-button {\n anchor-name: --settings_popover_btn;\n }\n [popover] {\n margin: 0;\n padding: 16px;\n background: var(--card-background);\n border: 1px solid var(--card-border-color);\n border-radius: var(--card-border-radius);\n box-shadow: var(--card-box-shadow);\n z-index: 1000;\n max-width: 260px;\n width: 100%;\n min-width: 200px;\n position-anchor: --settings_popover_btn;\n position-area: bottom span-right;\n position-visibility: always;\n position-try-fallbacks: flip-inline;\n overflow-x: hidden;\n }\n .settings-wrapper {\n display: flex;\n flex-direction: column;\n gap: 20px;\n }\n`;\n\nexport default SettingsMenuStyles;\n"]}
1
+ {"version":3,"file":"settings-menu.js","sourceRoot":"","sources":["../../../src/styles/settings-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,kBAAkB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8B7B,CAAC;AAEF,eAAe,kBAAkB,CAAC","sourcesContent":["import { css } from \"lit\";\n\nconst SettingsMenuStyles = css`\n :host {\n display: block;\n }\n /* Retain the anchor-name styling for this component */\n #settings-popover-button {\n anchor-name: --settings_popover_btn;\n }\n [popover] {\n margin: 0;\n padding: 16px;\n background: var(--card-background, light-dark(#fff, #333));\n border: 1px solid var(--card-border-color, light-dark(#ddd, #555));\n border-radius: var(--card-border-radius, 8px);\n box-shadow: var(--card-box-shadow, 0 2px 5px rgba(0, 0, 0, 0.1));\n z-index: 1000;\n max-width: 260px;\n width: 100%;\n min-width: 200px;\n position-anchor: --settings_popover_btn;\n position-area: bottom span-right;\n position-visibility: always;\n position-try-fallbacks: flip-inline;\n overflow-x: hidden;\n }\n .settings-wrapper {\n display: flex;\n flex-direction: column;\n gap: 20px;\n }\n`;\n\nexport default SettingsMenuStyles;\n"]}
@@ -1,2 +1,7 @@
1
1
  export type RecordingState = "initializing" | "recording" | "stopping" | "stopped";
2
2
  export type ConfigurableSettings = "device" | "language";
3
+ export type ProxyOptions = {
4
+ url: string;
5
+ protocols?: string[];
6
+ queryParameters?: Record<string, string>;
7
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"","sourcesContent":["export type RecordingState =\n | \"initializing\"\n | \"recording\"\n | \"stopping\"\n | \"stopped\";\n\nexport type ConfigurableSettings = \"device\" | \"language\";\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"","sourcesContent":["export type RecordingState =\n | \"initializing\"\n | \"recording\"\n | \"stopping\"\n | \"stopped\";\n\nexport type ConfigurableSettings = \"device\" | \"language\";\n\nexport type ProxyOptions = {\n url: string;\n protocols?: string[];\n queryParameters?: Record<string, string>;\n};\n"]}
@@ -1,5 +1,8 @@
1
1
  export const commaSeparatedConverter = {
2
- fromAttribute: (value) => value?.split(",").map((s) => s.trim()),
2
+ fromAttribute: (value) => value
3
+ ?.split(",")
4
+ .map((s) => s.trim())
5
+ .filter(Boolean),
3
6
  toAttribute: (value) => value?.join(","),
4
7
  };
5
8
  //# sourceMappingURL=converters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"converters.js","sourceRoot":"","sources":["../../../src/utils/converters.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,aAAa,EAAE,CAAC,KAAoB,EAAE,EAAE,CACtC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,WAAW,EAAE,CAAC,KAA2B,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;CAC/D,CAAC","sourcesContent":["export const commaSeparatedConverter = {\n fromAttribute: (value: string | null) =>\n value?.split(\",\").map((s) => s.trim()),\n toAttribute: (value: string[] | undefined) => value?.join(\",\"),\n};\n"]}
1
+ {"version":3,"file":"converters.js","sourceRoot":"","sources":["../../../src/utils/converters.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,aAAa,EAAE,CAAC,KAAoB,EAAE,EAAE,CACtC,KAAK;QACH,EAAE,KAAK,CAAC,GAAG,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,OAAO,CAAC;IACpB,WAAW,EAAE,CAAC,KAA2B,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;CAC/D,CAAC","sourcesContent":["export const commaSeparatedConverter = {\n fromAttribute: (value: string | null) =>\n value\n ?.split(\",\")\n .map((s) => s.trim())\n .filter(Boolean),\n toAttribute: (value: string[] | undefined) => value?.join(\",\"),\n};\n"]}
@@ -1,3 +1,4 @@
1
+ import type { Corti } from "@corti/sdk";
1
2
  import type { RecordingState } from "../types.js";
2
3
  export type LanguagesChangedEventDetail = {
3
4
  languages: string[];
@@ -16,6 +17,12 @@ export type RecordingStateChangedEventDetail = {
16
17
  export type AudioLevelChangedEventDetail = {
17
18
  audioLevel: number;
18
19
  };
20
+ export type TranscriptEventDetail = Corti.TranscribeTranscriptMessage;
21
+ export type CommandEventDetail = Corti.TranscribeCommandMessage;
22
+ export type UsageEventDetail = Corti.TranscribeUsageMessage;
23
+ export type ErrorEventDetail = {
24
+ message: string;
25
+ };
19
26
  export declare function languagesChangedEvent(languages: string[], selectedLanguage: string | undefined): CustomEvent<LanguagesChangedEventDetail>;
20
27
  /**
21
28
  * @deprecated Use languagesChangedEvent instead. This event is kept for backward compatibility.
@@ -23,10 +30,10 @@ export declare function languagesChangedEvent(languages: string[], selectedLangu
23
30
  export declare function languageChangedEvent(language: string): CustomEvent<LanguageChangedEventDetail>;
24
31
  export declare function recordingDevicesChangedEvent(devices: MediaDeviceInfo[], selectedDevice: MediaDeviceInfo | undefined): CustomEvent<RecordingDevicesChangedEventDetail>;
25
32
  export declare function recordingStateChangedEvent(state: RecordingState): CustomEvent<RecordingStateChangedEventDetail>;
26
- export declare function transcriptEvent(detail: unknown): CustomEvent;
27
- export declare function commandEvent(detail: unknown): CustomEvent;
28
- export declare function usageEvent(detail: unknown): CustomEvent;
29
- export declare function errorEvent(error: unknown): CustomEvent;
33
+ export declare function transcriptEvent(detail: TranscriptEventDetail): CustomEvent<TranscriptEventDetail>;
34
+ export declare function commandEvent(detail: CommandEventDetail): CustomEvent<CommandEventDetail>;
35
+ export declare function usageEvent(detail: UsageEventDetail): CustomEvent<UsageEventDetail>;
36
+ export declare function errorEvent(error: unknown): CustomEvent<ErrorEventDetail>;
30
37
  export declare function streamClosedEvent(detail: unknown): CustomEvent;
31
38
  export declare function readyEvent(): CustomEvent;
32
39
  export declare function audioLevelChangedEvent(audioLevel: number): CustomEvent<AudioLevelChangedEventDetail>;
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/utils/events.ts"],"names":[],"mappings":"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","sourcesContent":["import type { RecordingState } from \"../types.js\";\n\nexport type LanguagesChangedEventDetail = {\n languages: string[];\n selectedLanguage: string | undefined;\n};\n\nexport type LanguageChangedEventDetail = {\n language: string;\n};\n\nexport type RecordingDevicesChangedEventDetail = {\n devices: MediaDeviceInfo[];\n selectedDevice: MediaDeviceInfo | undefined;\n};\n\nexport type RecordingStateChangedEventDetail = {\n state: RecordingState;\n};\n\nexport type AudioLevelChangedEventDetail = {\n audioLevel: number;\n};\n\nexport function languagesChangedEvent(\n languages: string[],\n selectedLanguage: string | undefined,\n): CustomEvent<LanguagesChangedEventDetail> {\n return new CustomEvent(\"languages-changed\", {\n bubbles: true,\n composed: true,\n detail: { languages, selectedLanguage },\n });\n}\n\n/**\n * @deprecated Use languagesChangedEvent instead. This event is kept for backward compatibility.\n */\nexport function languageChangedEvent(\n language: string,\n): CustomEvent<LanguageChangedEventDetail> {\n return new CustomEvent(\"language-changed\", {\n bubbles: true,\n composed: true,\n detail: { language },\n });\n}\n\nexport function recordingDevicesChangedEvent(\n devices: MediaDeviceInfo[],\n selectedDevice: MediaDeviceInfo | undefined,\n): CustomEvent<RecordingDevicesChangedEventDetail> {\n return new CustomEvent(\"recording-devices-changed\", {\n bubbles: true,\n composed: true,\n detail: { devices, selectedDevice },\n });\n}\n\nexport function recordingStateChangedEvent(\n state: RecordingState,\n): CustomEvent<RecordingStateChangedEventDetail> {\n return new CustomEvent(\"recording-state-changed\", {\n bubbles: true,\n composed: true,\n detail: { state },\n });\n}\n\nexport function transcriptEvent(detail: unknown): CustomEvent {\n return new CustomEvent(\"transcript\", {\n bubbles: true,\n composed: true,\n detail,\n });\n}\n\nexport function commandEvent(detail: unknown): CustomEvent {\n return new CustomEvent(\"command\", {\n bubbles: true,\n composed: true,\n detail,\n });\n}\n\nexport function usageEvent(detail: unknown): CustomEvent {\n return new CustomEvent(\"usage\", {\n bubbles: true,\n composed: true,\n detail,\n });\n}\n\nexport function errorEvent(error: unknown): CustomEvent {\n const message =\n error instanceof Error && error.message ? error.message : String(error);\n\n return new CustomEvent(\"error\", {\n bubbles: false,\n composed: true,\n detail: { message },\n });\n}\n\nexport function streamClosedEvent(detail: unknown): CustomEvent {\n return new CustomEvent(\"stream-closed\", {\n bubbles: true,\n composed: true,\n detail,\n });\n}\n\nexport function readyEvent(): CustomEvent {\n return new CustomEvent(\"ready\", {\n bubbles: true,\n composed: true,\n });\n}\n\nexport function audioLevelChangedEvent(\n audioLevel: number,\n): CustomEvent<AudioLevelChangedEventDetail> {\n return new CustomEvent(\"audio-level-changed\", {\n bubbles: true,\n composed: true,\n detail: { audioLevel },\n });\n}\n\nexport type NetworkActivityEventDetail = {\n direction: \"sent\" | \"received\";\n data: unknown;\n};\n\nexport function networkActivityEvent(\n direction: \"sent\" | \"received\",\n data: unknown,\n): CustomEvent<NetworkActivityEventDetail> {\n return new CustomEvent(\"network-activity\", {\n bubbles: true,\n composed: true,\n detail: { data, direction },\n });\n}\n"]}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/utils/events.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Corti } from \"@corti/sdk\";\nimport type { RecordingState } from \"../types.js\";\n\nexport type LanguagesChangedEventDetail = {\n languages: string[];\n selectedLanguage: string | undefined;\n};\n\nexport type LanguageChangedEventDetail = {\n language: string;\n};\n\nexport type RecordingDevicesChangedEventDetail = {\n devices: MediaDeviceInfo[];\n selectedDevice: MediaDeviceInfo | undefined;\n};\n\nexport type RecordingStateChangedEventDetail = {\n state: RecordingState;\n};\n\nexport type AudioLevelChangedEventDetail = {\n audioLevel: number;\n};\n\nexport type TranscriptEventDetail = Corti.TranscribeTranscriptMessage;\nexport type CommandEventDetail = Corti.TranscribeCommandMessage;\nexport type UsageEventDetail = Corti.TranscribeUsageMessage;\n\nexport type ErrorEventDetail = {\n message: string;\n};\n\nexport function languagesChangedEvent(\n languages: string[],\n selectedLanguage: string | undefined,\n): CustomEvent<LanguagesChangedEventDetail> {\n return new CustomEvent(\"languages-changed\", {\n bubbles: true,\n composed: true,\n detail: { languages, selectedLanguage },\n });\n}\n\n/**\n * @deprecated Use languagesChangedEvent instead. This event is kept for backward compatibility.\n */\nexport function languageChangedEvent(\n language: string,\n): CustomEvent<LanguageChangedEventDetail> {\n return new CustomEvent(\"language-changed\", {\n bubbles: true,\n composed: true,\n detail: { language },\n });\n}\n\nexport function recordingDevicesChangedEvent(\n devices: MediaDeviceInfo[],\n selectedDevice: MediaDeviceInfo | undefined,\n): CustomEvent<RecordingDevicesChangedEventDetail> {\n return new CustomEvent(\"recording-devices-changed\", {\n bubbles: true,\n composed: true,\n detail: { devices, selectedDevice },\n });\n}\n\nexport function recordingStateChangedEvent(\n state: RecordingState,\n): CustomEvent<RecordingStateChangedEventDetail> {\n return new CustomEvent(\"recording-state-changed\", {\n bubbles: true,\n composed: true,\n detail: { state },\n });\n}\n\nexport function transcriptEvent(\n detail: TranscriptEventDetail,\n): CustomEvent<TranscriptEventDetail> {\n return new CustomEvent(\"transcript\", {\n bubbles: true,\n composed: true,\n detail,\n });\n}\n\nexport function commandEvent(\n detail: CommandEventDetail,\n): CustomEvent<CommandEventDetail> {\n return new CustomEvent(\"command\", {\n bubbles: true,\n composed: true,\n detail,\n });\n}\n\nexport function usageEvent(\n detail: UsageEventDetail,\n): CustomEvent<UsageEventDetail> {\n return new CustomEvent(\"usage\", {\n bubbles: true,\n composed: true,\n detail,\n });\n}\n\nexport function errorEvent(error: unknown): CustomEvent<ErrorEventDetail> {\n const message =\n error instanceof Error && error.message ? error.message : String(error);\n\n return new CustomEvent(\"error\", {\n bubbles: false,\n composed: true,\n detail: { message },\n });\n}\n\nexport function streamClosedEvent(detail: unknown): CustomEvent {\n return new CustomEvent(\"stream-closed\", {\n bubbles: true,\n composed: true,\n detail,\n });\n}\n\nexport function readyEvent(): CustomEvent {\n return new CustomEvent(\"ready\", {\n bubbles: true,\n composed: true,\n });\n}\n\nexport function audioLevelChangedEvent(\n audioLevel: number,\n): CustomEvent<AudioLevelChangedEventDetail> {\n return new CustomEvent(\"audio-level-changed\", {\n bubbles: true,\n composed: true,\n detail: { audioLevel },\n });\n}\n\nexport type NetworkActivityEventDetail = {\n direction: \"sent\" | \"received\";\n data: unknown;\n};\n\nexport function networkActivityEvent(\n direction: \"sent\" | \"received\",\n data: unknown,\n): CustomEvent<NetworkActivityEventDetail> {\n return new CustomEvent(\"network-activity\", {\n bubbles: true,\n composed: true,\n detail: { data, direction },\n });\n}\n"]}
@@ -21,7 +21,8 @@ export function checkIfDefaultLanguagesList(languages = []) {
21
21
  return Object.values(DEFAULT_LANGUAGES_BY_REGION).some((languageList) => languageList === languages);
22
22
  }
23
23
  export function getLanguagesByRegion(region) {
24
- const languages = DEFAULT_LANGUAGES_BY_REGION[region || "default"];
24
+ const languages = DEFAULT_LANGUAGES_BY_REGION[region || "default"] ||
25
+ DEFAULT_LANGUAGES_BY_REGION["default"];
25
26
  const defaultLanguage = languages?.[0];
26
27
  return { defaultLanguage, languages };
27
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"languages.js","sourceRoot":"","sources":["../../../src/utils/languages.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,CAAC,MAAM,2BAA2B,GAA6B;IACnE,OAAO,EAAE,sBAAsB;IAC/B,EAAE,EAAE,sBAAsB;IAC1B,EAAE,EAAE,sBAAsB;CAC3B,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,YAAoB;IAClD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC;QAC9C,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,EAAE;YACvD,IAAI,EAAE,UAAU;SACjB,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;QAEnD,OAAO,YAAY,IAAI,YAAY,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,YAAY,CAAC;IACtB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,YAAsB,EAAE;IAClE,OAAO,MAAM,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,IAAI,CACpD,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,KAAK,SAAS,CAC7C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAe;IAIlD,MAAM,SAAS,GAAG,2BAA2B,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC;IACnE,MAAM,eAAe,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;IAEvC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;AACxC,CAAC","sourcesContent":["import {\n LANGUAGES_SUPPORTED_EU,\n LANGUAGES_SUPPORTED_US,\n} from \"../constants.js\";\n\nexport const DEFAULT_LANGUAGES_BY_REGION: Record<string, string[]> = {\n default: LANGUAGES_SUPPORTED_EU,\n eu: LANGUAGES_SUPPORTED_EU,\n us: LANGUAGES_SUPPORTED_US,\n};\n\nexport function getLanguageName(languageCode: string): string {\n try {\n const userLocale = navigator.language || \"en\";\n const displayNames = new Intl.DisplayNames([userLocale], {\n type: \"language\",\n });\n const languageName = displayNames.of(languageCode);\n\n return languageName || languageCode;\n } catch {\n return languageCode;\n }\n}\n\nexport function checkIfDefaultLanguagesList(languages: string[] = []): boolean {\n return Object.values(DEFAULT_LANGUAGES_BY_REGION).some(\n (languageList) => languageList === languages,\n );\n}\n\nexport function getLanguagesByRegion(region?: string): {\n languages: string[];\n defaultLanguage: string | undefined;\n} {\n const languages = DEFAULT_LANGUAGES_BY_REGION[region || \"default\"];\n const defaultLanguage = languages?.[0];\n\n return { defaultLanguage, languages };\n}\n"]}
1
+ {"version":3,"file":"languages.js","sourceRoot":"","sources":["../../../src/utils/languages.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,CAAC,MAAM,2BAA2B,GAA6B;IACnE,OAAO,EAAE,sBAAsB;IAC/B,EAAE,EAAE,sBAAsB;IAC1B,EAAE,EAAE,sBAAsB;CAC3B,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,YAAoB;IAClD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC;QAC9C,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,EAAE;YACvD,IAAI,EAAE,UAAU;SACjB,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;QAEnD,OAAO,YAAY,IAAI,YAAY,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,YAAY,CAAC;IACtB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,YAAsB,EAAE;IAClE,OAAO,MAAM,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,IAAI,CACpD,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,KAAK,SAAS,CAC7C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAe;IAIlD,MAAM,SAAS,GACb,2BAA2B,CAAC,MAAM,IAAI,SAAS,CAAC;QAChD,2BAA2B,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,eAAe,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;IAEvC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;AACxC,CAAC","sourcesContent":["import {\n LANGUAGES_SUPPORTED_EU,\n LANGUAGES_SUPPORTED_US,\n} from \"../constants.js\";\n\nexport const DEFAULT_LANGUAGES_BY_REGION: Record<string, string[]> = {\n default: LANGUAGES_SUPPORTED_EU,\n eu: LANGUAGES_SUPPORTED_EU,\n us: LANGUAGES_SUPPORTED_US,\n};\n\nexport function getLanguageName(languageCode: string): string {\n try {\n const userLocale = navigator.language || \"en\";\n const displayNames = new Intl.DisplayNames([userLocale], {\n type: \"language\",\n });\n const languageName = displayNames.of(languageCode);\n\n return languageName || languageCode;\n } catch {\n return languageCode;\n }\n}\n\nexport function checkIfDefaultLanguagesList(languages: string[] = []): boolean {\n return Object.values(DEFAULT_LANGUAGES_BY_REGION).some(\n (languageList) => languageList === languages,\n );\n}\n\nexport function getLanguagesByRegion(region?: string): {\n languages: string[];\n defaultLanguage: string | undefined;\n} {\n const languages =\n DEFAULT_LANGUAGES_BY_REGION[region || \"default\"] ||\n DEFAULT_LANGUAGES_BY_REGION[\"default\"];\n const defaultLanguage = languages?.[0];\n\n return { defaultLanguage, languages };\n}\n"]}
@@ -1,4 +1,4 @@
1
- export declare function getMediaStream(deviceId?: string): Promise<MediaStream>;
1
+ export declare function getMediaStream(deviceId?: string, debug_displayAudio?: boolean): Promise<MediaStream>;
2
2
  export declare function createAudioAnalyzer(mediaStream: MediaStream): {
3
3
  audioContext: AudioContext;
4
4
  analyser: AnalyserNode;
@@ -1,4 +1,16 @@
1
- export async function getMediaStream(deviceId) {
1
+ export async function getMediaStream(deviceId, debug_displayAudio) {
2
+ if (debug_displayAudio) {
3
+ const stream = await navigator.mediaDevices.getDisplayMedia({
4
+ audio: true,
5
+ video: true,
6
+ });
7
+ stream.getTracks().forEach((track) => {
8
+ if (track.kind === "video") {
9
+ stream.removeTrack(track);
10
+ }
11
+ });
12
+ return stream;
13
+ }
2
14
  if (!deviceId) {
3
15
  throw new Error("No device ID provided");
4
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"media.js","sourceRoot":"","sources":["../../../src/utils/media.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAiB;IACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,WAAW,GACf,QAAQ,KAAK,SAAS;QACpB,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC9C,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAEtB,OAAO,MAAM,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,WAAwB;IAI1D,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,YAAY,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,YAAY,CAAC,cAAc,EAAE,CAAC;IAE/C,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;IAExB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEzB,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAsB;IACxD,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACnD,QAAQ,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAE1C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAC7D,MAAM,UAAU,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACvC,OAAO,GAAG,GAAG,UAAU,GAAG,UAAU,CAAC;IACvC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEN,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;AAClD,CAAC","sourcesContent":["export async function getMediaStream(deviceId?: string): Promise<MediaStream> {\n if (!deviceId) {\n throw new Error(\"No device ID provided\");\n }\n\n const constraints: MediaStreamConstraints =\n deviceId !== \"default\"\n ? { audio: { deviceId: { exact: deviceId } } }\n : { audio: true };\n\n return await navigator.mediaDevices.getUserMedia(constraints);\n}\n\nexport function createAudioAnalyzer(mediaStream: MediaStream): {\n audioContext: AudioContext;\n analyser: AnalyserNode;\n} {\n const audioContext = new AudioContext();\n const source = audioContext.createMediaStreamSource(mediaStream);\n const analyser = audioContext.createAnalyser();\n\n analyser.fftSize = 8192;\n\n source.connect(analyser);\n\n return { analyser, audioContext };\n}\n\nexport function calculateAudioLevel(analyser: AnalyserNode): number {\n const dataArray = new Uint8Array(analyser.fftSize);\n analyser.getByteTimeDomainData(dataArray);\n\n const sumSquares = Array.from(dataArray).reduce((sum, value) => {\n const normalized = (value - 128) / 128;\n return sum + normalized * normalized;\n }, 0);\n\n return Math.sqrt(sumSquares / dataArray.length);\n}\n"]}
1
+ {"version":3,"file":"media.js","sourceRoot":"","sources":["../../../src/utils/media.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAiB,EACjB,kBAA4B;IAE5B,IAAI,kBAAkB,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,eAAe,CAAC;YAC1D,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;QAEH,MAAM,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACnC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC3B,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,WAAW,GACf,QAAQ,KAAK,SAAS;QACpB,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC9C,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAEtB,OAAO,MAAM,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,WAAwB;IAI1D,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,YAAY,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,YAAY,CAAC,cAAc,EAAE,CAAC;IAE/C,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;IAExB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEzB,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAsB;IACxD,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACnD,QAAQ,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAE1C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAC7D,MAAM,UAAU,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACvC,OAAO,GAAG,GAAG,UAAU,GAAG,UAAU,CAAC;IACvC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEN,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;AAClD,CAAC","sourcesContent":["export async function getMediaStream(\n deviceId?: string,\n debug_displayAudio?: boolean,\n): Promise<MediaStream> {\n if (debug_displayAudio) {\n const stream = await navigator.mediaDevices.getDisplayMedia({\n audio: true,\n video: true,\n });\n\n stream.getTracks().forEach((track) => {\n if (track.kind === \"video\") {\n stream.removeTrack(track);\n }\n });\n\n return stream;\n }\n\n if (!deviceId) {\n throw new Error(\"No device ID provided\");\n }\n\n const constraints: MediaStreamConstraints =\n deviceId !== \"default\"\n ? { audio: { deviceId: { exact: deviceId } } }\n : { audio: true };\n\n return await navigator.mediaDevices.getUserMedia(constraints);\n}\n\nexport function createAudioAnalyzer(mediaStream: MediaStream): {\n audioContext: AudioContext;\n analyser: AnalyserNode;\n} {\n const audioContext = new AudioContext();\n const source = audioContext.createMediaStreamSource(mediaStream);\n const analyser = audioContext.createAnalyser();\n\n analyser.fftSize = 8192;\n\n source.connect(analyser);\n\n return { analyser, audioContext };\n}\n\nexport function calculateAudioLevel(analyser: AnalyserNode): number {\n const dataArray = new Uint8Array(analyser.fftSize);\n analyser.getByteTimeDomainData(dataArray);\n\n const sumSquares = Array.from(dataArray).reduce((sum, value) => {\n const normalized = (value - 128) / 128;\n return sum + normalized * normalized;\n }, 0);\n\n return Math.sqrt(sumSquares / dataArray.length);\n}\n"]}
@@ -10,4 +10,4 @@ export declare function decodeToken(token: string): {
10
10
  environment: string;
11
11
  expiresAt: number | undefined;
12
12
  tenant: string;
13
- } | undefined;
13
+ };
@@ -43,17 +43,18 @@ export function decodeToken(token) {
43
43
  // Expected format: https://keycloak.{environment}.corti.app/realms/{tenant}
44
44
  const regex = /^https:\/\/(keycloak|auth)\.([^.]+)\.corti\.app\/realms\/([^/]+)/;
45
45
  const match = issuerUrl.match(regex);
46
- // If the issuer URL matches the expected pattern, return the extracted values along with the token
47
- if (match) {
48
- const expiresAt = tokenDetails.exp && typeof tokenDetails.exp === "number"
49
- ? tokenDetails.exp
50
- : undefined;
51
- return {
52
- accessToken: token,
53
- environment: match[2],
54
- expiresAt,
55
- tenant: match[3],
56
- };
46
+ if (!match) {
47
+ throw new Error("Access token does not match expected format");
57
48
  }
49
+ // If the issuer URL matches the expected pattern, return the extracted values along with the token
50
+ const expiresAt = tokenDetails.exp && typeof tokenDetails.exp === "number"
51
+ ? tokenDetails.exp
52
+ : undefined;
53
+ return {
54
+ accessToken: token,
55
+ environment: match[2],
56
+ expiresAt,
57
+ tenant: match[3],
58
+ };
58
59
  }
59
60
  //# sourceMappingURL=token.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/utils/token.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,kFAAkF;IAClF,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IAED,sDAAsD;IACtD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAE3B,gEAAgE;IAChE,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAE/D,8CAA8C;IAC9C,IAAI,WAAmB,CAAC;IACxB,IAAI,CAAC;QACH,WAAW,GAAG,kBAAkB,CAC9B,IAAI,CAAC,MAAM,CAAC;aACT,KAAK,CAAC,EAAE,CAAC;aACT,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;aACjE,IAAI,CAAC,EAAE,CAAC,CACZ,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IAED,gDAAgD;IAChD,IAAI,YAAmE,CAAC;IACxE,IAAI,CAAC;QACH,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,gDAAgD;IAChD,MAAM,SAAS,GAAW,YAAY,CAAC,GAAG,CAAC;IAC3C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IAED,2DAA2D;IAC3D,4EAA4E;IAC5E,MAAM,KAAK,GACT,kEAAkE,CAAC;IACrE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAErC,mGAAmG;IACnG,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,SAAS,GACb,YAAY,CAAC,GAAG,IAAI,OAAO,YAAY,CAAC,GAAG,KAAK,QAAQ;YACtD,CAAC,CAAC,YAAY,CAAC,GAAG;YAClB,CAAC,CAAC,SAAS,CAAC;QAEhB,OAAO;YACL,WAAW,EAAE,KAAK;YAClB,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;YACrB,SAAS;YACT,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;SACjB,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["/**\n * Decodes a JWT token and extracts environment and tenant information.\n *\n * @param token - The JWT token to decode\n * @returns Object containing environment, tenant, accessToken, and expiresAt\n * @throws Error if token format is invalid or cannot be decoded\n */\nexport function decodeToken(token: string) {\n // Validate the token structure (should contain at least header and payload parts)\n const parts = token.split(\".\");\n if (parts.length < 2) {\n throw new Error(\"Invalid token format\");\n }\n\n // Retrieve the payload (second part) of the JWT token\n const base64Url = parts[1];\n\n // Replace URL-safe characters to match standard base64 encoding\n const base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n\n // Decode the base64 string into a JSON string\n let jsonPayload: string;\n try {\n jsonPayload = decodeURIComponent(\n atob(base64)\n .split(\"\")\n .map((c) => \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2))\n .join(\"\"),\n );\n } catch (error) {\n throw new Error(\"Failed to decode token payload\");\n }\n\n // Parse the JSON string to obtain token details\n let tokenDetails: { iss: string; exp?: number; [key: string]: unknown };\n try {\n tokenDetails = JSON.parse(jsonPayload);\n } catch (error) {\n throw new Error(\"Invalid JSON payload in token\");\n }\n\n // Extract the issuer URL from the token details\n const issuerUrl: string = tokenDetails.iss;\n if (!issuerUrl) {\n throw new Error(\"Token payload does not contain an issuer (iss) field\");\n }\n\n // Regex to extract environment and tenant from issuer URL:\n // Expected format: https://keycloak.{environment}.corti.app/realms/{tenant}\n const regex =\n /^https:\\/\\/(keycloak|auth)\\.([^.]+)\\.corti\\.app\\/realms\\/([^/]+)/;\n const match = issuerUrl.match(regex);\n\n // If the issuer URL matches the expected pattern, return the extracted values along with the token\n if (match) {\n const expiresAt =\n tokenDetails.exp && typeof tokenDetails.exp === \"number\"\n ? tokenDetails.exp\n : undefined;\n\n return {\n accessToken: token,\n environment: match[2],\n expiresAt,\n tenant: match[3],\n };\n }\n}\n"]}
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/utils/token.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,kFAAkF;IAClF,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IAED,sDAAsD;IACtD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAE3B,gEAAgE;IAChE,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAE/D,8CAA8C;IAC9C,IAAI,WAAmB,CAAC;IACxB,IAAI,CAAC;QACH,WAAW,GAAG,kBAAkB,CAC9B,IAAI,CAAC,MAAM,CAAC;aACT,KAAK,CAAC,EAAE,CAAC;aACT,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;aACjE,IAAI,CAAC,EAAE,CAAC,CACZ,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IAED,gDAAgD;IAChD,IAAI,YAAmE,CAAC;IACxE,IAAI,CAAC;QACH,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,gDAAgD;IAChD,MAAM,SAAS,GAAW,YAAY,CAAC,GAAG,CAAC;IAC3C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IAED,2DAA2D;IAC3D,4EAA4E;IAC5E,MAAM,KAAK,GACT,kEAAkE,CAAC;IACrE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAErC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,mGAAmG;IACnG,MAAM,SAAS,GACb,YAAY,CAAC,GAAG,IAAI,OAAO,YAAY,CAAC,GAAG,KAAK,QAAQ;QACtD,CAAC,CAAC,YAAY,CAAC,GAAG;QAClB,CAAC,CAAC,SAAS,CAAC;IAEhB,OAAO;QACL,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;QACrB,SAAS;QACT,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;KACjB,CAAC;AACJ,CAAC","sourcesContent":["/**\n * Decodes a JWT token and extracts environment and tenant information.\n *\n * @param token - The JWT token to decode\n * @returns Object containing environment, tenant, accessToken, and expiresAt\n * @throws Error if token format is invalid or cannot be decoded\n */\nexport function decodeToken(token: string) {\n // Validate the token structure (should contain at least header and payload parts)\n const parts = token.split(\".\");\n if (parts.length < 2) {\n throw new Error(\"Invalid token format\");\n }\n\n // Retrieve the payload (second part) of the JWT token\n const base64Url = parts[1];\n\n // Replace URL-safe characters to match standard base64 encoding\n const base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n\n // Decode the base64 string into a JSON string\n let jsonPayload: string;\n try {\n jsonPayload = decodeURIComponent(\n atob(base64)\n .split(\"\")\n .map((c) => \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2))\n .join(\"\"),\n );\n } catch (error) {\n throw new Error(\"Failed to decode token payload\");\n }\n\n // Parse the JSON string to obtain token details\n let tokenDetails: { iss: string; exp?: number; [key: string]: unknown };\n try {\n tokenDetails = JSON.parse(jsonPayload);\n } catch (error) {\n throw new Error(\"Invalid JSON payload in token\");\n }\n\n // Extract the issuer URL from the token details\n const issuerUrl: string = tokenDetails.iss;\n if (!issuerUrl) {\n throw new Error(\"Token payload does not contain an issuer (iss) field\");\n }\n\n // Regex to extract environment and tenant from issuer URL:\n // Expected format: https://keycloak.{environment}.corti.app/realms/{tenant}\n const regex =\n /^https:\\/\\/(keycloak|auth)\\.([^.]+)\\.corti\\.app\\/realms\\/([^/]+)/;\n const match = issuerUrl.match(regex);\n\n if (!match) {\n throw new Error(\"Access token does not match expected format\");\n }\n\n // If the issuer URL matches the expected pattern, return the extracted values along with the token\n const expiresAt =\n tokenDetails.exp && typeof tokenDetails.exp === \"number\"\n ? tokenDetails.exp\n : undefined;\n\n return {\n accessToken: token,\n environment: match[2],\n expiresAt,\n tenant: match[3],\n };\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { css } from 'lit';
1
+ import { css } from "lit";
2
2
  const ButtonStyles = css `
3
3
  /* Default (plain) button styling */
4
4
  button {
@@ -14,7 +14,6 @@ const ButtonStyles = css `
14
14
  align-items: center;
15
15
  justify-content: center;
16
16
  transition: background 0.3s ease;
17
- font-family: var(--component-font-family, -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, Cantarell, Ubuntu, roboto, noto, helvetica, arial, sans-serif);
18
17
  }
19
18
 
20
19
  button:hover {
@@ -1 +1 @@
1
- {"version":3,"file":"buttons.js","sourceRoot":"","sources":["../../src/styles/buttons.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,YAAY,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDvB,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["import { css } from 'lit';\n\nconst ButtonStyles = css`\n /* Default (plain) button styling */\n button {\n background: var(--action-plain-background, transparent);\n /* border: 1px solid var(--action-plain-border-color); */\n border: none;\n color: var(--component-text-color, light-dark(#333, #eee));\n cursor: pointer;\n padding: 8px;\n border-radius: var(--card-inner-border-radius, 6px);\n display: inline-flex;\n gap: 4px;\n align-items: center;\n justify-content: center;\n transition: background 0.3s ease;\n font-family: var(--component-font-family, -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, Cantarell, Ubuntu, roboto, noto, helvetica, arial, sans-serif);\n }\n\n button:hover {\n background: var(--action-plain-background-hover, light-dark(#ddd, #444));\n }\n\n button:focus-visible {\n outline: 2px solid var(--action-accent-background, light-dark(#007bff, #0056b3));\n outline-offset: 2px;\n }\n\n /* Accent variant */\n button.accent {\n background: var(--action-accent-background, light-dark(#007bff, #0056b3));\n color: var(--action-accent-text-color, #fff);\n border: none;\n }\n\n button.accent:hover {\n background: var(--action-accent-background-hover, light-dark(#0056b3, #003d80));\n }\n\n /* Red variant */\n button.red {\n background: var(--action-red-background, light-dark(#dc3545, #bd2130));\n color: var(--action-red-text-color, #fff);\n border: none;\n }\n\n button.red:hover {\n background: var(--action-red-background-hover, light-dark(#bd2130, #a71c24));\n }\n`;\n\nexport default ButtonStyles;\n"]}
1
+ {"version":3,"file":"buttons.js","sourceRoot":"","sources":["../../src/styles/buttons.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,YAAY,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+CvB,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["import { css } from \"lit\";\n\nconst ButtonStyles = css`\n /* Default (plain) button styling */\n button {\n background: var(--action-plain-background, transparent);\n /* border: 1px solid var(--action-plain-border-color); */\n border: none;\n color: var(--component-text-color, light-dark(#333, #eee));\n cursor: pointer;\n padding: 8px;\n border-radius: var(--card-inner-border-radius, 6px);\n display: inline-flex;\n gap: 4px;\n align-items: center;\n justify-content: center;\n transition: background 0.3s ease;\n }\n\n button:hover {\n background: var(--action-plain-background-hover, light-dark(#ddd, #444));\n }\n\n button:focus-visible {\n outline: 2px solid var(--action-accent-background, light-dark(#007bff, #0056b3));\n outline-offset: 2px;\n }\n\n /* Accent variant */\n button.accent {\n background: var(--action-accent-background, light-dark(#007bff, #0056b3));\n color: var(--action-accent-text-color, #fff);\n border: none;\n }\n\n button.accent:hover {\n background: var(--action-accent-background-hover, light-dark(#0056b3, #003d80));\n }\n\n /* Red variant */\n button.red {\n background: var(--action-red-background, light-dark(#dc3545, #bd2130));\n color: var(--action-red-text-color, #fff);\n border: none;\n }\n\n button.red:hover {\n background: var(--action-red-background-hover, light-dark(#bd2130, #a71c24));\n }\n`;\n\nexport default ButtonStyles;\n"]}
@@ -0,0 +1,3 @@
1
+ declare const ComponentStyles: import("lit").CSSResult;
2
+ export declare const LabelStyles: import("lit").CSSResult;
3
+ export default ComponentStyles;
@@ -0,0 +1,32 @@
1
+ import { css } from "lit";
2
+ const ComponentStyles = css `
3
+ :host {
4
+ font-family: var(--component-font-family, -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, Cantarell, Ubuntu, roboto, noto, helvetica, arial, sans-serif);
5
+ }
6
+
7
+ .wrapper {
8
+ background-color: var(--card-background, light-dark(#fff, #333));
9
+ border: 1px solid var(--card-border-color, light-dark(#ddd, #555));
10
+ border-radius: var(--card-border-radius, 8px);
11
+ box-shadow: var(--card-box-shadow, 0 2px 5px rgba(0, 0, 0, 0.1));
12
+ padding: var(--card-padding, 4px);
13
+ display: flex;
14
+ gap: 4px;
15
+ height: 46px;
16
+ width: fit-content;
17
+ box-sizing: border-box;
18
+ overflow: hidden;
19
+ }
20
+ `;
21
+ export const LabelStyles = css `
22
+ label {
23
+ display: block;
24
+ font-size: 0.8rem;
25
+ padding-bottom: 0.5rem;
26
+ font-weight: 500;
27
+ color: var(--component-text-color, light-dark(#333, #eee));
28
+ pointer-events: none;
29
+ }
30
+ `;
31
+ export default ComponentStyles;
32
+ //# sourceMappingURL=component-styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-styles.js","sourceRoot":"","sources":["../../src/styles/component-styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,eAAe,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;CAkB1B,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAA;;;;;;;;;CAS7B,CAAC;AAEF,eAAe,eAAe,CAAC","sourcesContent":["import { css } from \"lit\";\n\nconst ComponentStyles = css`\n :host {\n font-family: var(--component-font-family, -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, Cantarell, Ubuntu, roboto, noto, helvetica, arial, sans-serif);\n }\n\n .wrapper {\n background-color: var(--card-background, light-dark(#fff, #333));\n border: 1px solid var(--card-border-color, light-dark(#ddd, #555));\n border-radius: var(--card-border-radius, 8px);\n box-shadow: var(--card-box-shadow, 0 2px 5px rgba(0, 0, 0, 0.1));\n padding: var(--card-padding, 4px);\n display: flex;\n gap: 4px;\n height: 46px;\n width: fit-content;\n box-sizing: border-box;\n overflow: hidden;\n }\n`;\n\nexport const LabelStyles = css`\n label {\n display: block;\n font-size: 0.8rem;\n padding-bottom: 0.5rem;\n font-weight: 500;\n color: var(--component-text-color, light-dark(#333, #eee));\n pointer-events: none;\n }\n`;\n\nexport default ComponentStyles;\n"]}
@@ -0,0 +1,2 @@
1
+ declare const KeybindingSelectorStyles: import("lit").CSSResult[];
2
+ export default KeybindingSelectorStyles;
@@ -0,0 +1,72 @@
1
+ import { css } from "lit";
2
+ import { LabelStyles } from "./component-styles.js";
3
+ const KeybindingSelectorStyles = [
4
+ LabelStyles,
5
+ css `
6
+ :host {
7
+ display: block;
8
+ }
9
+ .keybinding-selector-wrapper {
10
+ display: flex;
11
+ align-items: center;
12
+ gap: 12px;
13
+ padding: var(--card-padding, 4px) 8px;
14
+ background: var(--card-background, light-dark(#fff, #333));
15
+ border: 1px solid var(--card-border-color, light-dark(#ddd, #555));
16
+ border-radius: var(--card-inner-border-radius, 6px);
17
+ overflow: hidden;
18
+ }
19
+ .keybinding-selector-wrapper:focus-within {
20
+ border-color: var(--action-accent-background, light-dark(#007bff, #0056b3));
21
+ outline: 2px solid var(--action-accent-background, light-dark(#007bff, #0056b3));
22
+ }
23
+ .keybinding-selector-input {
24
+ flex: 1;
25
+ min-width: 0;
26
+ border: none;
27
+ background: transparent;
28
+ font-size: 14px;
29
+ line-height: 24px;
30
+ color: var(--component-text-color, light-dark(#333, #eee));
31
+ outline: none;
32
+ padding: 0;
33
+ cursor: text;
34
+ }
35
+ .keybinding-selector-input::placeholder {
36
+ opacity: 0.6;
37
+ color: var(--component-text-color, light-dark(#333, #eee));
38
+ }
39
+ .keybinding-selector-input:disabled {
40
+ cursor: not-allowed;
41
+ opacity: 0.5;
42
+ }
43
+ .keybinding-key {
44
+ display: flex;
45
+ align-items: center;
46
+ justify-content: center;
47
+ padding: 0 0.5rem;
48
+ height: 24px;
49
+ background: var(--card-background, light-dark(#fff, #333));
50
+ border: 1px solid var(--card-border-color, light-dark(#ddd, #555));
51
+ border-radius: var(--card-inner-border-radius, 6px);
52
+ box-shadow: var(--card-box-shadow, 0 2px 5px rgba(0, 0, 0, 0.1));
53
+ font-size: 16px;
54
+ line-height: 28px;
55
+ color: var(--component-text-color, light-dark(#333, #eee));
56
+ opacity: 0.6;
57
+ text-align: center;
58
+ flex-shrink: 0;
59
+ }
60
+ .keybinding-help {
61
+ font-size: 12px;
62
+ line-height: 20px;
63
+ color: var(--component-text-color, light-dark(#333, #eee));
64
+ opacity: 0.6;
65
+ margin: 0;
66
+ letter-spacing: 0.01px;
67
+ padding-top: 8px;
68
+ }
69
+ `,
70
+ ];
71
+ export default KeybindingSelectorStyles;
72
+ //# sourceMappingURL=keybinding-selector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keybinding-selector.js","sourceRoot":"","sources":["../../src/styles/keybinding-selector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,wBAAwB,GAAG;IAC/B,WAAW;IACX,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgEJ;CACA,CAAC;AAEF,eAAe,wBAAwB,CAAC","sourcesContent":["import { css } from \"lit\";\nimport { LabelStyles } from \"./component-styles.js\";\n\nconst KeybindingSelectorStyles = [\n LabelStyles,\n css`\n :host {\n display: block;\n }\n .keybinding-selector-wrapper {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: var(--card-padding, 4px) 8px;\n background: var(--card-background, light-dark(#fff, #333));\n border: 1px solid var(--card-border-color, light-dark(#ddd, #555));\n border-radius: var(--card-inner-border-radius, 6px);\n overflow: hidden;\n }\n .keybinding-selector-wrapper:focus-within {\n border-color: var(--action-accent-background, light-dark(#007bff, #0056b3));\n outline: 2px solid var(--action-accent-background, light-dark(#007bff, #0056b3));\n }\n .keybinding-selector-input {\n flex: 1;\n min-width: 0;\n border: none;\n background: transparent;\n font-size: 14px;\n line-height: 24px;\n color: var(--component-text-color, light-dark(#333, #eee));\n outline: none;\n padding: 0;\n cursor: text;\n }\n .keybinding-selector-input::placeholder {\n opacity: 0.6;\n color: var(--component-text-color, light-dark(#333, #eee));\n }\n .keybinding-selector-input:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n .keybinding-key {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 0.5rem;\n height: 24px;\n background: var(--card-background, light-dark(#fff, #333));\n border: 1px solid var(--card-border-color, light-dark(#ddd, #555));\n border-radius: var(--card-inner-border-radius, 6px);\n box-shadow: var(--card-box-shadow, 0 2px 5px rgba(0, 0, 0, 0.1));\n font-size: 16px;\n line-height: 28px;\n color: var(--component-text-color, light-dark(#333, #eee));\n opacity: 0.6;\n text-align: center;\n flex-shrink: 0;\n }\n .keybinding-help {\n font-size: 12px;\n line-height: 20px;\n color: var(--component-text-color, light-dark(#333, #eee));\n opacity: 0.6;\n margin: 0;\n letter-spacing: 0.01px;\n padding-top: 8px;\n }\n`,\n];\n\nexport default KeybindingSelectorStyles;\n"]}
@@ -0,0 +1,2 @@
1
+ declare const ModeSelectorStyles: import("lit").CSSResult[];
2
+ export default ModeSelectorStyles;
@@ -0,0 +1,56 @@
1
+ import { css } from "lit";
2
+ import { LabelStyles } from "./component-styles.js";
3
+ const ModeSelectorStyles = [
4
+ LabelStyles,
5
+ css `
6
+ :host {
7
+ display: block;
8
+ }
9
+ .mode-selector-tabs {
10
+ display: flex;
11
+ background: var(--muted-background, light-dark(#fafafa, #2a2a2a));
12
+ border: 1px solid var(--card-border-color, light-dark(#ddd, #555));
13
+ border-radius: var(--card-inner-border-radius, 6px);
14
+ padding: 0;
15
+ overflow: hidden;
16
+ align-items: center;
17
+ justify-content: center;
18
+ text-wrap: nowrap;
19
+ gap: 2px;
20
+ }
21
+ .mode-selector-tab {
22
+ flex: 1;
23
+ padding: 4px 8px;
24
+ border: 1px solid transparent;
25
+ background: transparent;
26
+ font-size: 14px;
27
+ font-weight: 500;
28
+ line-height: 24px;
29
+ color: var(--component-text-color, light-dark(#333, #eee));
30
+ opacity: 0.6;
31
+ cursor: pointer;
32
+ transition: all 0.2s;
33
+ height: 32px;
34
+ display: flex;
35
+ align-items: center;
36
+ justify-content: center;
37
+ border-radius: var(--card-inner-border-radius, 6px);
38
+ margin: -1px;
39
+ }
40
+ .mode-selector-tab:hover:not(:disabled) {
41
+ opacity: 1;
42
+ }
43
+ .mode-selector-tab.active {
44
+ background: var(--card-background, light-dark(#fff, #333));
45
+ border-color: var(--card-border-color, light-dark(#ddd, #555));
46
+ box-shadow: var(--card-box-shadow, 0 2px 5px rgba(0, 0, 0, 0.1));
47
+ opacity: 1;
48
+ }
49
+ .mode-selector-tab:disabled {
50
+ opacity: 0.5;
51
+ cursor: not-allowed;
52
+ }
53
+ `,
54
+ ];
55
+ export default ModeSelectorStyles;
56
+ //# sourceMappingURL=mode-selector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mode-selector.js","sourceRoot":"","sources":["../../src/styles/mode-selector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,kBAAkB,GAAG;IACzB,WAAW;IACX,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDJ;CACA,CAAC;AAEF,eAAe,kBAAkB,CAAC","sourcesContent":["import { css } from \"lit\";\nimport { LabelStyles } from \"./component-styles.js\";\n\nconst ModeSelectorStyles = [\n LabelStyles,\n css`\n :host {\n display: block;\n }\n .mode-selector-tabs {\n display: flex;\n background: var(--muted-background, light-dark(#fafafa, #2a2a2a));\n border: 1px solid var(--card-border-color, light-dark(#ddd, #555));\n border-radius: var(--card-inner-border-radius, 6px);\n padding: 0;\n overflow: hidden;\n align-items: center;\n justify-content: center;\n text-wrap: nowrap;\n gap: 2px;\n }\n .mode-selector-tab {\n flex: 1;\n padding: 4px 8px;\n border: 1px solid transparent;\n background: transparent;\n font-size: 14px;\n font-weight: 500;\n line-height: 24px;\n color: var(--component-text-color, light-dark(#333, #eee));\n opacity: 0.6;\n cursor: pointer;\n transition: all 0.2s;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--card-inner-border-radius, 6px);\n margin: -1px;\n }\n .mode-selector-tab:hover:not(:disabled) {\n opacity: 1;\n }\n .mode-selector-tab.active {\n background: var(--card-background, light-dark(#fff, #333));\n border-color: var(--card-border-color, light-dark(#ddd, #555));\n box-shadow: var(--card-box-shadow, 0 2px 5px rgba(0, 0, 0, 0.1));\n opacity: 1;\n }\n .mode-selector-tab:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n`,\n];\n\nexport default ModeSelectorStyles;\n"]}
@@ -1,2 +1,2 @@
1
- declare const SelectStyles: import("lit").CSSResult;
1
+ declare const SelectStyles: import("lit").CSSResult[];
2
2
  export default SelectStyles;
@@ -1,13 +1,8 @@
1
1
  import { css } from "lit";
2
- const SelectStyles = css `
3
- label {
4
- display: block;
5
- font-size: 0.8rem;
6
- padding-bottom: 0.5rem;
7
- font-weight: 500;
8
- color: var(--component-text-color, light-dark(#333, #eee));
9
- pointer-events: none;
10
- }
2
+ import { LabelStyles } from "./component-styles.js";
3
+ const SelectStyles = [
4
+ LabelStyles,
5
+ css `
11
6
  select {
12
7
  background: var(--card-background, light-dark(#fff, #333));
13
8
  color: var(--component-text-color, light-dark(#333, #eee));
@@ -31,6 +26,7 @@ const SelectStyles = css `
31
26
  outline: 2px solid var(--action-accent-background, light-dark(#007bff, #0056b3));
32
27
  /* outline-offset: 2px; */
33
28
  }
34
- `;
29
+ `,
30
+ ];
35
31
  export default SelectStyles;
36
32
  //# sourceMappingURL=select.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/styles/select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,YAAY,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCvB,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["import { css } from \"lit\";\n\nconst SelectStyles = css`\n label {\n display: block;\n font-size: 0.8rem;\n padding-bottom: 0.5rem;\n font-weight: 500;\n color: var(--component-text-color, light-dark(#333, #eee));\n pointer-events: none;\n }\n select {\n background: var(--card-background, light-dark(#fff, #333));\n color: var(--component-text-color, light-dark(#333, #eee));\n border: 1px solid var(--card-border-color, light-dark(#ddd, #555));\n padding: var(--card-padding, 4px);\n border-radius: var(--card-inner-border-radius, 6px);\n outline: none;\n width: 100%;\n }\n\n select:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n select:hover {\n background: var(--action-plain-background-hover, light-dark(#ddd, #444));\n }\n\n select:focus-visible {\n outline: 2px solid var(--action-accent-background, light-dark(#007bff, #0056b3));\n /* outline-offset: 2px; */\n }\n`;\n\nexport default SelectStyles;\n"]}
1
+ {"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/styles/select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,YAAY,GAAG;IACnB,WAAW;IACX,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;CAwBJ;CACA,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["import { css } from \"lit\";\nimport { LabelStyles } from \"./component-styles.js\";\n\nconst SelectStyles = [\n LabelStyles,\n css`\n select {\n background: var(--card-background, light-dark(#fff, #333));\n color: var(--component-text-color, light-dark(#333, #eee));\n border: 1px solid var(--card-border-color, light-dark(#ddd, #555));\n padding: var(--card-padding, 4px);\n border-radius: var(--card-inner-border-radius, 6px);\n outline: none;\n width: 100%;\n }\n\n select:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n select:hover {\n background: var(--action-plain-background-hover, light-dark(#ddd, #444));\n }\n\n select:focus-visible {\n outline: 2px solid var(--action-accent-background, light-dark(#007bff, #0056b3));\n /* outline-offset: 2px; */\n }\n`,\n];\n\nexport default SelectStyles;\n"]}