{"_id":"@cantoo/cantoo-web","_rev":"4-bb570cd9a46627eb1a93ecd4eeecbd56","name":"@cantoo/cantoo-web","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@cantoo/cantoo-web","version":"1.0.0","license":"MIT","_id":"@cantoo/cantoo-web@1.0.0","maintainers":[{"name":"sharcoux","email":"f.billioud@gmail.com"},{"name":"ribeirofmatheus","email":"matheus_f.ribeiro@hotmail.com"},{"name":"matheusrdsantos","email":"matheus.r.d.s10@hotmail.com"},{"name":"gabrielnsd","email":"gabrielnsdantas@gmail.com"},{"name":"nicodemos234","email":"nicodemos54324@gmail.com"}],"dist":{"shasum":"08c54c307c598950352aafe99f22cdbabeed6378","tarball":"https://registry.npmjs.org/@cantoo/cantoo-web/-/cantoo-web-1.0.0.tgz","fileCount":5,"integrity":"sha512-cmoz4qwwAAZRvxmdiV0KkUDIPJYgUscoGHsw0ZKM9h7ywLlyyL58d6jcWt58hsLhNCYIPJhXe2VgNJhyPjQZkQ==","signatures":[{"sig":"MEUCIQC39XjZ8A9Chp5Z/abJQoGygpCZZOP22qU+wBoys0LVWAIgZRNIs5njFDHvbRDtGkgzBYyoz+IDUh3HahMakCxQjUY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20461},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"ee7c60bc092805bbf40799c7939cb34caefd50a6","scripts":{"build":"tsc && cp src/types.d.ts dist/types.d.ts"},"_npmUser":{"name":"nicodemos234","email":"nicodemos54324@gmail.com"},"_npmVersion":"10.8.2","description":"Typed loader and global definitions for Cantoo web","directories":{},"_nodeVersion":"20.17.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cantoo-web_1.0.0_1760020214510_0.23484455162323936","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@cantoo/cantoo-web","version":"1.0.1","license":"MIT","_id":"@cantoo/cantoo-web@1.0.1","maintainers":[{"name":"sharcoux","email":"f.billioud@gmail.com"},{"name":"ribeirofmatheus","email":"matheus_f.ribeiro@hotmail.com"},{"name":"matheusrdsantos","email":"matheus.r.d.s10@hotmail.com"},{"name":"gabrielnsd","email":"gabrielnsdantas@gmail.com"},{"name":"nicodemos234","email":"nicodemos54324@gmail.com"}],"dist":{"shasum":"878791cc57a9dc39aa6d68ebbbea786308494caa","tarball":"https://registry.npmjs.org/@cantoo/cantoo-web/-/cantoo-web-1.0.1.tgz","fileCount":5,"integrity":"sha512-wFehOB2g8SaAHdzHEycuwOe6nRjH1oJ+j3uFGt2Q+mIuFJFKHa1vd2zYHFllI967vrts5SUFVb23UUa2uuPzhA==","signatures":[{"sig":"MEUCIB+NRR46Jp3D7+MoeY/b8qdvhyKYwZq4uX1EBuCGEKxmAiEAiLCTE3Oc5Fr9+oYK8aglHtnSYODoPwRaUWl7IeLCz7s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22138},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"d52f9d45d1276a211341febfeb61a0d7472a0ece","scripts":{"build":"tsc && cp src/types.d.ts dist/types.d.ts"},"_npmUser":{"name":"nicodemos234","email":"nicodemos54324@gmail.com"},"_npmVersion":"10.8.2","description":"Typed loader and global definitions for Cantoo web","directories":{},"_nodeVersion":"20.17.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cantoo-web_1.0.1_1760103904970_0.4294351771935341","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@cantoo/cantoo-web","version":"1.0.2","license":"MIT","_id":"@cantoo/cantoo-web@1.0.2","maintainers":[{"name":"sharcoux","email":"f.billioud@gmail.com"},{"name":"ribeirofmatheus","email":"matheus_f.ribeiro@hotmail.com"},{"name":"matheusrdsantos","email":"matheus.r.d.s10@hotmail.com"},{"name":"gabrielnsd","email":"gabrielnsdantas@gmail.com"},{"name":"nicodemos234","email":"nicodemos54324@gmail.com"}],"dist":{"shasum":"44980c82403a2b28ffb7ba877867a81820ec8fd3","tarball":"https://registry.npmjs.org/@cantoo/cantoo-web/-/cantoo-web-1.0.2.tgz","fileCount":7,"integrity":"sha512-ZgViyux+CWv3+CwbOZ3iyRInJQlUBhhueqM/1kIsQceDQ/tegE/0KMJHnRWw4/SWkattL1IoKfTMNJZ3ePF3Pg==","signatures":[{"sig":"MEYCIQCfYLvwHn5RNI1zFs7fH7gpbOjxcBDZn0OpbuZ8H55lawIhAITSjI1ak7s//QGHQTTp4PQVyUIXQkaxw7wQhCq7Xwrw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27415},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"1184ff731a23e5196a5295f8042f3e4b385e3d8f","scripts":{"build":"tsc && cp src/types.d.ts dist/types.d.ts","prepack":"yarn build"},"_npmUser":{"name":"nicodemos234","email":"nicodemos54324@gmail.com"},"_npmVersion":"10.9.4","description":"Typed loader and global definitions for Cantoo web","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/cantoo-web_1.0.2_1774988324739_0.13302326115592344","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2025-10-09T14:30:14.442Z","modified":"2026-05-05T16:23:46.930Z","1.0.0":"2025-10-09T14:30:14.681Z","1.0.1":"2025-10-10T13:45:05.166Z","1.0.2":"2026-03-31T20:18:44.884Z"},"license":"MIT","description":"Typed loader and global definitions for Cantoo web","maintainers":[{"email":"f.billioud@gmail.com","name":"sharcoux"},{"email":"matheus_f.ribeiro@hotmail.com","name":"ribeirofmatheus"},{"email":"matheus.r.d.s10@hotmail.com","name":"matheusrdsantos"},{"email":"gabrielnsdantas@gmail.com","name":"gabrielnsd"},{"email":"felipe@cantoo.fr","name":"felipecantoo"},{"email":"nicodemos54324@gmail.com","name":"nicodemos234"}],"readme":"# cantoo-web-docs\n\nDocumentation for Cantoo Web\n\n# Intégration du script Cantoo Web\n\nCe projet permet d'ajouter facilement les fonctionnalités d'accessibilité de Cantoo Web à vos pages HTML.\n\n## 🔧 Intégration\n\nPour intégrer le script à votre site, ajoutez simplement la balise suivante dans les pages HTML où vous souhaitez l'activer :\n\n```html\n<script\n  type=\"module\"\n  src=\"https://download.cantoo.fr/cantoo-web-xxx.js\"\n  defer\n></script>\n```\n\nRemplacez `xxx` par le nom de votre projet, qui vous a été communiqué lors de notre collaboration.\n\n---\n\n## 📦 Installation via npm\n\nSi vous utilisez un environnement Node.js ou un bundler moderne (Webpack, Vite, etc.), vous pouvez installer la bibliothèque via npm :\n\n```bash\nnpm install @cantoo/cantoo-web\n```\n\nou avec yarn :\n\n```bash\nyarn add @cantoo/cantoo-web\n```\n\n### Utilisation de la fonction `loadCantoo`\n\nLa bibliothèque npm expose une fonction `loadCantoo` qui charge dynamiquement le script Cantoo Web et retourne une promesse avec l'objet global `Cantoo` :\n\n```typescript\nimport { loadCantoo } from \"@cantoo/cantoo-web\";\n\n// Charger le script Cantoo Web\nloadCantoo(\"https://download.cantoo.fr/cantoo-web-xxx.js\")\n  .then((Cantoo) => {\n    console.log(\"Cantoo Web chargé avec succès\");\n\n    // Ou charger des paramètres personnalisés\n    Cantoo.load({\n      \"vocal-dictation\": {\n        lang: \"fr-FR\",\n      },\n      \"vocal-reading\": {\n        lang: \"fr-FR\",\n        rate: 1.0,\n      },\n      \"accessibility-options\": {\n        fontSize: 16,\n        lineSpacing: 1.5,\n      },\n      \"plugin-options\": {\n        language: \"fr\",\n        activeOptions: [\n          \"vocalRecognition\",\n          \"vocalSynthesis\",\n          \"textCustomization\",\n        ],\n      },\n    });\n  })\n  .catch((error) => {\n    console.error(\"Erreur lors du chargement de Cantoo Web:\", error);\n  });\n```\n\n### Support TypeScript\n\nLa bibliothèque inclut des définitions TypeScript complètes pour l'API Cantoo Web. Vous bénéficiez ainsi de l'autocomplétion et de la vérification de types dans votre IDE :\n\n```typescript\nimport {\n  loadCantoo,\n  type Cantoo,\n  type CantooWebData,\n  type SetConfigParams,\n} from \"@cantoo/cantoo-web\";\n\n// Types disponibles pour l'objet Cantoo et ses paramètres\nconst params: CantooWebData = {\n  \"vocal-dictation\": { lang: \"fr-FR\" },\n  \"vocal-reading\": { lang: \"fr-FR\", rate: 1.0 },\n  \"accessibility-options\": {},\n  \"plugin-options\": {},\n};\n\nloadCantoo(\"https://download.cantoo.fr/cantoo-web-xxx.js\").then(\n  (cantoo: Cantoo) => {\n    cantoo.load(params);\n    const tweaks: SetConfigParams = { \"plugin-options\": { language: \"fr\" } };\n    cantoo.setConfig(tweaks);\n  },\n);\n```\n\n> **Note :** Remplacez `xxx` par le nom de votre projet dans l'URL du script.\n\n---\n\n## 🔄 Mises à jour\n\nLes mises à jour du script sont automatiques. Aucune action n'est nécessaire de votre part pour bénéficier des dernières fonctionnalités et corrections.\n\n---\n\n## 🌐 Options : Élément global Cantoo\n\nUne fois intégré, vous bénéficiez déjà de l'adaptation offerte par Cantoo Web et vous n'avez **rien à faire**. Toutefois, si vous souhaitez un niveau d'intégration plus fin, ou mettre à profit les fonctionnalités de Cantoo Web pour améliorer votre produit, le script expose un objet global nommé Cantoo contenant plusieurs fonctionnalités clés, permettant de contrôler les fonctionnalités de l'outil :\n\n```js\n/**\n * Objet global Cantoo exposé par le script Cantoo Web.\n */\ndeclare const Cantoo: {\n  speech2text: Speech2Text;\n  text2speech: Text2Speech;\n  writeTextOnInput: (spokenText: string, inputTarget?: HTMLElement) => void;\n  openCantooWebConfig: () => void;\n  formatText: (html: string) => string;\n  login: (login: string, password: string) => Promise<void>;\n  logout: () => void;\n  activate: () => void;\n  deactivate: () => void;\n  load: (params: CantooWebData) => void;\n  setConfig: (params: SetConfigParams) => void;\n  addParameterChangeListener: (listener: (params: CantooWebData) => void) => void;\n  removeParameterChangeListener: (listener: (params: CantooWebData) => void) => void;\n  addUsageEventListener: (listener: (event: UsageEvent) => void) => void;\n  removeUsageEventListener: (listener: (event: UsageEvent) => void) => void;\n};\n\n/**\n * Types de données pour la dictée vocale.\n */\ntype VocalDictationData = {\n  lang?: string;\n};\n\n/**\n * Types de données pour la lecture vocale.\n */\ntype VocalReadingData = {\n  lang?: string;\n  voice?: string;\n  rate?: number;\n  delay?: number;\n};\n\n/**\n * Types de données pour les options de plugin.\n */\ntype PluginOptionsData = {\n  textExtractionOnModal?: boolean;\n  activeOptions?: Array<'vocalRecognition' | 'vocalSynthesis' | 'textCustomization' | 'translator' | 'dictionary' | 'visualAssistance' | 'floatingBar' | 'readMode'>;\n  language?: string;\n};\n\n/**\n * Interface définissant la structure des données de configuration Cantoo Web.\n * Cette interface est un enregistrement (Record) avec des clés spécifiques.\n */\ninterface CantooWebData {\n  'vocal-dictation': VocalDictationData;\n  'vocal-reading': VocalReadingData;\n  'accessibility-options': AccessibilityOptions;\n  'plugin-options': PluginOptionsData;\n}\n\n/** Mise à jour partielle — objet ou fonction recevant la config courante. */\ntype SetConfigParams =\n  | Partial<CantooWebData>\n  | ((current: CantooWebData) => Partial<CantooWebData>);\n\n/**\n * Options d'accessibilité.\n */\ninterface AccessibilityOptions {\n  wordSpacing?: number;\n  syllableSpacing?: number;\n  lineSpacing?: number;\n  letterSpacing?: number;\n  fontSize?: number;\n  fontFamily?: string;\n\n  syllableSeparator?: '|' | '-' | '/' | '+' | '·';\n  colorByMode?: 'word' | 'syllable' | 'sound';\n  colorSet?: string[];\n  soundsColors?: { [sound: string]: string };\n  soundsBackgroundColors?: Record<string, string>;\n  specialStrategy?: {\n    type?: 'bionic' | 'bounds' | 'sounds' | 'silent';\n    bold?: boolean;\n    color?: string;\n  };\n\n  vocalSynthesis?: boolean;\n  vocalSynthesisSpeed?: number;\n  vocalSynthesisFeedbackDelay?: number;\n  vocalSynthesisKeyboardFeedback?: boolean;\n  vocalSynthesisButtonFeedback?: boolean;\n  vocalSynthesisLabelFeedback?: boolean;\n  vocalSynthesisWritingFeedback?: boolean;\n\n  magnifier?: boolean;\n  magnifierZoom?: number;\n  dictionary?: boolean;\n  translator?: boolean;\n  contrastMode?: 'highContrast' | 'darkMode';\n  invertImages?: boolean;\n  readBand?: boolean;\n  bandWidth?: number;\n  bandOpacity?: number;\n}\n```\n\n### 🗣️ speech2text — Reconnaissance vocale (dictée)\n\n```js\n/**\n * Gestion de la dictée vocale (reconnaissance vocale).\n */\ninterface Speech2Text {\n  /**\n   * Indique si la dictée est actuellement en cours.\n   */\n  isListening: boolean;\n\n  /**\n   * Démarre la reconnaissance vocale.\n   *\n   * @param onResult - Fonction appelée avec les résultats de la dictée.\n   * @param localeProp - (optionnel) Code de langue à utiliser (ex: \"fr-FR\"). Si non fourni, la langue est déduite automatiquement.\n   * @param onStartDownloadModel - (optionnel) Callback appelé au début du téléchargement d’un modèle vocal si nécessaire.\n   * @param onEndDownloadModel - (optionnel) Callback appelé à la fin du téléchargement d’un modèle vocal.\n   * @returns Une promesse qui se résout lorsque la dictée démarre.\n   * @throws Une erreur si aucun locale n’est fourni ou détectable, si la Speech API n’est pas disponible ou si les permissions sont refusées.\n   */\n  start: (\n    onResult: (results?: string[]) => void,\n    localeProp?: string,\n    onStartDownloadModel?: () => void,\n    onEndDownloadModel?: () => void\n  ) => Promise<void>;\n\n  /**\n   * Arrête la reconnaissance vocale.\n   * @returns Une promesse qui se résout lorsque la dictée est arrêtée.\n   */\n  stop: () => Promise<void>;\n}\n```\n\n### 🔊 text2speech — Synthèse vocale (lecture de texte)\n\n```js\n/**\n * Gestion de la synthèse vocale (text-to-speech).\n */\ninterface Text2Speech {\n  /**\n   * Liste toutes les voix disponibles sur le système.\n   * @returns Un tableau de voix utilisables.\n   */\n  readVoices: () => Voice[];\n\n  /**\n   * Retourne une voix à partir de son identifiant.\n   * @param voiceId - Identifiant de la voix.\n   * @returns L’objet SpeechSynthesisVoice correspondant.\n   */\n  getVoice: (voiceId: string) => SpeechSynthesisVoice;\n\n  /**\n   * Utterance en cours, si applicable.\n   */\n  utter: SpeechSynthesisUtterance;\n\n  /**\n   * Instance native de synthèse vocale, ou undefined si non disponible.\n   */\n  synth: SpeechSynthesis | undefined;\n\n  /**\n   * Lit un texte à haute voix.\n   * @param readText - Le texte à lire.\n   */\n  readText: (readText: string) => void;\n\n  /**\n   * Configure les paramètres de synthèse vocale.\n   * @param config - Objet de configuration.\n   */\n  setConfig: (config: {\n    voice: string;\n    lang: string;\n    volume?: number;\n    rate?: number;\n    pitch?: number;\n  }) => void;\n\n  /**\n   * Récupère la configuration actuelle de synthèse vocale.\n   * @returns Les paramètres configurés.\n   */\n  getConfig: () => {\n    voice: string | undefined;\n    lang: string;\n    volume: number;\n    rate: number;\n    pitch: number;\n  };\n}\n```\n\n### 🧠 writeTextOnInput — Insertion de texte dicté\n\n```js\n/**\n * Insère un texte dicté dans un champ de saisie HTML.\n *\n * @param spokenText - Le texte à insérer.\n * @param inputTarget - (optionnel) L'élément HTML cible. Si non défini, le focus actuel est utilisé.\n */\ndeclare function writeTextOnInput(spokenText: string, inputTarget?: HTMLElement): void;\n```\n\n### ⚙️ openCantooWebConfig — Ouverture de l’interface de configuration\n\n```js\n/**\n * Ouvre l’interface de configuration utilisateur Cantoo Web.\n */\ndeclare function openCantooWebConfig(): void;\n```\n\n### 🎨 formatText — Application des préférences d’accessibilité\n\n```js\n/**\n * Applique les préférences d’accessibilité de l’utilisateur à un contenu HTML.\n *\n * @param html - Le HTML d’origine.\n * @returns Le HTML transformé avec les préférences appliquées.\n */\ndeclare function formatText(html: string): string;\n```\n\n### 🔐 login — Connexion utilisateur\n\n```js\n/**\n * Connecte un utilisateur à la base de données Cantoo.\n *\n * ⚠️ Un protocole doit être mis en place avec l’équipe Cantoo pour permettre l’enregistrement.\n *\n * @param login - Identifiant de l'utilisateur.\n * @param password - Mot de passe de l'utilisateur.\n * @returns Une promesse résolue à la fin de la connexion.\n */\ndeclare function login(login: string, password: string): Promise<void>;\n\n/**\n * Déconnecte l’utilisateur actuellement connecté.\n */\ndeclare function logout(): void;\n```\n\n### 🟢 activate — Activer Cantoo Web\n\n```js\n/**\n * Active toutes les fonctionnalités de Cantoo Web sur la page.\n */\ndeclare function activate(): void;\n```\n\n### 🔴 deactivate — Désactiver Cantoo Web\n\n```js\n/**\n * Désactive toutes les fonctionnalités de Cantoo Web sur la page.\n */\ndeclare function deactivate(): void;\n```\n\n### 📥 load — Charger les paramètres de configuration\n\n```js\n/**\n * Charge les paramètres de configuration de Cantoo Web.\n *\n * @param params - Les paramètres de configuration à charger.\n */\ndeclare function load(params: CantooWebData): void;\n```\n\n### 🔧 setConfig — Mettre à jour partiellement la configuration\n\nContrairement à `load`, qui remplace le jeu de paramètres via l’événement `cantooLoadParameters`, **`setConfig`** applique une **mise à jour partielle** : seules les sections et champs fournis sont modifiés ; le reste de la configuration en cours est conservé. Pour chaque section (dictée, lecture, accessibilité, options du plugin), les nouvelles valeurs sont **fusionnées** avec les valeurs déjà stockées (fusion superficielle d’objet).\n\n`setConfig` accepte deux formes :\n\n- **Un objet** `Partial<CantooWebData>` — les sections fournies sont fusionnées directement.\n- **Une fonction** `(current: CantooWebData) => Partial<CantooWebData>` — reçoit la configuration courante et retourne les sections à modifier (comme un `setState` React).\n\nLe traitement prend effet lorsque l’extension a fini de charger ses paramètres initiaux ; techniquement, `setConfig` envoie un `CustomEvent` nommé `cantooSetConfig` sur `document`, avec le même détail que l’objet passé en argument.\n\n```js\n/**\n * Met à jour partiellement la configuration Cantoo Web (merge par section).\n *\n * @param params - Objet partiel ou fonction recevant la config courante.\n */\ndeclare function setConfig(params: SetConfigParams): void;\n```\n\n**Exemples :**\n\n```typescript\n// Uniquement la taille de police et la vitesse de lecture, sans toucher au reste\nwindow.Cantoo.setConfig({\n  \"accessibility-options\": { fontSize: 18 },\n  \"vocal-reading\": { rate: 1.1 },\n});\n```\n\n```typescript\n// Activer le mode sombre\nwindow.Cantoo.setConfig({\n  \"accessibility-options\": { contrastMode: \"darkMode\" },\n});\n```\n\n```typescript\n// Activer le mode haut contraste\nwindow.Cantoo.setConfig({\n  \"accessibility-options\": { contrastMode: \"highContrast\" },\n});\n```\n\n```typescript\n// Activer la loupe (magnifier)\nwindow.Cantoo.setConfig({\n  \"accessibility-options\": { magnifier: true, magnifierZoom: 2 },\n});\n```\n\n```typescript\n// Activer le bandeau de lecture\nwindow.Cantoo.setConfig({\n  \"accessibility-options\": { readBand: true, bandWidth: 80, bandOpacity: 0.5 },\n});\n```\n\n```typescript\n// Inverser les images (utile en combinaison avec le mode sombre)\nwindow.Cantoo.setConfig({\n  \"accessibility-options\": { contrastMode: \"darkMode\", invertImages: true },\n});\n```\n\n```typescript\n// Utiliser une fonction pour lire la config courante (comme un setState React)\nwindow.Cantoo.setConfig((current) => {\n  const rate = current[\"vocal-reading\"]?.rate ?? 1;\n  return {\n    \"vocal-reading\": { rate: Math.min(rate + 0.1, 2) },\n  };\n});\n```\n\n```typescript\n// Toggle du mode sombre en fonction de l'état actuel\nwindow.Cantoo.setConfig((current) => ({\n  \"accessibility-options\": {\n    contrastMode:\n      current[\"accessibility-options\"]?.contrastMode === \"darkMode\"\n        ? undefined\n        : \"darkMode\",\n  },\n}));\n```\n\n### 👂 addParameterChangeListener — Ajouter un écouteur de changement de paramètres\n\n```js\n/**\n * Ajoute un écouteur pour les changements de paramètres de configuration.\n *\n * @param listener - Fonction appelée lors des changements de paramètres.\n */\ndeclare function addParameterChangeListener(\n  listener: (params: CantooWebData) => void\n): void;\n```\n\n### 🗑️ removeParameterChangeListener — Supprimer un écouteur de changement de paramètres\n\n```js\n/**\n * Supprime un écouteur de changement de paramètres précédemment ajouté.\n *\n * @param listener - L'écouteur à supprimer.\n */\ndeclare function removeParameterChangeListener(\n  listener: (params: CantooWebData) => void\n): void;\n```\n\n### 📊 addUsageEventListener — Ajouter un écouteur d'événements d'utilisation\n\n```js\n/**\n * Type d'événement d'utilisation de Cantoo Web.\n */\ntype UsageEvent =\n  | \"CANTOO_READ_TEXT\"\n  | \"CANTOO_ADAPT_TEXT\"\n  | \"CANTOO_DICTATE_TEXT\"\n  | \"CANTOO_TRANSLATED_TEXT\"\n  | \"CANTOO_DEFINED_TEXT\";\n\n/**\n * Ajoute un écouteur pour les événements d'utilisation de Cantoo Web.\n * Permet de suivre les actions effectuées par les utilisateurs.\n *\n * @param listener - Fonction appelée lors des événements d'utilisation.\n */\ndeclare function addUsageEventListener(\n  listener: (event: UsageEvent) => void\n): void;\n```\n\n**Exemple d'utilisation :**\n\n```typescript\nCantoo.addUsageEventListener((event) => {\n  console.log(\"Événement d'utilisation:\", event);\n  // Exemple: \"CANTOO_READ_TEXT\" lorsqu'un utilisateur utilise la synthèse vocale\n});\n```\n\n### 🗑️ removeUsageEventListener — Supprimer un écouteur d'événements d'utilisation\n\n```js\n/**\n * Supprime un écouteur d'événements d'utilisation précédemment ajouté.\n *\n * @param listener - L'écouteur à supprimer.\n */\ndeclare function removeUsageEventListener(\n  listener: (event: UsageEvent) => void\n): void;\n```\n\n---\n\n## 🎯 Désactivation sur certains éléments\n\n### 🚫 Classe CSS `cantoo-ignore-vocal-recognition` - Désactiver la reconnaissance vocale\n\nSi vous souhaitez gérer manuellement la dictée vocale dans certains champs de saisie, vous pouvez utiliser la classe CSS `cantoo-ignore-vocal-recognition`. Vous pourrez alors créer votre propre bouton pour déclencher et arrêter la reconnaissance vocale et l'ajouter à votre propre barre d'outils\n\n```html\n<!-- Cet input n'aura pas le bouton de dictée vocale inséré automatiquement -->\n<input type=\"text\" class=\"cantoo-ignore-vocal-recognition\" />\n```\n\nCette classe empêche l’insertion automatique du bouton de dictée vocale dans l’élément ciblé. Vous pouvez ainsi utiliser les fonctions de l’API `window.Cantoo.speech2text` pour implémenter votre propre logique de traitement, et placer le bouton dans votre barre d’outils ou à l’emplacement de votre choix.\n\n### 🚫 Classe CSS `cantoo-ignore-hover-events` - Désactiver la barre d'outils au survol\n\nSi vous souhaitez empêcher l’affichage du Tooltip Cantoo lors du survol d’un élément ou de ses enfants, ajoutez la classe CSS `cantoo-ignore-hover-events` à cet élément.\n\n```html\n<!-- Aucun Tooltip Cantoo ne sera affiché lors du survol de cet élément ou de ses enfants -->\n<div class=\"cantoo-ignore-hover-events\">...</div>\n```\n\nCette classe désactive l’apparition du Tooltip Cantoo sur l’élément ciblé ainsi que sur tous ses descendants lors d’un survol avec la souris.\n\n> ℹ️ **Note :** Il reste possible de sélectionner du texte dans ces éléments pour l’adapter, même si le Tooltip n’apparaît pas au survol.\n\n### 🚫 Classe CSS `cantoo-ignore-all` - Désactiver complètement Cantoo Web sur un élément\n\nSi vous souhaitez empêcher toute interaction Cantoo Web (barre d'outils au survol et barre d'outils lors de la sélection) sur un élément, ajoutez la classe CSS `cantoo-ignore-all` à cet élément.\n\n```html\n<!-- Cantoo Web sera totalement désactivé sur cet élément -->\n<div class=\"cantoo-ignore-all\">...</div>\n```\n\nCette classe désactive à la fois l’apparition du Tooltip Cantoo au survol et l’apparition de la barre d'outils lors de la sélection sur l’élément ciblé et ses descendants.\n\n---\n\n## ❓ Assistance\n\nPour toute question ou pour obtenir un nom de projet, veuillez contacter notre équipe Cantoo.\n\n---\n\n© Cantoo - Tous droits réservés.\n","readmeFilename":"README.md"}