[{"data":1,"prerenderedAt":848},["ShallowReactive",2],{"\u002Fv5\u002Fdodock\u002Fdeveloppeurs\u002Fcomposants-ui\u002Fcomposant-richtext":3,"section:\u002Fv5\u002Fdodock\u002Fdeveloppeurs\u002Fcomposants-ui\u002Fcomposant-richtext":847},{"id":4,"title":5,"body":6,"description":835,"extension":836,"meta":837,"navigation":505,"path":843,"seo":844,"stem":845,"__hash__":846},"docs\u002F1.v5\u002F3.dodock\u002F10.developpeurs\u002F03.composants-ui\u002Fcomposant-richtext.md","Composant Composer",{"type":7,"value":8,"toc":817},"minimark",[9,14,31,36,43,47,56,84,87,92,97,118,238,242,246,263,284,334,341,351,354,362,366,379,383,389,393,416,420,427,434,449,452,458,462,676,715,719,726,729,810,813],[10,11,13],"h1",{"id":12},"composer","Composer",[15,16,17,18,21,22,26,27,30],"p",{},"Le composant ",[19,20,13],"strong",{}," fournit une API déclarative permettant de construire des interfaces de saisie d'e-mail ou de commentaire. Il expose deux sous-composants prêts à l'emploi : ",[23,24,25],"code",{},"EmailComposer"," pour rédiger des e-mails (champs De \u002F À \u002F Cc \u002F Cci, sujet, pièces jointes) et ",[23,28,29],{},"CommentComposer"," pour rédiger des commentaires. Chaque sous-composant gère lui-même sa barre de formatage, la sélection des destinataires sous forme de jetons, le glisser-déposer des destinataires d'une ligne à l'autre et les interactions clavier.",[32,33,35],"h2",{"id":34},"bon-à-savoir","Bon à savoir",[15,37,38,39,42],{},"Ce composant Vue fait partie du paquet ",[23,40,41],{},"@framework\u002Fui",". Il sert aux applications Vue et aux vues personnalisées (portail, page sur mesure). La fenêtre d'e-mail des formulaires du bureau est un autre composant.",[32,44,46],{"id":45},"api-commune","API commune",[15,48,49,50,52,53,55],{},"Les deux sous-composants (",[23,51,25],{}," et ",[23,54,29],{},") partagent une API commune :",[57,58,59,78],"ul",{},[60,61,62,65,66,73,74,77],"li",{},[23,63,64],{},"extensions"," : permet de fournir des ",[67,68,72],"a",{"href":69,"rel":70},"https:\u002F\u002Ftiptap.dev",[71],"nofollow","extensions Tiptap"," additionnelles. Les extensions hôtes sont ajoutées ",[19,75,76],{},"après"," le kit de texte riche intégré, ce qui permet de surcharger ses valeurs par défaut.",[60,79,80,83],{},[23,81,82],{},"max-attachments"," : nombre maximal de pièces jointes autorisées (10 par défaut).",[32,85,25],{"id":86},"emailcomposer",[15,88,89,91],{},[23,90,25],{}," gère la rédaction d'un e-mail complet : champs d'en-tête, sujet, corps du message et pièces jointes.",[93,94,96],"h3",{"id":95},"visibilité-des-champs-den-tête","Visibilité des champs d'en-tête",[15,98,99,100,103,104,52,107,110,111,52,114,117],{},"Chaque champ d'en-tête dispose d'un prop booléen pour afficher ou masquer sa ligne. Les champs ",[19,101,102],{},"À",", ",[19,105,106],{},"Cc",[19,108,109],{},"Cci"," sont visibles par défaut ; les champs ",[19,112,113],{},"De",[19,115,116],{},"Sujet"," sont masqués par défaut.",[119,120,125],"pre",{"className":121,"code":122,"language":123,"meta":124,"style":124},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003CEmailComposer\n  show-from\n  show-subject\n  :show-bcc=\"false\"\n  v-model:to=\"to\"\n  v-model:cc=\"cc\"\n  @submit=\"onSend\"\n\u002F>\n","vue","",[23,126,127,140,147,153,175,196,214,232],{"__ignoreMap":124},[128,129,132,136],"span",{"class":130,"line":131},"line",1,[128,133,135],{"class":134},"sMK4o","\u003C",[128,137,139],{"class":138},"swJcz","EmailComposer\n",[128,141,143],{"class":130,"line":142},2,[128,144,146],{"class":145},"spNyl","  show-from\n",[128,148,150],{"class":130,"line":149},3,[128,151,152],{"class":145},"  show-subject\n",[128,154,156,159,162,165,168,172],{"class":130,"line":155},4,[128,157,158],{"class":134},"  :",[128,160,161],{"class":145},"show-bcc",[128,163,164],{"class":134},"=",[128,166,167],{"class":134},"\"",[128,169,171],{"class":170},"sfNiH","false",[128,173,174],{"class":134},"\"\n",[128,176,178,181,184,187,189,191,194],{"class":130,"line":177},5,[128,179,180],{"class":145},"  v-model",[128,182,183],{"class":134},":",[128,185,186],{"class":145},"to",[128,188,164],{"class":134},[128,190,167],{"class":134},[128,192,186],{"class":193},"sTEyZ",[128,195,174],{"class":134},[128,197,199,201,203,206,208,210,212],{"class":130,"line":198},6,[128,200,180],{"class":145},[128,202,183],{"class":134},[128,204,205],{"class":145},"cc",[128,207,164],{"class":134},[128,209,167],{"class":134},[128,211,205],{"class":193},[128,213,174],{"class":134},[128,215,217,220,223,225,227,230],{"class":130,"line":216},7,[128,218,219],{"class":134},"  @",[128,221,222],{"class":145},"submit",[128,224,164],{"class":134},[128,226,167],{"class":134},[128,228,229],{"class":193},"onSend",[128,231,174],{"class":134},[128,233,235],{"class":130,"line":234},8,[128,236,237],{"class":193},"\u002F>\n",[239,240,241],"mermaid",{},"\nflowchart LR\n  A[show-from] --> B[Champ De]\n  C[show-to] --> D[Champ À]\n  E[show-cc] --> F[Champ Cc]\n  G[show-bcc] --> H[Champ Cci]\n  I[show-subject] --> J[Champ Sujet]\n",[93,243,245],{"id":244},"modèles-de-données-pour-les-destinataires","Modèles de données pour les destinataires",[15,247,248,249,103,252,52,255,258,259,262],{},"Les destinataires sont liés individuellement via trois modèles distincts : ",[23,250,251],{},"v-model:to",[23,253,254],{},"v-model:cc",[23,256,257],{},"v-model:bcc",". Chacun attend un tableau d'objets ",[23,260,261],{},"Recipient",".",[15,264,265,266,269,270,103,273,52,276,279,280,283],{},"Le payload émis lors de l'événement ",[23,267,268],{},"@submit"," est aplati : lisez ",[23,271,272],{},"payload.to",[23,274,275],{},"payload.cc",[23,277,278],{},"payload.bcc"," directement (il n'existe plus de clé ",[23,281,282],{},"payload.recipients",").",[119,285,289],{"className":286,"code":287,"language":288,"meta":124,"style":124},"language-js shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","function onSend(payload) {\n  \u002F\u002F payload.to -> array de destinataires principaux\n  \u002F\u002F payload.cc -> array de destinataires en copie\n  \u002F\u002F payload.bcc -> array de destinataires en copie cachée\n}\n","js",[23,290,291,313,319,324,329],{"__ignoreMap":124},[128,292,293,296,300,303,307,310],{"class":130,"line":131},[128,294,295],{"class":145},"function",[128,297,299],{"class":298},"s2Zo4"," onSend",[128,301,302],{"class":134},"(",[128,304,306],{"class":305},"sHdIc","payload",[128,308,309],{"class":134},")",[128,311,312],{"class":134}," {\n",[128,314,315],{"class":130,"line":142},[128,316,318],{"class":317},"sHwdD","  \u002F\u002F payload.to -> array de destinataires principaux\n",[128,320,321],{"class":130,"line":149},[128,322,323],{"class":317},"  \u002F\u002F payload.cc -> array de destinataires en copie\n",[128,325,326],{"class":130,"line":155},[128,327,328],{"class":317},"  \u002F\u002F payload.bcc -> array de destinataires en copie cachée\n",[128,330,331],{"class":130,"line":177},[128,332,333],{"class":134},"}\n",[93,335,337,338],{"id":336},"slot-header","Slot ",[23,339,340],{},"#header",[15,342,343,344,346,347,350],{},"Le slot ",[23,345,340],{}," permet de remplacer entièrement la zone d'en-tête. Lorsqu'il est utilisé, les props ",[23,348,349],{},"show-*"," n'ont plus d'effet. Ce slot est utile pour insérer des champs personnalisés ou une mise en page spécifique.",[32,352,29],{"id":353},"commentcomposer",[15,355,356,358,359,361],{},[23,357,29],{}," est une variante simplifiée du ",[23,360,25],{}," : il n'expose ni champs d'en-tête, ni sujet, ni destinataires. Il gère uniquement la saisie d'un texte riche et la gestion des pièces jointes. Utilisez-le dans les fils de commentaires ou les zones de réponse rapide.",[32,363,365],{"id":364},"sélection-des-destinataires","Sélection des destinataires",[15,367,368,369,372,373,375,376,378],{},"Les destinataires apparaissent sous forme de ",[19,370,371],{},"jetons"," (chips) dans chaque champ. Le composant gère lui-même la sélection par clavier et l'alignement sur plusieurs lignes. Glissez un jeton vers une autre ligne (par exemple de ",[19,374,102],{}," à ",[19,377,106],{},") pour déplacer le destinataire.",[32,380,382],{"id":381},"pièces-jointes","Pièces jointes",[15,384,385,386,388],{},"Le composant permet de joindre des fichiers avec le bouton trombone de la barre d'outils. Les pièces jointes s'affichent sur des lignes qui s'enroulent, et chaque fichier est accompagné d'une icône correspondant à son type. Le nombre maximal de pièces jointes est contrôlé par le prop ",[23,387,82],{}," (10 par défaut).",[32,390,392],{"id":391},"interactions-clavier","Interactions clavier",[57,394,395,401,406],{},[60,396,397,400],{},[19,398,399],{},"Backspace"," sur un champ vide sélectionne le dernier jeton de destinataire.",[60,402,403,405],{},[19,404,399],{}," sur un jeton sélectionné le supprime.",[60,407,408,411,412,415],{},[19,409,410],{},"Échap"," vide le compositeur (",[23,413,414],{},"reset()","), sauf si une liste ouverte l'a déjà utilisée.",[32,417,419],{"id":418},"état-denvoi","État d'envoi",[15,421,422,423,426],{},"Le compositeur ne sait pas de lui-même si un message est en cours d'envoi : c'est l'application qui l'héberge qui déclenche l'envoi. Pour offrir à l'utilisateur une indication visuelle claire, vous pouvez passer un booléen ",[23,424,425],{},"submitting"," au compositeur.",[15,428,429,430,433],{},"Tant que ce booléen vaut ",[23,431,432],{},"true"," :",[57,435,436,439,442],{},[60,437,438],{},"Le bouton d'envoi affiche un indicateur de chargement (un petit cercle qui tourne) après son libellé.",[60,440,441],{},"Le bouton devient inactif : il ignore les clics et le raccourci clavier de soumission.",[60,443,444,445,448],{},"L'attribut ",[23,446,447],{},"aria-busy"," est positionné sur le bouton, ce qui permet aux lecteurs d'écran d'indiquer qu'une action est en cours.",[15,450,451],{},"Cela évite les doubles envois et rassure l'utilisateur : le message est parti, le système travaille.",[15,453,454,455,457],{},":::dokos Astuce\nAssociez l'activation de ",[23,456,425],{}," à un libellé plus court. Par exemple, au lieu d'afficher « Envoyer l'e-mail », basculez le libellé sur « Envoi » pendant la soumission, puis réinitialisez le compositeur une fois l'envoi terminé.\n:::",[93,459,461],{"id":460},"exemple-dutilisation","Exemple d'utilisation",[119,463,467],{"className":464,"code":465,"language":466,"meta":124,"style":124},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F Dans votre composant Vue qui héberge le compositeur\nimport { EmailComposer } from '@framework\u002Fui'\n\nexport default {\n  components: { EmailComposer },\n  data() {\n    return {\n      submitting: false\n    }\n  },\n  methods: {\n    async handleSend() {\n      this.submitting = true\n      try {\n        await this.envoyerMessage()\n      } finally {\n        this.submitting = false\n      }\n    }\n  }\n}\n","javascript",[23,468,469,474,501,507,517,532,542,549,559,565,571,581,594,608,616,631,642,654,660,665,671],{"__ignoreMap":124},[128,470,471],{"class":130,"line":131},[128,472,473],{"class":317},"\u002F\u002F Dans votre composant Vue qui héberge le compositeur\n",[128,475,476,480,483,486,489,492,495,498],{"class":130,"line":142},[128,477,479],{"class":478},"s7zQu","import",[128,481,482],{"class":134}," {",[128,484,485],{"class":193}," EmailComposer",[128,487,488],{"class":134}," }",[128,490,491],{"class":478}," from",[128,493,494],{"class":134}," '",[128,496,41],{"class":497},"sfazB",[128,499,500],{"class":134},"'\n",[128,502,503],{"class":130,"line":149},[128,504,506],{"emptyLinePlaceholder":505},true,"\n",[128,508,509,512,515],{"class":130,"line":155},[128,510,511],{"class":478},"export",[128,513,514],{"class":478}," default",[128,516,312],{"class":134},[128,518,519,522,524,526,529],{"class":130,"line":177},[128,520,521],{"class":138},"  components",[128,523,183],{"class":134},[128,525,482],{"class":134},[128,527,528],{"class":193}," EmailComposer ",[128,530,531],{"class":134},"},\n",[128,533,534,537,540],{"class":130,"line":198},[128,535,536],{"class":138},"  data",[128,538,539],{"class":134},"()",[128,541,312],{"class":134},[128,543,544,547],{"class":130,"line":216},[128,545,546],{"class":478},"    return",[128,548,312],{"class":134},[128,550,551,554,556],{"class":130,"line":234},[128,552,553],{"class":138},"      submitting",[128,555,183],{"class":134},[128,557,558],{"class":170}," false\n",[128,560,562],{"class":130,"line":561},9,[128,563,564],{"class":134},"    }\n",[128,566,568],{"class":130,"line":567},10,[128,569,570],{"class":134},"  },\n",[128,572,574,577,579],{"class":130,"line":573},11,[128,575,576],{"class":138},"  methods",[128,578,183],{"class":134},[128,580,312],{"class":134},[128,582,584,587,590,592],{"class":130,"line":583},12,[128,585,586],{"class":145},"    async",[128,588,589],{"class":138}," handleSend",[128,591,539],{"class":134},[128,593,312],{"class":134},[128,595,597,600,602,605],{"class":130,"line":596},13,[128,598,599],{"class":134},"      this.",[128,601,425],{"class":193},[128,603,604],{"class":134}," =",[128,606,607],{"class":170}," true\n",[128,609,611,614],{"class":130,"line":610},14,[128,612,613],{"class":478},"      try",[128,615,312],{"class":134},[128,617,619,622,625,628],{"class":130,"line":618},15,[128,620,621],{"class":478},"        await",[128,623,624],{"class":134}," this.",[128,626,627],{"class":298},"envoyerMessage",[128,629,630],{"class":138},"()\n",[128,632,634,637,640],{"class":130,"line":633},16,[128,635,636],{"class":134},"      }",[128,638,639],{"class":478}," finally",[128,641,312],{"class":134},[128,643,645,648,650,652],{"class":130,"line":644},17,[128,646,647],{"class":134},"        this.",[128,649,425],{"class":193},[128,651,604],{"class":134},[128,653,558],{"class":170},[128,655,657],{"class":130,"line":656},18,[128,658,659],{"class":134},"      }\n",[128,661,663],{"class":130,"line":662},19,[128,664,564],{"class":134},[128,666,668],{"class":130,"line":667},20,[128,669,670],{"class":134},"  }\n",[128,672,674],{"class":130,"line":673},21,[128,675,333],{"class":134},[119,677,681],{"className":678,"code":679,"language":680,"meta":124,"style":124},"language-html shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003CEmailComposer :submitting=\"submitting\" @submit=\"handleSend\" \u002F>\n","html",[23,682,683],{"__ignoreMap":124},[128,684,685,687,689,692,694,696,698,700,703,705,707,710,712],{"class":130,"line":131},[128,686,135],{"class":134},[128,688,25],{"class":138},[128,690,691],{"class":145}," :submitting",[128,693,164],{"class":134},[128,695,167],{"class":134},[128,697,425],{"class":497},[128,699,167],{"class":134},[128,701,702],{"class":145}," @submit",[128,704,164],{"class":134},[128,706,167],{"class":134},[128,708,709],{"class":497},"handleSend",[128,711,167],{"class":134},[128,713,714],{"class":134}," \u002F>\n",[32,716,718],{"id":717},"emplacement-de-pied-de-page","Emplacement de pied de page",[15,720,721,722,725],{},"Le compositeur expose un emplacement nommé ",[23,723,724],{},"#footer"," disponible entre le corps du message (après la zone des pièces jointes) et la barre d'outils inférieure.",[15,727,728],{},"Cet emplacement est conçu pour recevoir des actions que vous souhaitez voir apparaître au-dessus de la barre d'outils, par exemple un panneau de réponses enregistrées, des modèles de message, ou un aperçu des destinataires.",[119,730,732],{"className":678,"code":731,"language":680,"meta":124,"style":124},"\u003CEmailComposer>\n  \u003Ctemplate #footer>\n    \u003Cdiv class=\"mes-actions-supplementaires\">\n      \u003C!-- Vos actions ici -->\n    \u003C\u002Fdiv>\n  \u003C\u002Ftemplate>\n\u003C\u002FEmailComposer>\n",[23,733,734,743,756,778,783,792,801],{"__ignoreMap":124},[128,735,736,738,740],{"class":130,"line":131},[128,737,135],{"class":134},[128,739,25],{"class":138},[128,741,742],{"class":134},">\n",[128,744,745,748,751,754],{"class":130,"line":142},[128,746,747],{"class":134},"  \u003C",[128,749,750],{"class":138},"template",[128,752,753],{"class":145}," #footer",[128,755,742],{"class":134},[128,757,758,761,764,767,769,771,774,776],{"class":130,"line":149},[128,759,760],{"class":134},"    \u003C",[128,762,763],{"class":138},"div",[128,765,766],{"class":145}," class",[128,768,164],{"class":134},[128,770,167],{"class":134},[128,772,773],{"class":497},"mes-actions-supplementaires",[128,775,167],{"class":134},[128,777,742],{"class":134},[128,779,780],{"class":130,"line":155},[128,781,782],{"class":317},"      \u003C!-- Vos actions ici -->\n",[128,784,785,788,790],{"class":130,"line":177},[128,786,787],{"class":134},"    \u003C\u002F",[128,789,763],{"class":138},[128,791,742],{"class":134},[128,793,794,797,799],{"class":130,"line":198},[128,795,796],{"class":134},"  \u003C\u002F",[128,798,750],{"class":138},[128,800,742],{"class":134},[128,802,803,806,808],{"class":130,"line":216},[128,804,805],{"class":134},"\u003C\u002F",[128,807,25],{"class":138},[128,809,742],{"class":134},[239,811,812],{},"\ngraph TD\n  A[Compositeur] --> B[En-tête : destinataires, objet]\n  A --> C[Corps du message]\n  A --> D[Pièces jointes]\n  A --> E[Emplacement #footer]\n  A --> F[Barre d'outils + bouton d'envoi]\n  E --> G[Vos actions contextuelles]\n  style E fill:#fef3c7,stroke:#f59e0b,stroke-width:2px\n",[814,815,816],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}",{"title":124,"searchDepth":131,"depth":142,"links":818},[819,820,821,827,828,829,830,831,834],{"id":34,"depth":142,"text":35},{"id":45,"depth":142,"text":46},{"id":86,"depth":142,"text":25,"children":822},[823,824,825],{"id":95,"depth":149,"text":96},{"id":244,"depth":149,"text":245},{"id":336,"depth":149,"text":826},"Slot #header",{"id":353,"depth":142,"text":29},{"id":364,"depth":142,"text":365},{"id":381,"depth":142,"text":382},{"id":391,"depth":142,"text":392},{"id":418,"depth":142,"text":419,"children":832},[833],{"id":460,"depth":149,"text":461},{"id":717,"depth":142,"text":718},"Le composant Composer fournit une API déclarative (booléens show-*) et des modèles v-model:* pour construire des interfaces de saisie d'e-mail ou de commentaire.","md",{"reviewed":505,"last_verified":838,"sources":839},"2026-11-04",[840,841,842],"dodock@v5:ui\u002Fsrc\u002Fcomponents\u002FComposer\u002Ftypes.ts","dodock@v5:ui\u002Fsrc\u002Fcomponents\u002FComposer\u002FEmailComposer\u002FEmailComposer.vue","dodock@v5:ui\u002Fsrc\u002Fcomponents\u002FComposer\u002FComposerEditor.vue","\u002Fv5\u002Fdodock\u002Fdeveloppeurs\u002Fcomposants-ui\u002Fcomposant-richtext",{"title":5,"description":835},"1.v5\u002F3.dodock\u002F10.developpeurs\u002F03.composants-ui\u002Fcomposant-richtext","p38kCP9wPVXTaLd3c-C-4j5O1-wc_eIWMyQwcx1gsgk",{},1794226463664]