Skip to content

About

Documentation for Cantoo Web

Resources

Stars

0 stars

Watchers

2 watching

Forks

Latest commit

 

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cantoo-web-docs

Documentation for Cantoo Web

Intégration du script Cantoo Web

Ce projet permet d'ajouter facilement les fonctionnalités d'accessibilité de Cantoo Web à vos pages HTML.

🔧 IntĂ©gration

Pour intĂ©grer le script Ă  votre site, ajoutez simplement la balise suivante dans les pages HTML oĂč vous souhaitez l'activer :

<script
  type="module"
  src="https://download.cantoo.fr/cantoo-web-xxx.js"
  defer
></script>

Remplacez xxx par le nom de votre projet, qui vous a été communiqué lors de notre collaboration.


📩 Installation via npm

Si vous utilisez un environnement Node.js ou un bundler moderne (Webpack, Vite, etc.), vous pouvez installer la bibliothĂšque via npm :

npm install @cantoo/cantoo-web

ou avec yarn :

yarn add @cantoo/cantoo-web

Utilisation de la fonction loadCantoo

La bibliothĂšque npm expose une fonction loadCantoo qui charge dynamiquement le script Cantoo Web et retourne une promesse avec l'objet global Cantoo :

import { loadCantoo } from "@cantoo/cantoo-web";

// Charger le script Cantoo Web
loadCantoo("https://download.cantoo.fr/cantoo-web-xxx.js")
  .then((Cantoo) => {
    console.log("Cantoo Web chargé avec succÚs");

    // Ou charger des paramÚtres personnalisés
    Cantoo.load({
      "vocal-dictation": {
        lang: "fr-FR",
      },
      "vocal-reading": {
        lang: "fr-FR",
        rate: 1.0,
      },
      "accessibility-options": {
        fontSize: 16,
        lineSpacing: 1.5,
      },
      "plugin-options": {
        language: "fr",
        activeOptions: [
          "vocalRecognition",
          "vocalSynthesis",
          "textCustomization",
        ],
      },
    });
  })
  .catch((error) => {
    console.error("Erreur lors du chargement de Cantoo Web:", error);
  });

Support TypeScript

La 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 :

import {
  loadCantoo,
  type Cantoo,
  type CantooWebData,
  type SetConfigParams,
} from "@cantoo/cantoo-web";

// Types disponibles pour l'objet Cantoo et ses paramĂštres
const params: CantooWebData = {
  "vocal-dictation": { lang: "fr-FR" },
  "vocal-reading": { lang: "fr-FR", rate: 1.0 },
  "accessibility-options": {},
  "plugin-options": {},
};

loadCantoo("https://download.cantoo.fr/cantoo-web-xxx.js").then(
  (cantoo: Cantoo) => {
    cantoo.load(params);
    const tweaks: SetConfigParams = { "plugin-options": { language: "fr" } };
    cantoo.setConfig(tweaks);
  },
);

Note : Remplacez xxx par le nom de votre projet dans l'URL du script.


🔄 Mises à jour

Les 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.


🌐 Options : ÉlĂ©ment global Cantoo

Une 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 :

/**
 * Objet global Cantoo exposé par le script Cantoo Web.
 */
declare const Cantoo: {
  speech2text: Speech2Text;
  text2speech: Text2Speech;
  writeTextOnInput: (spokenText: string, inputTarget?: HTMLElement) => void;
  openCantooWebConfig: () => void;
  formatText: (html: string) => string;
  login: (login: string, password: string) => Promise<void>;
  logout: () => void;
  activate: () => void;
  deactivate: () => void;
  load: (params: CantooWebData) => void;
  setConfig: (params: SetConfigParams) => void;
  addParameterChangeListener: (listener: (params: CantooWebData) => void) => void;
  removeParameterChangeListener: (listener: (params: CantooWebData) => void) => void;
  addUsageEventListener: (listener: (event: UsageEvent) => void) => void;
  removeUsageEventListener: (listener: (event: UsageEvent) => void) => void;
};

/**
 * Types de données pour la dictée vocale.
 */
type VocalDictationData = {
  lang?: string;
};

/**
 * Types de données pour la lecture vocale.
 */
type VocalReadingData = {
  lang?: string;
  voice?: string;
  rate?: number;
  delay?: number;
};

/**
 * Types de données pour les options de plugin.
 */
type PluginOptionsData = {
  textExtractionOnModal?: boolean;
  activeOptions?: Array<'vocalRecognition' | 'vocalSynthesis' | 'textCustomization' | 'translator' | 'dictionary' | 'visualAssistance' | 'floatingBar' | 'readMode'>;
  language?: string;
};

/**
 * Interface définissant la structure des données de configuration Cantoo Web.
 * Cette interface est un enregistrement (Record) avec des clés spécifiques.
 */
interface CantooWebData {
  'vocal-dictation': VocalDictationData;
  'vocal-reading': VocalReadingData;
  'accessibility-options': AccessibilityOptions;
  'plugin-options': PluginOptionsData;
}

/** Mise à jour partielle — objet ou fonction recevant la config courante. */
type SetConfigParams =
  | Partial<CantooWebData>
  | ((current: CantooWebData) => Partial<CantooWebData>);

/**
 * Options d'accessibilité.
 */
interface AccessibilityOptions {
  wordSpacing?: number;
  syllableSpacing?: number;
  lineSpacing?: number;
  letterSpacing?: number;
  fontSize?: number;
  fontFamily?: string;

  syllableSeparator?: '|' | '-' | '/' | '+' | '·';
  colorByMode?: 'word' | 'syllable' | 'sound';
  colorSet?: string[];
  soundsColors?: { [sound: string]: string };
  soundsBackgroundColors?: Record<string, string>;
  specialStrategy?: {
    type?: 'bionic' | 'bounds' | 'sounds' | 'silent';
    bold?: boolean;
    color?: string;
  };

  vocalSynthesis?: boolean;
  vocalSynthesisSpeed?: number;
  vocalSynthesisFeedbackDelay?: number;
  vocalSynthesisKeyboardFeedback?: boolean;
  vocalSynthesisButtonFeedback?: boolean;
  vocalSynthesisLabelFeedback?: boolean;
  vocalSynthesisWritingFeedback?: boolean;

  magnifier?: boolean;
  magnifierZoom?: number;
  dictionary?: boolean;
  translator?: boolean;
  contrastMode?: 'highContrast' | 'darkMode';
  invertImages?: boolean;
  readBand?: boolean;
  bandWidth?: number;
  bandOpacity?: number;
}

đŸ—Łïž speech2text — Reconnaissance vocale (dictĂ©e)

/**
 * Gestion de la dictée vocale (reconnaissance vocale).
 */
interface Speech2Text {
  /**
   * Indique si la dictée est actuellement en cours.
   */
  isListening: boolean;

  /**
   * Démarre la reconnaissance vocale.
   *
   * @param onResult - Fonction appelée avec les résultats de la dictée.
   * @param localeProp - (optionnel) Code de langue à utiliser (ex: "fr-FR"). Si non fourni, la langue est déduite automatiquement.
   * @param onStartDownloadModel - (optionnel) Callback appelĂ© au dĂ©but du tĂ©lĂ©chargement d’un modĂšle vocal si nĂ©cessaire.
   * @param onEndDownloadModel - (optionnel) Callback appelĂ© Ă  la fin du tĂ©lĂ©chargement d’un modĂšle vocal.
   * @returns Une promesse qui se résout lorsque la dictée démarre.
   * @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.
   */
  start: (
    onResult: (results?: string[]) => void,
    localeProp?: string,
    onStartDownloadModel?: () => void,
    onEndDownloadModel?: () => void
  ) => Promise<void>;

  /**
   * ArrĂȘte la reconnaissance vocale.
   * @returns Une promesse qui se rĂ©sout lorsque la dictĂ©e est arrĂȘtĂ©e.
   */
  stop: () => Promise<void>;
}

🔊 text2speech — Synthùse vocale (lecture de texte)

/**
 * Gestion de la synthĂšse vocale (text-to-speech).
 */
interface Text2Speech {
  /**
   * Liste toutes les voix disponibles sur le systĂšme.
   * @returns Un tableau de voix utilisables.
   */
  readVoices: () => Voice[];

  /**
   * Retourne une voix Ă  partir de son identifiant.
   * @param voiceId - Identifiant de la voix.
   * @returns L’objet SpeechSynthesisVoice correspondant.
   */
  getVoice: (voiceId: string) => SpeechSynthesisVoice;

  /**
   * Utterance en cours, si applicable.
   */
  utter: SpeechSynthesisUtterance;

  /**
   * Instance native de synthĂšse vocale, ou undefined si non disponible.
   */
  synth: SpeechSynthesis | undefined;

  /**
   * Lit un texte Ă  haute voix.
   * @param readText - Le texte Ă  lire.
   */
  readText: (readText: string) => void;

  /**
   * Configure les paramĂštres de synthĂšse vocale.
   * @param config - Objet de configuration.
   */
  setConfig: (config: {
    voice: string;
    lang: string;
    volume?: number;
    rate?: number;
    pitch?: number;
  }) => void;

  /**
   * RécupÚre la configuration actuelle de synthÚse vocale.
   * @returns Les paramÚtres configurés.
   */
  getConfig: () => {
    voice: string | undefined;
    lang: string;
    volume: number;
    rate: number;
    pitch: number;
  };
}

🧠 writeTextOnInput — Insertion de texte dictĂ©

/**
 * InsÚre un texte dicté dans un champ de saisie HTML.
 *
 * @param spokenText - Le texte à insérer.
 * @param inputTarget - (optionnel) L'élément HTML cible. Si non défini, le focus actuel est utilisé.
 */
declare function writeTextOnInput(spokenText: string, inputTarget?: HTMLElement): void;

⚙ openCantooWebConfig — Ouverture de l’interface de configuration

/**
 * Ouvre l’interface de configuration utilisateur Cantoo Web.
 */
declare function openCantooWebConfig(): void;

🎹 formatText — Application des prĂ©fĂ©rences d’accessibilitĂ©

/**
 * Applique les prĂ©fĂ©rences d’accessibilitĂ© de l’utilisateur Ă  un contenu HTML.
 *
 * @param html - Le HTML d’origine.
 * @returns Le HTML transformé avec les préférences appliquées.
 */
declare function formatText(html: string): string;

🔐 login — Connexion utilisateur

/**
 * Connecte un utilisateur à la base de données Cantoo.
 *
 * ⚠ Un protocole doit ĂȘtre mis en place avec l’équipe Cantoo pour permettre l’enregistrement.
 *
 * @param login - Identifiant de l'utilisateur.
 * @param password - Mot de passe de l'utilisateur.
 * @returns Une promesse résolue à la fin de la connexion.
 */
declare function login(login: string, password: string): Promise<void>;

/**
 * DĂ©connecte l’utilisateur actuellement connectĂ©.
 */
declare function logout(): void;

🟱 activate — Activer Cantoo Web

/**
 * Active toutes les fonctionnalités de Cantoo Web sur la page.
 */
declare function activate(): void;

🔮 deactivate — DĂ©sactiver Cantoo Web

/**
 * Désactive toutes les fonctionnalités de Cantoo Web sur la page.
 */
declare function deactivate(): void;

đŸ“„ load — Charger les paramĂštres de configuration

/**
 * Charge les paramĂštres de configuration de Cantoo Web.
 *
 * @param params - Les paramĂštres de configuration Ă  charger.
 */
declare function load(params: CantooWebData): void;

🔧 setConfig — Mettre à jour partiellement la configuration

Contrairement Ă  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).

setConfig accepte deux formes :

  • Un objet Partial<CantooWebData> — les sections fournies sont fusionnĂ©es directement.
  • Une fonction (current: CantooWebData) => Partial<CantooWebData> — reçoit la configuration courante et retourne les sections Ă  modifier (comme un setState React).

Le 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.

/**
 * Met Ă  jour partiellement la configuration Cantoo Web (merge par section).
 *
 * @param params - Objet partiel ou fonction recevant la config courante.
 */
declare function setConfig(params: SetConfigParams): void;

Exemples :

// Uniquement la taille de police et la vitesse de lecture, sans toucher au reste
window.Cantoo.setConfig({
  "accessibility-options": { fontSize: 18 },
  "vocal-reading": { rate: 1.1 },
});
// Activer le mode sombre
window.Cantoo.setConfig({
  "accessibility-options": { contrastMode: "darkMode" },
});
// Activer le mode haut contraste
window.Cantoo.setConfig({
  "accessibility-options": { contrastMode: "highContrast" },
});
// Activer la loupe (magnifier)
window.Cantoo.setConfig({
  "accessibility-options": { magnifier: true, magnifierZoom: 2 },
});
// Activer le bandeau de lecture
window.Cantoo.setConfig({
  "accessibility-options": { readBand: true, bandWidth: 80, bandOpacity: 0.5 },
});
// Inverser les images (utile en combinaison avec le mode sombre)
window.Cantoo.setConfig({
  "accessibility-options": { contrastMode: "darkMode", invertImages: true },
});
// Utiliser une fonction pour lire la config courante (comme un setState React)
window.Cantoo.setConfig((current) => {
  const rate = current["vocal-reading"]?.rate ?? 1;
  return {
    "vocal-reading": { rate: Math.min(rate + 0.1, 2) },
  };
});
// Toggle du mode sombre en fonction de l'état actuel
window.Cantoo.setConfig((current) => ({
  "accessibility-options": {
    contrastMode:
      current["accessibility-options"]?.contrastMode === "darkMode"
        ? undefined
        : "darkMode",
  },
}));

👂 addParameterChangeListener — Ajouter un Ă©couteur de changement de paramĂštres

/**
 * Ajoute un écouteur pour les changements de paramÚtres de configuration.
 *
 * @param listener - Fonction appelée lors des changements de paramÚtres.
 */
declare function addParameterChangeListener(
  listener: (params: CantooWebData) => void
): void;

đŸ—‘ïž removeParameterChangeListener — Supprimer un Ă©couteur de changement de paramĂštres

/**
 * Supprime un écouteur de changement de paramÚtres précédemment ajouté.
 *
 * @param listener - L'écouteur à supprimer.
 */
declare function removeParameterChangeListener(
  listener: (params: CantooWebData) => void
): void;

📊 addUsageEventListener — Ajouter un Ă©couteur d'Ă©vĂ©nements d'utilisation

/**
 * Type d'événement d'utilisation de Cantoo Web.
 */
type UsageEvent =
  | "CANTOO_READ_TEXT"
  | "CANTOO_ADAPT_TEXT"
  | "CANTOO_DICTATE_TEXT"
  | "CANTOO_TRANSLATED_TEXT"
  | "CANTOO_DEFINED_TEXT";

/**
 * Ajoute un écouteur pour les événements d'utilisation de Cantoo Web.
 * Permet de suivre les actions effectuées par les utilisateurs.
 *
 * @param listener - Fonction appelée lors des événements d'utilisation.
 */
declare function addUsageEventListener(
  listener: (event: UsageEvent) => void
): void;

Exemple d'utilisation :

Cantoo.addUsageEventListener((event) => {
  console.log("ÉvĂ©nement d'utilisation:", event);
  // Exemple: "CANTOO_READ_TEXT" lorsqu'un utilisateur utilise la synthĂšse vocale
});

đŸ—‘ïž removeUsageEventListener — Supprimer un Ă©couteur d'Ă©vĂ©nements d'utilisation

/**
 * Supprime un écouteur d'événements d'utilisation précédemment ajouté.
 *
 * @param listener - L'écouteur à supprimer.
 */
declare function removeUsageEventListener(
  listener: (event: UsageEvent) => void
): void;

🎯 DĂ©sactivation sur certains Ă©lĂ©ments

đŸš« Classe CSS cantoo-ignore-vocal-recognition - DĂ©sactiver la reconnaissance vocale

Si 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

<!-- Cet input n'aura pas le bouton de dictée vocale inséré automatiquement -->
<input type="text" class="cantoo-ignore-vocal-recognition" />

Cette 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.

đŸš« Classe CSS cantoo-ignore-hover-events - DĂ©sactiver la barre d'outils au survol

Si 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.

<!-- Aucun Tooltip Cantoo ne sera affiché lors du survol de cet élément ou de ses enfants -->
<div class="cantoo-ignore-hover-events">...</div>

Cette 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.

â„č 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.

đŸš« Classe CSS cantoo-ignore-all - DĂ©sactiver complĂštement Cantoo Web sur un Ă©lĂ©ment

Si 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.

<!-- Cantoo Web sera totalement désactivé sur cet élément -->
<div class="cantoo-ignore-all">...</div>

Cette 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.


❓ Assistance

Pour toute question ou pour obtenir un nom de projet, veuillez contacter notre équipe Cantoo.


© Cantoo - Tous droits réservés.

About

Documentation for Cantoo Web

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages