@jjlmoya/utils-hardware 1.17.0 → 1.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/package.json +1 -1
  2. package/src/category/i18n/de.ts +4 -4
  3. package/src/category/i18n/id.ts +3 -3
  4. package/src/category/i18n/it.ts +3 -3
  5. package/src/category/i18n/nl.ts +3 -3
  6. package/src/category/i18n/pl.ts +4 -4
  7. package/src/category/i18n/pt.ts +3 -3
  8. package/src/category/i18n/ru.ts +3 -3
  9. package/src/category/i18n/sv.ts +3 -3
  10. package/src/category/i18n/tr.ts +3 -3
  11. package/src/category/i18n/zh.ts +3 -3
  12. package/src/category/index.ts +2 -1
  13. package/src/entries.ts +4 -1
  14. package/src/index.ts +1 -0
  15. package/src/layouts/PreviewLayout.astro +1 -0
  16. package/src/tests/diacritics_density.test.ts +118 -0
  17. package/src/tests/inverted_punctuation.test.ts +84 -0
  18. package/src/tests/locale_completeness.test.ts +2 -2
  19. package/src/tests/no_en_dash.test.ts +70 -0
  20. package/src/tests/pagespeed_best_practices.test.ts +198 -0
  21. package/src/tests/script_density.test.ts +94 -0
  22. package/src/tests/tool_validation.test.ts +2 -2
  23. package/src/tool/batteryHealthEstimator/component.astro +3 -3
  24. package/src/tool/batteryHealthEstimator/i18n/fr.ts +4 -4
  25. package/src/tool/batteryHealthEstimator/i18n/pl.ts +1 -1
  26. package/src/tool/colorAccuracyTest/color-accuracy-test.css +118 -5
  27. package/src/tool/colorAccuracyTest/i18n/de.ts +7 -7
  28. package/src/tool/colorAccuracyTest/i18n/en.ts +3 -3
  29. package/src/tool/colorAccuracyTest/i18n/es.ts +2 -2
  30. package/src/tool/colorAccuracyTest/i18n/fr.ts +9 -9
  31. package/src/tool/colorAccuracyTest/i18n/id.ts +3 -3
  32. package/src/tool/colorAccuracyTest/i18n/it.ts +3 -3
  33. package/src/tool/colorAccuracyTest/i18n/ja.ts +1 -1
  34. package/src/tool/colorAccuracyTest/i18n/ko.ts +2 -2
  35. package/src/tool/colorAccuracyTest/i18n/nl.ts +3 -3
  36. package/src/tool/colorAccuracyTest/i18n/pl.ts +5 -5
  37. package/src/tool/colorAccuracyTest/i18n/pt.ts +3 -3
  38. package/src/tool/colorAccuracyTest/i18n/ru.ts +15 -15
  39. package/src/tool/colorAccuracyTest/i18n/sv.ts +3 -3
  40. package/src/tool/colorAccuracyTest/i18n/tr.ts +2 -2
  41. package/src/tool/colorAccuracyTest/i18n/zh.ts +7 -7
  42. package/src/tool/deadPixelTest/i18n/ru.ts +6 -6
  43. package/src/tool/deadPixelTest/i18n/sv.ts +1 -1
  44. package/src/tool/deadPixelTest/i18n/zh.ts +5 -5
  45. package/src/tool/gamepadTest/component.astro +4 -3
  46. package/src/tool/gamepadTest/gamepad-test.css +171 -3
  47. package/src/tool/gamepadTest/i18n/es.ts +4 -4
  48. package/src/tool/gamepadTest/i18n/ru.ts +1 -1
  49. package/src/tool/gamepadTest/i18n/zh.ts +1 -1
  50. package/src/tool/gamepadVibrationTester/component.astro +3 -3
  51. package/src/tool/gamepadVibrationTester/i18n/es.ts +1 -1
  52. package/src/tool/gamepadVibrationTester/i18n/fr.ts +2 -2
  53. package/src/tool/keyboardTest/component.astro +6 -1
  54. package/src/tool/keyboardTest/keyboard-test.css +115 -2
  55. package/src/tool/mouseDoubleClickTest/bibliography.astro +14 -0
  56. package/src/tool/mouseDoubleClickTest/bibliography.ts +16 -0
  57. package/src/tool/mouseDoubleClickTest/component.astro +135 -0
  58. package/src/tool/mouseDoubleClickTest/entry.ts +29 -0
  59. package/src/tool/mouseDoubleClickTest/i18n/de.ts +274 -0
  60. package/src/tool/mouseDoubleClickTest/i18n/en.ts +274 -0
  61. package/src/tool/mouseDoubleClickTest/i18n/es.ts +274 -0
  62. package/src/tool/mouseDoubleClickTest/i18n/fr.ts +274 -0
  63. package/src/tool/mouseDoubleClickTest/i18n/id.ts +285 -0
  64. package/src/tool/mouseDoubleClickTest/i18n/it.ts +274 -0
  65. package/src/tool/mouseDoubleClickTest/i18n/ja.ts +274 -0
  66. package/src/tool/mouseDoubleClickTest/i18n/ko.ts +274 -0
  67. package/src/tool/mouseDoubleClickTest/i18n/nl.ts +274 -0
  68. package/src/tool/mouseDoubleClickTest/i18n/pl.ts +274 -0
  69. package/src/tool/mouseDoubleClickTest/i18n/pt.ts +274 -0
  70. package/src/tool/mouseDoubleClickTest/i18n/ru.ts +274 -0
  71. package/src/tool/mouseDoubleClickTest/i18n/sv.ts +274 -0
  72. package/src/tool/mouseDoubleClickTest/i18n/tr.ts +274 -0
  73. package/src/tool/mouseDoubleClickTest/i18n/zh.ts +274 -0
  74. package/src/tool/mouseDoubleClickTest/index.ts +9 -0
  75. package/src/tool/mouseDoubleClickTest/logic.ts +258 -0
  76. package/src/tool/mouseDoubleClickTest/mouse-double-click-test.css +488 -0
  77. package/src/tool/mouseDoubleClickTest/seo.astro +15 -0
  78. package/src/tool/mouseDoubleClickTest/ui.ts +26 -0
  79. package/src/tool/mousePollingTest/i18n/fr.ts +3 -3
  80. package/src/tool/mousePollingTest/i18n/pl.ts +1 -1
  81. package/src/tool/mousePollingTest/i18n/ru.ts +1 -1
  82. package/src/tool/mousePollingTest/i18n/zh.ts +1 -1
  83. package/src/tool/mousePollingTest/logic/RatonManager.ts +6 -6
  84. package/src/tool/refreshRateDetector/i18n/de.ts +3 -3
  85. package/src/tool/refreshRateDetector/i18n/en.ts +3 -3
  86. package/src/tool/refreshRateDetector/i18n/fr.ts +4 -4
  87. package/src/tool/refreshRateDetector/i18n/id.ts +3 -3
  88. package/src/tool/refreshRateDetector/i18n/pl.ts +2 -2
  89. package/src/tool/refreshRateDetector/i18n/pt.ts +3 -3
  90. package/src/tool/refreshRateDetector/i18n/sv.ts +3 -3
  91. package/src/tool/refreshRateDetector/i18n/tr.ts +2 -2
  92. package/src/tool/refreshRateDetector/i18n/zh.ts +2 -2
  93. package/src/tool/toneGenerator/component.astro +7 -7
  94. package/src/tool/toneGenerator/i18n/fr.ts +2 -2
  95. package/src/tool/toneGenerator/i18n/pl.ts +1 -1
  96. package/src/tool/toneGenerator/i18n/ru.ts +2 -2
  97. package/src/tool/toneGenerator/i18n/zh.ts +3 -3
  98. package/src/tools.ts +2 -2
@@ -22,7 +22,7 @@ const faqData = [
22
22
  },
23
23
  {
24
24
  question: 'Pourquoi mon Hz détecté est-il différent de ce qu\'indique mon moniteur ?',
25
- answer: 'Cela peut arriver si : votre connexion par câble est lâche, vos pilotes sont obsolètes ou la mise à l\'échelle de votre système d\'exploitation interfère. Essayez de débrancher et de rebrancher votre câble d\'affichage, ou de mettre à jour les pilotes de votre GPU.',
25
+ answer: 'Cela peut arriver si: votre connexion par câble est lâche, vos pilotes sont obsolètes ou la mise à l\'échelle de votre système d\'exploitation interfère. Essayez de débrancher et de rebrancher votre câble d\'affichage, ou de mettre à jour les pilotes de votre GPU.',
26
26
  },
27
27
  {
28
28
  question: 'Quels taux de rafraîchissement les moniteurs modernes prennent-ils en charge ?',
@@ -48,7 +48,7 @@ const howToData = [
48
48
  text: 'L\'outil affiche la norme correspondant à votre moniteur (60, 75, 120, 144, 240, 360Hz).',
49
49
  },
50
50
  {
51
- name: 'Optionnel : test de saut d\'images',
51
+ name: 'Optionnel: test de saut d\'images',
52
52
  text: 'Observez le carré animé traverser l\'écran pour confirmer visuellement la fluidité.',
53
53
  },
54
54
  ];
@@ -98,7 +98,7 @@ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
98
98
  seo: [
99
99
  {
100
100
  type: 'title',
101
- text: 'Détecteur de Taux de Rafraîchissement du Moniteur : Testez les Hz de votre Écran en Ligne',
101
+ text: 'Détecteur de Taux de Rafraîchissement du Moniteur: Testez les Hz de votre Écran en Ligne',
102
102
  level: 2,
103
103
  },
104
104
  {
@@ -146,7 +146,7 @@ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
146
146
  },
147
147
  {
148
148
  type: 'title',
149
- text: 'Dépannage : L\'Écran Affiche moins de Hz que Prévu',
149
+ text: 'Dépannage: L\'Écran Affiche moins de Hz que Prévu',
150
150
  level: 3,
151
151
  },
152
152
  {
@@ -122,7 +122,7 @@ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
122
122
  {
123
123
  type: 'list',
124
124
  items: [
125
- 'Buka detektor inipengukuran dimulai segera',
125
+ 'Buka detektor ini-pengukuran dimulai segera',
126
126
  'Pilih antara mode pengukuran Cepat (3 detik) atau Stabil (10 detik)',
127
127
  'Baca Hz monitor Anda dari dial speedometer',
128
128
  'Bandingkan dengan standar industri (60, 75, 120, 144, 240, 360Hz)',
@@ -152,7 +152,7 @@ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
152
152
  {
153
153
  type: 'list',
154
154
  items: [
155
- 'Periksa koneksi kabel HDMI/DisplayPortkabel longgar mengurangi bandwidth',
155
+ 'Periksa koneksi kabel HDMI/DisplayPort-kabel longgar mengurangi bandwidth',
156
156
  'Perbarui driver GPU Anda (NVIDIA, AMD, Intel)',
157
157
  'Periksa pengaturan layar OS untuk memastikan refresh rate tinggi telah diaktifkan',
158
158
  'Coba kabel atau port yang berbeda pada monitor Anda',
@@ -166,7 +166,7 @@ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
166
166
  },
167
167
  {
168
168
  type: 'paragraph',
169
- html: 'Alat ini menggunakan API requestAnimationFrame browser, yang sinkron langsung dengan siklus refresh monitor Anda. Dengan mengukur waktu antar frame animasi, kami menghitung refresh rate Anda yang tepat dengan presisi tinggitanpa perlu perangkat keras khusus.',
169
+ html: 'Alat ini menggunakan API requestAnimationFrame browser, yang sinkron langsung dengan siklus refresh monitor Anda. Dengan mengukur waktu antar frame animasi, kami menghitung refresh rate Anda yang tepat dengan presisi tinggi-tanpa perlu perangkat keras khusus.',
170
170
  },
171
171
  ],
172
172
  ui: {
@@ -122,7 +122,7 @@ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
122
122
  {
123
123
  type: 'list',
124
124
  items: [
125
- 'Uruchom detektor pomiar zaczyna się automatycznie',
125
+ 'Uruchom detektor - pomiar zaczyna się automatycznie',
126
126
  'Wybierz tryb Szybki (3s) lub Stabilny (10s)',
127
127
  'Odczytaj Hz z tarczy prędkościomierza',
128
128
  'Porównaj z normami branżowymi (60, 75, 120, 144, 240, 360Hz)',
@@ -152,7 +152,7 @@ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
152
152
  {
153
153
  type: 'list',
154
154
  items: [
155
- 'Sprawdź kabel HDMI/DisplayPort słabe połączenie ogranicza przepustowość',
155
+ 'Sprawdź kabel HDMI/DisplayPort - słabe połączenie ogranicza przepustowość',
156
156
  'Zaktualizuj sterowniki karty graficznej (NVIDIA, AMD, Intel)',
157
157
  'Sprawdź ustawienia ekranu w systemie, aby włączyć wysokie odświeżanie',
158
158
  'Wypróbuj inne kable lub porty w monitorze',
@@ -122,7 +122,7 @@ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
122
122
  {
123
123
  type: 'list',
124
124
  items: [
125
- 'Carregue este detector a medição começa imediatamente',
125
+ 'Carregue este detector - a medição começa imediatamente',
126
126
  'Escolha entre o modo de medição Rápido (3s) ou Estável (10s)',
127
127
  'Leia os Hz do seu monitor no mostrador do velocímetro',
128
128
  'Compare com os padrões da indústria (60, 75, 120, 144, 240, 360Hz)',
@@ -152,7 +152,7 @@ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
152
152
  {
153
153
  type: 'list',
154
154
  items: [
155
- 'Verifique as conexões do cabo HDMI/DisplayPort cabos soltos reduzem a largura de banda',
155
+ 'Verifique as conexões do cabo HDMI/DisplayPort - cabos soltos reduzem a largura de banda',
156
156
  'Atualize os drivers da sua GPU (NVIDIA, AMD, Intel)',
157
157
  'Verifique as configurações de ecrã do SO para garantir que a alta taxa de atualização está ativada',
158
158
  'Tente diferentes cabos ou portas no seu monitor',
@@ -166,7 +166,7 @@ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
166
166
  },
167
167
  {
168
168
  type: 'paragraph',
169
- html: 'Esta ferramenta utiliza a API requestAnimationFrame do navegador, que se sincroniza diretamente com o ciclo de atualização do seu monitor. Ao medir o tempo entre os frames da animação, calculamos a sua taxa de atualização exata com alta precisão sem necessidade de hardware especial.',
169
+ html: 'Esta ferramenta utiliza a API requestAnimationFrame do navegador, que se sincroniza diretamente com o ciclo de atualização do seu monitor. Ao medir o tempo entre os frames da animação, calculamos a sua taxa de atualização exata com alta precisão - sem necessidade de hardware especial.',
170
170
  },
171
171
  ],
172
172
  ui: {
@@ -122,7 +122,7 @@ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
122
122
  {
123
123
  type: 'list',
124
124
  items: [
125
- 'Ladda denna detektor mätningen börjar omedelbart',
125
+ 'Ladda denna detektor - mätningen börjar omedelbart',
126
126
  'Välj mellan snabbt (3s) eller stabilt (10s) mätläge',
127
127
  'Läs av din monitors Hz på mätartavlan',
128
128
  'Jämför mot branschstandarder (60, 75, 120, 144, 240, 360Hz)',
@@ -152,7 +152,7 @@ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
152
152
  {
153
153
  type: 'list',
154
154
  items: [
155
- 'Kontrollera HDMI/DisplayPort-kablar lösa kablar begränsar bandbredden',
155
+ 'Kontrollera HDMI/DisplayPort-kablar - lösa kablar begränsar bandbredden',
156
156
  'Uppdatera dina GPU-drivrutiner (NVIDIA, AMD, Intel)',
157
157
  'Kontrollera OS-inställningar för bildskärm så att hög uppdateringsfrekvens är aktiverad',
158
158
  'Prova andra kablar eller portar på din monitor',
@@ -166,7 +166,7 @@ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
166
166
  },
167
167
  {
168
168
  type: 'paragraph',
169
- html: 'Verktyget använder webbläsarens requestAnimationFrame-API, som synkroniserar direkt med din monitors uppdateringscykel. Genom att mäta tiden mellan bildrutorna beräknar vi din exakta frekvens med hög precision ingen speciell hårdvara krävs.',
169
+ html: 'Verktyget använder webbläsarens requestAnimationFrame-API, som synkroniserar direkt med din monitors uppdateringscykel. Genom att mäta tiden mellan bildrutorna beräknar vi din exakta frekvens med hög precision - ingen speciell hårdvara krävs.',
170
170
  },
171
171
  ],
172
172
  ui: {
@@ -122,7 +122,7 @@ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
122
122
  {
123
123
  type: 'list',
124
124
  items: [
125
- 'Bu dedektörü yükleyin ölçüm hemen başlar',
125
+ 'Bu dedektörü yükleyin - ölçüm hemen başlar',
126
126
  'Hızlı (3s) veya Kararlı (10s) ölçüm modu arasında seçim yapın',
127
127
  'Monitörünüzün Hz değerini hız göstergesi kadranından okuyun',
128
128
  'Endüstri standartlarıyla (60, 75, 120, 144, 240, 360Hz) karşılaştırın',
@@ -152,7 +152,7 @@ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
152
152
  {
153
153
  type: 'list',
154
154
  items: [
155
- 'HDMI/DisplayPort kablo bağlantılarını kontrol edin gevşek kablolar bant genişliğini düşürür',
155
+ 'HDMI/DisplayPort kablo bağlantılarını kontrol edin - gevşek kablolar bant genişliğini düşürür',
156
156
  'GPU sürücülerinizi güncelleyin (NVIDIA, AMD, Intel)',
157
157
  'Yüksek yenileme hızının etkinleştirildiğinden emin olmak için işletim sistemi ekran ayarlarını kontrol edin',
158
158
  'Monitörünüzdeki farklı kabloları veya bağlantı noktalarını deneyin',
@@ -122,7 +122,7 @@ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
122
122
  {
123
123
  type: 'list',
124
124
  items: [
125
- '加载此检测器——测量立即开始',
125
+ '加载此检测器;测量立即开始',
126
126
  '选择快速(3秒)或稳定(10秒)测量模式',
127
127
  '从仪表盘读取显示器的 Hz 数值',
128
128
  '对照行业标准(60, 75, 120, 144, 240, 360Hz)',
@@ -152,7 +152,7 @@ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
152
152
  {
153
153
  type: 'list',
154
154
  items: [
155
- '检查 HDMI/DisplayPort 线缆连接——接触不良会降低带宽',
155
+ '检查 HDMI/DisplayPort 线缆连接;接触不良会降低带宽',
156
156
  '更新显卡驱动程序(NVIDIA, AMD, Intel)',
157
157
  '检查系统的显示设置,确保已启用高刷新率',
158
158
  '尝试更换显示器上的线缆或接口',
@@ -39,7 +39,7 @@ const S = JSON.stringify({ bp: t.btnPlay, bs: t.btnStop });
39
39
 
40
40
  <div class="tg-section">
41
41
  <div class="tg-section-header">
42
- <label class="tg-label">{t.freqLabel}</label>
42
+ <label class="tg-label" for="tg-freq">{t.freqLabel}</label>
43
43
  <div class="tg-presets">
44
44
  <button class="tg-preset" data-val="60">{t.preset60}</button>
45
45
  <button class="tg-preset" data-val="440">{t.preset440}</button>
@@ -73,7 +73,7 @@ const S = JSON.stringify({ bp: t.btnPlay, bs: t.btnStop });
73
73
  </div>
74
74
 
75
75
  <div class="tg-section">
76
- <label class="tg-label">{t.volLabel}</label>
76
+ <label class="tg-label" for="tg-vol">{t.volLabel}</label>
77
77
  <div class="tg-vol-row">
78
78
  <Icon name="mdi:volume-high" class="tg-vol-icon" />
79
79
  <input type="range" id="tg-vol" class="tg-slider tg-vol-slider" min="0" max="1" value="0.5" step="0.01" />
@@ -131,11 +131,6 @@ const S = JSON.stringify({ bp: t.btnPlay, bs: t.btnStop });
131
131
  return true;
132
132
  }
133
133
 
134
- function updateUI(playing: boolean): void {
135
- if (toggleBtn) toggleBtn.dataset.playing = playing ? 'true' : 'false';
136
- if (btnText) btnText.textContent = playing ? BS : BP;
137
- }
138
-
139
134
  function resizeCanvas(): void {
140
135
  if (!canvas) return;
141
136
  const parent = canvas.parentElement;
@@ -145,6 +140,11 @@ const S = JSON.stringify({ bp: t.btnPlay, bs: t.btnStop });
145
140
  if (canvas.height !== rect.height) canvas.height = rect.height;
146
141
  }
147
142
 
143
+ function updateUI(playing: boolean): void {
144
+ if (toggleBtn) toggleBtn.dataset.playing = playing ? 'true' : 'false';
145
+ if (btnText) btnText.textContent = playing ? BS : BP;
146
+ }
147
+
148
148
  function drawWave(w: number, h: number, data: Uint8Array): void {
149
149
  if (!canvasCtx) return;
150
150
  canvasCtx.fillStyle = 'rgb(0,0,0)';
@@ -101,7 +101,7 @@ export const content: ToolLocaleContent<ToneGeneratorUI> = {
101
101
  { type: 'title', text: 'Plage Auditive Humaine et Presbyacousie', level: 3 },
102
102
  {
103
103
  type: 'paragraph',
104
- html: "Une oreille humaine saine perçoit entre <strong>20Hz et 20kHz</strong>. Avec l'âge, la limite supérieure baisse : la plupart des adultes de plus de 50 ans ne peuvent pas entendre au-dessus de 12kHz. Le ton à 17,4kHz, connu comme le « ton moustique », est un test classique que seuls les adolescents peuvent généralement franchir.",
104
+ html: "Une oreille humaine saine perçoit entre <strong>20Hz et 20kHz</strong>. Avec l'âge, la limite supérieure baisse: la plupart des adultes de plus de 50 ans ne peuvent pas entendre au-dessus de 12kHz. Le ton à 17,4kHz, connu comme le &quot;ton moustique&quot;, est un test classique que seuls les adolescents peuvent généralement franchir.",
105
105
  },
106
106
  { type: 'title', text: 'Types d\'ondes et leurs utilisations', level: 3 },
107
107
  {
@@ -111,7 +111,7 @@ export const content: ToolLocaleContent<ToneGeneratorUI> = {
111
111
  { type: 'title', text: 'Test de haut-parleurs et nettoyage par vibration', level: 3 },
112
112
  {
113
113
  type: 'paragraph',
114
- html: "Une onde de basse fréquence (généralement <strong>165Hz</strong>) à volume maximum avec une forme carrée ou en dents de scie force le diaphragme du haut-parleur à vibrer violemment, expulsant mécaniquement les gouttes d'eau piégées dans la grille. Ne reproduisez pas des fréquences extrêmement aiguës à volume maximum pendant longtemps : même si vous ne les entendez pas, l'énergie peut endommager les tweeters de votre équipement.",
114
+ html: "Une onde de basse fréquence (généralement <strong>165Hz</strong>) à volume maximum avec une forme carrée ou en dents de scie force le diaphragme du haut-parleur à vibrer violemment, expulsant mécaniquement les gouttes d'eau piégées dans la grille. Ne reproduisez pas des fréquences extrêmement aiguës à volume maximum pendant longtemps: même si vous ne les entendez pas, l'énergie peut endommager les tweeters de votre équipement.",
115
115
  },
116
116
  ],
117
117
  ui: {
@@ -101,7 +101,7 @@ export const content: ToolLocaleContent<ToneGeneratorUI> = {
101
101
  { type: 'title', text: 'Zakres Słuchu Człowieka i Presbycusis', level: 3 },
102
102
  {
103
103
  type: 'paragraph',
104
- html: 'Zdrowe ludzkie ucho dostrzega dźwięki między <strong>20Hz a 20kHz</strong>. Z wiekiem górna granica spada: większość dorosłych powyżej 50 roku życia nie słyszy powyżej 12kHz. Ton 17,4kHz, znany jako mosquito tone”, to klasyczny test, który zazwyczaj przechodzą tylko nastolatkowie.',
104
+ html: 'Zdrowe ludzkie ucho dostrzega dźwięki między <strong>20Hz a 20kHz</strong>. Z wiekiem górna granica spada: większość dorosłych powyżej 50 roku życia nie słyszy powyżej 12kHz. Ton 17,4kHz, znany jako "mosquito tone", to klasyczny test, który zazwyczaj przechodzą tylko nastolatkowie.',
105
105
  },
106
106
  { type: 'title', text: 'Rodzaje Fal i ich Zastosowanie', level: 3 },
107
107
  {
@@ -17,7 +17,7 @@ const faqData = [
17
17
  {
18
18
  question: 'В чем разница между синусоидальной и прямоугольной волной?',
19
19
  answer:
20
- 'Синусоидальная волна -это чистый тон без гармоник (плавный и округлый). Прямоугольная волна богата нечетными гармониками и звучит гораздо более агрессивно или «цифрово». Треугольная волна находится посередине и полезна для аудиосинтеза.',
20
+ 'Синусоидальная волна -это чистый тон без гармоник (плавный и округлый). Прямоугольная волна богата нечетными гармониками и звучит гораздо более агрессивно или "цифрово". Треугольная волна находится посередине и полезна для аудиосинтеза.',
21
21
  },
22
22
  {
23
23
  question: 'Могу ли я повредить свои динамики этим инструментом?',
@@ -101,7 +101,7 @@ export const content: ToolLocaleContent<ToneGeneratorUI> = {
101
101
  { type: 'title', text: 'Диапазон человеческого слуха и пресбиакузис', level: 3 },
102
102
  {
103
103
  type: 'paragraph',
104
- html: 'Здоровое человеческое ухо воспринимает звуки в диапазоне от <strong>20 Гц до 20 кГц</strong>. С возрастом верхний предел снижается: большинство взрослых старше 50 лет не слышат звуки выше 12 кГц. Тон 17,4 кГц, известный как «комариный писк», -это классический тест, который обычно проходят только подростки.',
104
+ html: 'Здоровое человеческое ухо воспринимает звуки в диапазоне от <strong>20 Гц до 20 кГц</strong>. С возрастом верхний предел снижается: большинство взрослых старше 50 лет не слышат звуки выше 12 кГц. Тон 17,4 кГц, известный как "комариный писк", -это классический тест, который обычно проходят только подростки.',
105
105
  },
106
106
  { type: 'title', text: 'Типы волн и их использование', level: 3 },
107
107
  {
@@ -17,7 +17,7 @@ const faqData = [
17
17
  {
18
18
  question: '正弦波与方波有什么区别?',
19
19
  answer:
20
- '正弦波是没有谐波的纯音(平滑且圆润)。方波富含奇次谐波,听起来更具攻击性或更具“数字感”。三角波介于两者之间,对音频合成非常有用。',
20
+ '正弦波是没有谐波的纯音(平滑且圆润)。方波富含奇次谐波,听起来更具攻击性或更具"数字感"。三角波介于两者之间,对音频合成非常有用。',
21
21
  },
22
22
  {
23
23
  question: '这个工具会损坏我的扬声器吗?',
@@ -101,12 +101,12 @@ export const content: ToolLocaleContent<ToneGeneratorUI> = {
101
101
  { type: 'title', text: '人类听力范围与老年性耳聋', level: 3 },
102
102
  {
103
103
  type: 'paragraph',
104
- html: '健康的成年人能感知 <strong>20Hz 到 20kHz</strong> 之间的声音。随着年龄增长,上限会下降:大多数 50 岁以上的成人听不到 12kHz 以上的声音。17.4kHz 的音调(被称为“蚊音”)是一个经典的测试,通常只有青少年能通过。',
104
+ html: '健康的成年人能感知 <strong>20Hz 到 20kHz</strong> 之间的声音。随着年龄增长,上限会下降:大多数 50 岁以上的成人听不到 12kHz 以上的声音。17.4kHz 的音调(被称为"蚊音")是一个经典的测试,通常只有青少年能通过。',
105
105
  },
106
106
  { type: 'title', text: '波形类型及其用途', level: 3 },
107
107
  {
108
108
  type: 'paragraph',
109
- html: '<strong>正弦波:</strong>没有谐波的纯音,用于医疗听力测试和仪器校准。<strong>方波:</strong>富含奇次谐波,听起来像复古 8 位游戏机的声音。<strong>锯齿波:</strong>包含所有谐波,是电子音乐合成器的基础。<strong>三角波:</strong>介于正弦波和方波之间——比方波平滑,但比正弦波具有更多谐波内容。',
109
+ html: '<strong>正弦波:</strong>没有谐波的纯音,用于医疗听力测试和仪器校准。<strong>方波:</strong>富含奇次谐波,听起来像复古 8 位游戏机的声音。<strong>锯齿波:</strong>包含所有谐波,是电子音乐合成器的基础。<strong>三角波:</strong>介于正弦波和方波之间;比方波平滑,但比正弦波具有更多谐波内容。',
110
110
  },
111
111
  { type: 'title', text: '扬声器测试与振动驱动排水', level: 3 },
112
112
  {
package/src/tools.ts CHANGED
@@ -9,6 +9,6 @@ import { ESTIMADOR_SALUD_BATERIA_TOOL } from './tool/batteryHealthEstimator/inde
9
9
  import { TONE_GENERATOR_TOOL } from './tool/toneGenerator/index';
10
10
  import { REFRESH_RATE_DETECTOR_TOOL } from './tool/refreshRateDetector/index';
11
11
  import { SPECTRUM_CANVAS_TOOL } from './tool/colorAccuracyTest/index';
12
+ import { MOUSE_DOUBLE_CLICK_TEST_TOOL } from './tool/mouseDoubleClickTest/index';
12
13
 
13
- export const ALL_TOOLS: ToolDefinition[] = [PIXELES_PANTALLA_TOOL, TEST_TECLADO_TOOL, TEST_MANDO_TOOL, PROBADOR_VIBRACION_MANDO_TOOL, TEST_RATON_TOOL, ESTIMADOR_SALUD_BATERIA_TOOL, TONE_GENERATOR_TOOL, REFRESH_RATE_DETECTOR_TOOL, SPECTRUM_CANVAS_TOOL];
14
-
14
+ export const ALL_TOOLS: ToolDefinition[] = [PIXELES_PANTALLA_TOOL, TEST_TECLADO_TOOL, TEST_MANDO_TOOL, PROBADOR_VIBRACION_MANDO_TOOL, TEST_RATON_TOOL, MOUSE_DOUBLE_CLICK_TEST_TOOL, ESTIMADOR_SALUD_BATERIA_TOOL, TONE_GENERATOR_TOOL, REFRESH_RATE_DETECTOR_TOOL, SPECTRUM_CANVAS_TOOL];