tiptapify 0.3.4 → 0.4.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 (137) hide show
  1. package/dist/content.css +28 -0
  2. package/dist/tiptapify.css +1 -1
  3. package/dist/tiptapify.mjs +110820 -65669
  4. package/dist/tiptapify.umd.js +106 -89
  5. package/index.d.ts +34 -0
  6. package/package.json +3 -2
  7. package/src/components/ImageBubbleMenu.vue +5 -33
  8. package/src/components/MenuBubble.test.ts +120 -0
  9. package/src/components/MenuBubble.vue +124 -134
  10. package/src/components/MenuFloating.vue +48 -45
  11. package/src/components/Tiptapify.upload.test.ts +10 -0
  12. package/src/components/Tiptapify.vue +85 -45
  13. package/src/components/Toolbar/Index.vue +10 -0
  14. package/src/components/UI/BubbleRow.vue +41 -0
  15. package/src/components/UI/TiptapifyDialog.test.ts +37 -3
  16. package/src/components/UI/TiptapifyDialog.vue +15 -4
  17. package/src/components/editorExtensions.test.ts +9 -0
  18. package/src/components/editorExtensions.ts +21 -1
  19. package/src/composables/fakeUploadEndpoint.ts +65 -0
  20. package/src/composables/useTiptapifyConfig.ts +19 -0
  21. package/src/composables/useTiptapifyLinkPreview.test.ts +51 -0
  22. package/src/composables/useTiptapifyLinkPreview.ts +60 -0
  23. package/src/composables/useTiptapifyUpload.test.ts +96 -0
  24. package/src/composables/useTiptapifyUpload.ts +126 -0
  25. package/src/extensions/components/ai/Dialog.test.ts +335 -0
  26. package/src/extensions/components/ai/Dialog.vue +607 -310
  27. package/src/extensions/components/ai/backend.test.ts +1 -0
  28. package/src/extensions/components/ai/backend.ts +2 -1
  29. package/src/extensions/components/ai/context.test.ts +149 -0
  30. package/src/extensions/components/ai/context.ts +145 -0
  31. package/src/extensions/components/ai/diff.test.ts +65 -0
  32. package/src/extensions/components/ai/diff.ts +120 -0
  33. package/src/extensions/components/ai/errors.test.ts +45 -0
  34. package/src/extensions/components/ai/errors.ts +67 -0
  35. package/src/extensions/components/ai/result.test.ts +144 -0
  36. package/src/extensions/components/ai/result.ts +101 -0
  37. package/src/extensions/components/ai/thinking.test.ts +45 -0
  38. package/src/extensions/components/ai/thinking.ts +58 -0
  39. package/src/extensions/components/formatExtra/sub/Button.vue +1 -1
  40. package/src/extensions/components/formatExtra/sup/Button.vue +1 -1
  41. package/src/extensions/components/media/iframe/Button.vue +6 -7
  42. package/src/extensions/components/media/iframe/IframeDialog.test.ts +177 -0
  43. package/src/extensions/components/media/iframe/IframeDialog.vue +477 -105
  44. package/src/extensions/components/media/iframe/embed.test.ts +123 -0
  45. package/src/extensions/components/media/iframe/embed.ts +236 -0
  46. package/src/extensions/components/media/iframe/index.test.ts +123 -0
  47. package/src/extensions/components/media/iframe/index.ts +92 -10
  48. package/src/extensions/components/media/image/ImageDialog.vue +430 -132
  49. package/src/extensions/components/media/image/caption.test.ts +66 -1
  50. package/src/extensions/components/media/image/caption.ts +27 -1
  51. package/src/extensions/components/media/image/imageDialog.test.ts +200 -0
  52. package/src/extensions/components/media/image/imageDialog.ts +114 -0
  53. package/src/extensions/components/media/image/index.ts +2 -1
  54. package/src/extensions/components/media/link/Button.test.ts +96 -0
  55. package/src/extensions/components/media/link/Button.vue +6 -2
  56. package/src/extensions/components/media/link/LinkDialog.display.test.ts +363 -0
  57. package/src/extensions/components/media/link/LinkDialog.vue +687 -61
  58. package/src/extensions/components/media/link/index.ts +111 -6
  59. package/src/extensions/components/media/link/link.marks.test.ts +89 -0
  60. package/src/extensions/components/media/link/linkDialog.test.ts +296 -0
  61. package/src/extensions/components/media/link/linkDialog.ts +154 -0
  62. package/src/extensions/components/media/linkCard/PasteCardMenu.test.ts +133 -0
  63. package/src/extensions/components/media/linkCard/PasteCardMenu.vue +168 -0
  64. package/src/extensions/components/media/linkCard/index.test.ts +146 -0
  65. package/src/extensions/components/media/linkCard/index.ts +177 -0
  66. package/src/extensions/components/media/linkCard/linkCardDialog.test.ts +87 -0
  67. package/src/extensions/components/media/linkCard/linkCardDialog.ts +62 -0
  68. package/src/extensions/components/media/linkCard/linkPreview.test.ts +102 -0
  69. package/src/extensions/components/media/linkCard/linkPreview.ts +84 -0
  70. package/src/extensions/components/media/linkCard/makeLinkCard.test.ts +59 -0
  71. package/src/extensions/components/media/linkCard/makeLinkCard.ts +58 -0
  72. package/src/extensions/components/media/linkCard/pasteCard.test.ts +190 -0
  73. package/src/extensions/components/media/linkCard/pasteCard.ts +153 -0
  74. package/src/extensions/components/media/video/Button.vue +2 -1
  75. package/src/extensions/components/media/video/VideoDialog.test.ts +233 -0
  76. package/src/extensions/components/media/video/VideoDialog.vue +748 -59
  77. package/src/extensions/components/media/video/index.test.ts +154 -0
  78. package/src/extensions/components/media/video/index.ts +70 -5
  79. package/src/extensions/components/media/video/providers.test.ts +148 -0
  80. package/src/extensions/components/media/video/providers.ts +241 -0
  81. package/src/extensions/components/media/video/videoFile.test.ts +98 -0
  82. package/src/extensions/components/media/video/videoFile.ts +142 -0
  83. package/src/extensions/components/misc/fullscreen/Button.test.ts +55 -0
  84. package/src/extensions/components/misc/fullscreen/Button.vue +2 -2
  85. package/src/extensions/components/style/StyleColor.test.ts +255 -0
  86. package/src/extensions/components/style/StyleColor.vue +358 -208
  87. package/src/extensions/components/style/color/Button.vue +1 -3
  88. package/src/extensions/components/style/color/colors.test.ts +191 -0
  89. package/src/extensions/components/style/color/colors.ts +168 -0
  90. package/src/extensions/components/style/highlight/Button.vue +1 -3
  91. package/src/i18n/locales/ar.json +226 -23
  92. package/src/i18n/locales/bg.json +225 -22
  93. package/src/i18n/locales/ch.json +226 -23
  94. package/src/i18n/locales/cz.json +226 -23
  95. package/src/i18n/locales/de.json +226 -23
  96. package/src/i18n/locales/el.json +225 -22
  97. package/src/i18n/locales/en.json +225 -22
  98. package/src/i18n/locales/es.json +226 -23
  99. package/src/i18n/locales/et.json +225 -22
  100. package/src/i18n/locales/fi.json +226 -23
  101. package/src/i18n/locales/fr.json +226 -23
  102. package/src/i18n/locales/he.json +225 -22
  103. package/src/i18n/locales/hi.json +225 -22
  104. package/src/i18n/locales/hr.json +225 -22
  105. package/src/i18n/locales/hu.json +226 -23
  106. package/src/i18n/locales/id.json +225 -22
  107. package/src/i18n/locales/it.json +226 -23
  108. package/src/i18n/locales/ja.json +226 -23
  109. package/src/i18n/locales/ko.json +226 -23
  110. package/src/i18n/locales/la.json +226 -23
  111. package/src/i18n/locales/lt.json +226 -23
  112. package/src/i18n/locales/nl.json +226 -23
  113. package/src/i18n/locales/no.json +227 -24
  114. package/src/i18n/locales/pl.json +226 -23
  115. package/src/i18n/locales/pt-BR.json +225 -22
  116. package/src/i18n/locales/pt.json +226 -23
  117. package/src/i18n/locales/ro.json +225 -22
  118. package/src/i18n/locales/ru.json +227 -24
  119. package/src/i18n/locales/se.json +226 -23
  120. package/src/i18n/locales/sk.json +225 -22
  121. package/src/i18n/locales/sl.json +225 -22
  122. package/src/i18n/locales/sr.json +225 -22
  123. package/src/i18n/locales/th.json +226 -23
  124. package/src/i18n/locales/tr.json +226 -23
  125. package/src/i18n/locales/uk.json +227 -24
  126. package/src/i18n/locales/vi.json +226 -23
  127. package/src/index.ts +8 -0
  128. package/src/skins/registry.test.ts +1 -1
  129. package/src/skins/tokens.reachability.test.ts +1 -0
  130. package/src/skins/tokens.ts +3 -3
  131. package/src/types/editor.ts +40 -1
  132. package/src/utils/contentStyles.test.ts +116 -0
  133. package/src/utils/contentStyles.ts +175 -0
  134. package/src/utils/mediaSize.test.ts +22 -0
  135. package/src/utils/mediaSize.ts +27 -0
  136. package/src/utils/validateHref.test.ts +72 -2
  137. package/src/utils/validateHref.ts +57 -13
@@ -4,7 +4,20 @@
4
4
  "undo": "Annuler"
5
5
  },
6
6
  "ai": {
7
+ "another_version": "Autre version",
7
8
  "append": "Ajouter à la fin",
9
+ "change_vs_original": "{percent} par rapport à l'original",
10
+ "changes": "Modifications",
11
+ "context": {
12
+ "characters": "{n} caractère | {n} caractères",
13
+ "cursor": "À la position du curseur",
14
+ "document": "Tout le texte",
15
+ "excerpt": "« {text} »",
16
+ "paragraphs": "{n} paragraphe | {n} paragraphes",
17
+ "selection": "Sélection : {paragraphs}, {characters}"
18
+ },
19
+ "copied": "Copié",
20
+ "copy": "Copier",
8
21
  "defaultExamples": {
9
22
  "expand": {
10
23
  "prompt": "Développez ce texte en une version plus détaillée.",
@@ -23,19 +36,58 @@
23
36
  "title": "Résumer"
24
37
  }
25
38
  },
39
+ "effort_label": {
40
+ "default": "Effort : par défaut",
41
+ "high": "Effort : élevé",
42
+ "low": "Effort : faible",
43
+ "max": "Effort : maximal",
44
+ "medium": "Effort : moyen",
45
+ "xhigh": "Effort : très élevé"
46
+ },
47
+ "effort_levels": {
48
+ "default": "Par défaut",
49
+ "high": "Élevé",
50
+ "low": "Faible",
51
+ "max": "Maximal",
52
+ "medium": "Moyen",
53
+ "xhigh": "Très élevé"
54
+ },
26
55
  "error": "Échec de la génération IA",
56
+ "errors": {
57
+ "auth": "Le service d'IA a refusé la requête : vérifiez la clé API ou les droits d'accès.",
58
+ "network": "Impossible de joindre le service d'IA. Vérifiez qu'il est démarré et autorise les requêtes de cette page (CORS) : la console du navigateur indique la cause.",
59
+ "not_found": "L'adresse du service d'IA est introuvable : vérifiez le chemin du point de terminaison.",
60
+ "rate_limit": "Trop de requêtes vers le service d'IA. Patientez un instant et réessayez.",
61
+ "request": "Le service d'IA n'a pas pu traiter la requête.",
62
+ "service_says": "Réponse du service :",
63
+ "timeout": "Le service d'IA n'a pas répondu à temps. Réessayez.",
64
+ "unavailable": "Le service d'IA est indisponible : il charge peut-être un modèle ou est occupé. Réessayez plus tard."
65
+ },
27
66
  "generate": "Générer",
28
67
  "insert": "Insérer",
29
- "limit_exceeded": "Le résultat dépasse la limite de caractères de l'éditeur. Raccourcissez le texte et appliquez-le à nouveau.",
68
+ "insert_below": "Insérer en dessous",
69
+ "limit_exceeded": "Le résultat dépasse la limite de caractères de l'éditeur. Demandez une version plus courte.",
30
70
  "loading": "Génération...",
31
71
  "prompt": "Demande",
72
+ "prompt_placeholder": "Demandez d'écrire ou de modifier le texte",
32
73
  "quick_prompts": "Demandes rapides",
33
74
  "reasoning_effort": "Niveau de réflexion",
34
- "replace": "Remplacer",
75
+ "replace_selection": "Remplacer la sélection",
35
76
  "result": "Résultat",
77
+ "send_hint": "Entrée — envoyer",
36
78
  "stop": "Arrêter",
37
79
  "thinking": "Réflexion",
38
- "title": "Écriture IA",
80
+ "thinking_label": {
81
+ "off": "Réflexion : désactivée",
82
+ "on": "Réflexion : activée"
83
+ },
84
+ "thinking_now": "Réflexion…",
85
+ "thinking_states": {
86
+ "off": "Désactivée",
87
+ "on": "Activée"
88
+ },
89
+ "thought_for": "Réflexion : {seconds} s",
90
+ "title": "Assistant",
39
91
  "unavailable": "Configurez un fournisseur d'IA pour utiliser cette action"
40
92
  },
41
93
  "alignment": "Alignement",
@@ -51,50 +103,163 @@
51
103
  "defaultValue": "Valeur par défaut",
52
104
  "dialog": {
53
105
  "apply": "Appliquer",
106
+ "cancel": "Annuler",
54
107
  "clear": "Effacer",
55
108
  "close": "Fermer",
56
109
  "iframe": {
57
- "dialog_title": "Ajouter/modifier iframe",
58
- "frameborder": "Bordure du cadre",
110
+ "advanced": "Avancé",
111
+ "allow": "Autorisations (allow)",
112
+ "allow_hint": "Par exemple : autoplay; fullscreen; clipboard-write",
113
+ "apply_failed": "Impossible d'insérer l'intégration ici.",
114
+ "border": "Afficher la bordure",
115
+ "code_invalid": "Collez le code d'un seul iframe avec une adresse. Les codes contenant des scripts ou d'autres balises ne sont pas pris en charge.",
116
+ "code_parsed": "Code analysé : {fields}.",
59
117
  "height": "Hauteur",
118
+ "input": "Lien ou code d'intégration",
119
+ "input_hint": "Collez l'adresse ou le code iframe depuis le menu Partager ou Intégrer du site.",
120
+ "keep_ratio": "Conserver les proportions",
121
+ "lazy": "Charger au défilement jusqu'à l'élément",
60
122
  "name": "Nom",
61
- "src": "Source",
62
- "src_invalid": "L'URL saisie est invalide",
63
- "title": "Titre",
123
+ "parsed_allow": "autorisations",
124
+ "parsed_fullscreen": "plein écran",
125
+ "parsed_loading": "chargement différé",
126
+ "parsed_name": "nom",
127
+ "parsed_sandbox": "sandbox",
128
+ "parsed_size": "taille {width} × {height}",
129
+ "parsed_src": "adresse",
130
+ "parsed_title": "titre",
131
+ "preview": "Aperçu de l'intégration",
132
+ "preview_empty": "L'aperçu s'affiche dès que l'adresse est valide.",
133
+ "sandbox": "Bac à sable (sandbox)",
134
+ "sandbox_hint": "Vide : aucune restriction. Par exemple : allow-scripts allow-same-origin",
135
+ "size": "Taille",
136
+ "size_custom": "Personnalisée",
137
+ "size_invalid": "Indiquez la taille en pixels.",
138
+ "size_responsive": "Adaptative",
139
+ "size_responsive_hint": "Occupe la largeur du texte selon les proportions {ratio}.",
140
+ "src_invalid": "Une intégration nécessite une adresse web commençant par https:// ou http://.",
141
+ "src_protocol": "Ajoutez le protocole à l'adresse : https:// ou http://.",
142
+ "src_required": "Collez un lien ou un code d'intégration.",
143
+ "title_edit": "Modifier l'intégration",
144
+ "title_insert": "Intégrer du contenu",
145
+ "title_missing": "Les lecteurs d'écran annoncent l'intégration par son titre. Décrivez ce qu'elle montre.",
146
+ "title_text": "Titre pour les lecteurs d'écran",
64
147
  "width": "Largeur"
65
148
  },
66
149
  "image": {
67
- "alt": "alt",
150
+ "alt_missing": "Les lecteurs d'écran et les moteurs de recherche ne peuvent pas lire une image sans texte alternatif.",
151
+ "alt_text": "Texte alternatif pour les lecteurs d'écran",
152
+ "apply_error": "Impossible d'enregistrer l'image ici.",
68
153
  "caption": "Légende",
69
154
  "caption_placeholder": "Ajouter une légende…",
70
- "dialog_title": "Ajouter/modifier l'image",
71
155
  "height": "Hauteur",
72
156
  "keep_ratio": "Conserver le ratio d'aspect",
157
+ "original_size": "Original {width} × {height}",
158
+ "position": "Position",
159
+ "position_center": "Centre",
160
+ "position_left": "Gauche",
161
+ "position_right": "Droite",
162
+ "remove_error": "Impossible de supprimer l'image.",
163
+ "size": "Taille",
164
+ "size_custom": "Personnalisée",
165
+ "size_original": "Originale",
166
+ "size_text": "Largeur du texte",
167
+ "source_upload": "Importer",
168
+ "source_url": "Par URL",
73
169
  "src": "Source",
74
- "title": "Titre",
170
+ "title_edit": "Modifier l'image",
171
+ "title_insert": "Insérer une image",
172
+ "upload_cancel": "Annuler l'import",
173
+ "upload_error": "Impossible d'importer l'image.",
174
+ "upload_file": "Fichier image",
75
175
  "width": "Largeur"
76
176
  },
177
+ "insert": "Insérer",
77
178
  "link": {
179
+ "advanced": "Avancé",
180
+ "apply_error": "Impossible d'appliquer le lien.",
78
181
  "class": "Classe CSS",
79
182
  "href": "Adresse du lien",
80
- "href_error": "Adresse de lien incorrecte",
81
- "rel": "rel",
82
- "target": "Ouvrir dans...",
83
- "target_blank": "Nouvelle fenêtre",
84
- "target_self": "Fenêtre actuelle",
85
- "title": "Ajouter/modifier le lien"
183
+ "href_invalid": "Saisissez une adresse de lien, par exemple https://example.com, #ancre ou /page.",
184
+ "new_tab": "Ouvrir dans un nouvel onglet",
185
+ "protocol_missing": "Aucun protocole. Ajouter :",
186
+ "rel": "Attributs rel",
187
+ "rel_hint": "Toute valeur : Entrée, espace ou virgule l'ajoute.",
188
+ "rel_new_tab_hint": "Un lien qui s'ouvre dans un nouvel onglet reçoit aussi noopener et noreferrer.",
189
+ "remove": "Supprimer le lien",
190
+ "text": "Texte",
191
+ "text_hint": "Laissez vide pour utiliser l'adresse comme texte.",
192
+ "title_edit": "Modifier le lien",
193
+ "title_insert": "Insérer un lien"
194
+ },
195
+ "linkCard": {
196
+ "apply_failed": "Impossible d'insérer la carte ici.",
197
+ "description": "Description",
198
+ "display": "Afficher comme",
199
+ "display_card": "Carte",
200
+ "display_link": "Lien",
201
+ "fetch_failed": "Impossible de charger les données de la page : {error}. Vous pouvez remplir les champs manuellement.",
202
+ "href_invalid": "Saisissez l'adresse complète d'une page, par exemple https://example.com/page.",
203
+ "image": "Image",
204
+ "image_choose": "Choisir une image",
205
+ "image_failed": "Impossible d'importer l'image. Réessayez.",
206
+ "image_remove": "Supprimer l'image",
207
+ "image_replace": "Remplacer",
208
+ "layout": "Affichage",
209
+ "layout_compact": "Compacte",
210
+ "layout_large": "Grande",
211
+ "layout_text": "Sans image",
212
+ "loading": "Chargement des données de la page…",
213
+ "page_title": "Titre",
214
+ "paste_dismiss": "Garder le lien",
215
+ "paste_error": "Aucun aperçu pour cette page.",
216
+ "protocol_missing": "Commencez l'adresse par https:// ou http://.",
217
+ "refresh": "Actualiser les données",
218
+ "site_name": "Nom du site",
219
+ "title_edit": "Modifier la carte de lien",
220
+ "title_insert": "Insérer une carte de lien"
86
221
  },
87
222
  "preview": {
88
223
  "title": "Aperçu"
89
224
  },
225
+ "remove": "Supprimer",
226
+ "save": "Enregistrer",
90
227
  "source": {
91
228
  "prettify": "prettify",
92
229
  "title": "Voir le code source"
93
230
  },
94
231
  "video": {
232
+ "apply_failed": "Impossible d'insérer la vidéo ici.",
233
+ "autoplay": "Lecture auto sans son",
234
+ "controls": "Afficher les commandes",
95
235
  "height": "Hauteur",
96
- "src": "Source",
97
- "title": "Ajouter/modifier une vidéo",
236
+ "keep_ratio": "Conserver le ratio d'aspect",
237
+ "loop": "En boucle",
238
+ "poster": "Miniature",
239
+ "poster_choose": "Choisir une image",
240
+ "poster_hint": "Facultatif. Affichée jusqu'au démarrage de la vidéo.",
241
+ "poster_url": "URL de la miniature",
242
+ "preview": "Aperçu de la vidéo",
243
+ "preview_empty": "L'aperçu s'affiche dès que le lien est reconnu.",
244
+ "size": "Taille",
245
+ "size_custom": "Personnalisée",
246
+ "size_invalid": "Saisissez la taille en pixels.",
247
+ "size_responsive": "Adaptative",
248
+ "size_responsive_embed": "Adaptative 16:9",
249
+ "source_upload": "Importer",
250
+ "source_url": "Par URL",
251
+ "start": "Début à",
252
+ "start_invalid": "Saisissez le temps au format m:ss ou h:mm:ss.",
253
+ "title_edit": "Modifier la vidéo",
254
+ "title_insert": "Insérer une vidéo",
255
+ "upload_choose": "Choisir un fichier vidéo",
256
+ "upload_failed": "Impossible d'importer le fichier. Réessayez.",
257
+ "upload_progress": "{loaded} sur {total} Mo",
258
+ "upload_replace": "Remplacer",
259
+ "url": "Lien de la vidéo",
260
+ "url_file_protocol": "Ajoutez le protocole au lien du fichier : https:// ou http://.",
261
+ "url_required": "Collez un lien YouTube, Vimeo ou vers un fichier vidéo.",
262
+ "url_unsupported": "Utilisez un lien YouTube ou Vimeo, ou un lien vers un fichier vidéo (.mp4, .webm, .ogg, .mov). Pour les autres sites, utilisez le code d’intégration.",
98
263
  "width": "Largeur"
99
264
  }
100
265
  },
@@ -171,7 +336,7 @@
171
336
  "search": "Rechercher un emoji...",
172
337
  "title": "Emoji"
173
338
  },
174
- "iframe": "iframe",
339
+ "iframe": "Intégration",
175
340
  "image": "Image",
176
341
  "image_toolbar": {
177
342
  "align_left": "Align left",
@@ -212,10 +377,48 @@
212
377
  },
213
378
  "style": {
214
379
  "color": {
215
- "custom": "Sélection personnalisée",
380
+ "custom": "Couleur personnalisée",
381
+ "default": "Par défaut",
382
+ "eyedropper": "Prélever une couleur à l'écran",
383
+ "hex": "Couleur hexadécimale",
384
+ "hex_invalid": "Saisissez une couleur au format #rgb ou #rrggbb.",
216
385
  "highlight": "Couleur de surbrillance",
217
- "text": "Couleur du texte",
218
- "unset": "Effacer la couleur"
386
+ "names": {
387
+ "amber": "Ambre",
388
+ "black": "Noir",
389
+ "blue": "Bleu",
390
+ "dark_amber": "Ambre foncé",
391
+ "dark_blue": "Bleu foncé",
392
+ "dark_green": "Vert foncé",
393
+ "dark_grey": "Gris foncé",
394
+ "dark_orange": "Orange foncé",
395
+ "dark_pink": "Rose foncé",
396
+ "dark_purple": "Violet foncé",
397
+ "dark_red": "Rouge foncé",
398
+ "dark_teal": "Bleu sarcelle foncé",
399
+ "green": "Vert",
400
+ "grey": "Gris",
401
+ "light_amber": "Ambre clair",
402
+ "light_blue": "Bleu clair",
403
+ "light_green": "Vert clair",
404
+ "light_grey": "Gris clair",
405
+ "light_orange": "Orange clair",
406
+ "light_pink": "Rose clair",
407
+ "light_purple": "Violet clair",
408
+ "light_red": "Rouge clair",
409
+ "light_teal": "Bleu sarcelle clair",
410
+ "medium_grey": "Gris moyen",
411
+ "orange": "Orange",
412
+ "pale_grey": "Gris pâle",
413
+ "pink": "Rose",
414
+ "purple": "Violet",
415
+ "red": "Rouge",
416
+ "teal": "Bleu sarcelle",
417
+ "white": "Blanc"
418
+ },
419
+ "no_highlight": "Sans surbrillance",
420
+ "recent": "Récentes",
421
+ "text": "Couleur du texte"
219
422
  },
220
423
  "fontFamily": "Police",
221
424
  "fontSize": "Taille",
@@ -4,7 +4,20 @@
4
4
  "undo": "ביטול"
5
5
  },
6
6
  "ai": {
7
+ "another_version": "גרסה אחרת",
7
8
  "append": "הוסף לסוף",
9
+ "change_vs_original": "{percent} לעומת המקור",
10
+ "changes": "שינויים",
11
+ "context": {
12
+ "characters": "{n} תו | {n} תווים",
13
+ "cursor": "במיקום הסמן",
14
+ "document": "כל הטקסט",
15
+ "excerpt": "“{text}”",
16
+ "paragraphs": "{n} פסקה | {n} פסקאות",
17
+ "selection": "נבחרו: {paragraphs}, {characters}"
18
+ },
19
+ "copied": "הועתק",
20
+ "copy": "העתקה",
8
21
  "defaultExamples": {
9
22
  "expand": {
10
23
  "prompt": "הרחב את הטקסט הזה לגרסה מפורטת יותר.",
@@ -23,19 +36,58 @@
23
36
  "title": "סיכום"
24
37
  }
25
38
  },
39
+ "effort_label": {
40
+ "default": "רמה: ברירת מחדל",
41
+ "high": "רמה: גבוהה",
42
+ "low": "רמה: נמוכה",
43
+ "max": "רמה: מקסימלית",
44
+ "medium": "רמה: בינונית",
45
+ "xhigh": "רמה: גבוהה מאוד"
46
+ },
47
+ "effort_levels": {
48
+ "default": "ברירת מחדל",
49
+ "high": "גבוהה",
50
+ "low": "נמוכה",
51
+ "max": "מקסימלית",
52
+ "medium": "בינונית",
53
+ "xhigh": "גבוהה מאוד"
54
+ },
26
55
  "error": "הפקת ה־AI נכשלה",
56
+ "errors": {
57
+ "auth": "שירות הבינה המלאכותית דחה את הבקשה: בדקו את מפתח ה-API או את הרשאות הגישה.",
58
+ "network": "לא ניתן להתחבר לשירות הבינה המלאכותית. בדקו שהוא פועל ומאפשר בקשות מהדף הזה (CORS): קונסולת הדפדפן מציגה את הסיבה.",
59
+ "not_found": "כתובת שירות הבינה המלאכותית לא נמצאה: בדקו את הנתיב של נקודת הקצה.",
60
+ "rate_limit": "יותר מדי בקשות לשירות הבינה המלאכותית. המתינו רגע ונסו שוב.",
61
+ "request": "שירות הבינה המלאכותית לא הצליח לעבד את הבקשה.",
62
+ "service_says": "תשובת השירות:",
63
+ "timeout": "שירות הבינה המלאכותית לא ענה בזמן. נסו שוב.",
64
+ "unavailable": "שירות הבינה המלאכותית אינו זמין: ייתכן שהוא טוען מודל או עמוס. נסו מאוחר יותר."
65
+ },
27
66
  "generate": "ייצור",
28
67
  "insert": "הכנסה",
29
- "limit_exceeded": "התוצאה עוקפת את מגבלת התווים של העורך. קצר את הטקסט והפעל שוב.",
68
+ "insert_below": "הוספה מתחת",
69
+ "limit_exceeded": "התוצאה ארוכה ממגבלת התווים של העורך. בקש גרסה קצרה יותר.",
30
70
  "loading": "מייצר...",
31
71
  "prompt": "הנעה",
72
+ "prompt_placeholder": "בקש לכתוב או לערוך את הטקסט",
32
73
  "quick_prompts": "הנעות מהירות",
33
74
  "reasoning_effort": "מאמץ חשיבה",
34
- "replace": "החלף",
75
+ "replace_selection": "החלפת הבחירה",
35
76
  "result": "תוצאה",
77
+ "send_hint": "Enter — שליחה",
36
78
  "stop": "עצור",
37
79
  "thinking": "מחשב",
38
- "title": "כתיבה AI",
80
+ "thinking_label": {
81
+ "off": "חשיבה: כבויה",
82
+ "on": "חשיבה: פעילה"
83
+ },
84
+ "thinking_now": "חושב…",
85
+ "thinking_states": {
86
+ "off": "כבויה",
87
+ "on": "פעילה"
88
+ },
89
+ "thought_for": "חשב {seconds} שנ׳",
90
+ "title": "עוזר",
39
91
  "unavailable": "הגדר ספק AI כדי להשתמש בפעולה זו"
40
92
  },
41
93
  "alignment": "יישור",
@@ -51,50 +103,163 @@
51
103
  "defaultValue": "ערך ברירת מחדל",
52
104
  "dialog": {
53
105
  "apply": "יישום",
106
+ "cancel": "ביטול",
54
107
  "clear": "נקה",
55
108
  "close": "סגור",
56
109
  "iframe": {
57
- "dialog_title": "הוסף/ערוך iframe",
58
- "frameborder": "גבול iframe",
110
+ "advanced": "מתקדם",
111
+ "allow": "הרשאות (allow)",
112
+ "allow_hint": "לדוגמה: autoplay; fullscreen; clipboard-write",
113
+ "apply_failed": "לא ניתן להוסיף את ההטמעה כאן.",
114
+ "border": "הצגת מסגרת",
115
+ "code_invalid": "הדבק קוד של iframe יחיד עם כתובת. קודים עם סקריפטים או תגים אחרים אינם נתמכים.",
116
+ "code_parsed": "הקוד זוהה: {fields}.",
59
117
  "height": "גובה",
118
+ "input": "קישור או קוד הטמעה",
119
+ "input_hint": "הדבק את הכתובת או את קוד ה-iframe מתפריט השיתוף או ההטמעה של האתר.",
120
+ "keep_ratio": "שמירה על יחס",
121
+ "lazy": "טעינה בעת גלילה לתצוגה",
60
122
  "name": "שם",
61
- "src": "מקור",
62
- "src_invalid": "הקלט אינו כתובת אינטרנט חוקית",
63
- "title": "כותרת",
123
+ "parsed_allow": "הרשאות",
124
+ "parsed_fullscreen": "מסך מלא",
125
+ "parsed_loading": "טעינה מושהית",
126
+ "parsed_name": "שם",
127
+ "parsed_sandbox": "sandbox",
128
+ "parsed_size": "גודל {width} × {height}",
129
+ "parsed_src": "כתובת",
130
+ "parsed_title": "כותרת",
131
+ "preview": "תצוגה מקדימה של ההטמעה",
132
+ "preview_empty": "התצוגה המקדימה תופיע כשהכתובת תהיה תקינה.",
133
+ "sandbox": "ארגז חול (sandbox)",
134
+ "sandbox_hint": "ריק: ללא הגבלות. לדוגמה: allow-scripts allow-same-origin",
135
+ "size": "גודל",
136
+ "size_custom": "מותאם אישית",
137
+ "size_invalid": "הזן את הגודל בפיקסלים.",
138
+ "size_responsive": "רספונסיבי",
139
+ "size_responsive_hint": "ממלא את רוחב הטקסט ביחס {ratio}.",
140
+ "src_invalid": "הטמעה דורשת כתובת אינטרנט שמתחילה ב-https:// או ב-http://.",
141
+ "src_protocol": "הוסף פרוטוקול לכתובת: https:// או http://.",
142
+ "src_required": "הדבק קישור או קוד הטמעה.",
143
+ "title_edit": "עריכת הטמעה",
144
+ "title_insert": "הטמעת תוכן",
145
+ "title_missing": "קוראי מסך מכריזים על ההטמעה לפי הכותרת שלה. תאר מה היא מציגה.",
146
+ "title_text": "כותרת לקוראי מסך",
64
147
  "width": "רוחב"
65
148
  },
66
149
  "image": {
67
- "alt": "טקסט חלופי",
150
+ "alt_missing": "קוראי מסך ומנועי חיפוש לא יכולים לקרוא תמונה ללא טקסט חלופי.",
151
+ "alt_text": "טקסט חלופי לקוראי מסך",
152
+ "apply_error": "לא ניתן היה לשמור את התמונה כאן.",
68
153
  "caption": "כיתוב",
69
154
  "caption_placeholder": "הוסיפו כיתוב…",
70
- "dialog_title": "הוסף/ערוך תמונה",
71
155
  "height": "גובה",
72
156
  "keep_ratio": "שמור על יחס",
157
+ "original_size": "מקורי {width} × {height}",
158
+ "position": "מיקום",
159
+ "position_center": "מרכז",
160
+ "position_left": "שמאל",
161
+ "position_right": "ימין",
162
+ "remove_error": "לא ניתן היה להסיר את התמונה.",
163
+ "size": "גודל",
164
+ "size_custom": "מותאם אישית",
165
+ "size_original": "מקורי",
166
+ "size_text": "רוחב הטקסט",
167
+ "source_upload": "העלאה",
168
+ "source_url": "מכתובת URL",
73
169
  "src": "מקור",
74
- "title": "הוסף/ערוך תמונה",
170
+ "title_edit": "עריכת תמונה",
171
+ "title_insert": "הוספת תמונה",
172
+ "upload_cancel": "ביטול ההעלאה",
173
+ "upload_error": "לא ניתן היה להעלות את התמונה.",
174
+ "upload_file": "קובץ תמונה",
75
175
  "width": "רוחב"
76
176
  },
177
+ "insert": "הוספה",
77
178
  "link": {
179
+ "advanced": "מתקדם",
180
+ "apply_error": "לא ניתן היה להחיל את הקישור.",
78
181
  "class": "מחלקת CSS",
79
182
  "href": "כתובת קישור",
80
- "href_error": "כתובת קישור לא תקינה",
81
- "rel": "Rel",
82
- "target": "פתח ב...",
83
- "target_blank": "חלון חדש",
84
- "target_self": "חלון נוכחי",
85
- "title": "הוסף/ערוך קישור"
183
+ "href_invalid": "הזינו כתובת קישור, לדוגמה https://example.com, ‎#עוגן או ‎/עמוד.",
184
+ "new_tab": "פתיחה בכרטיסייה חדשה",
185
+ "protocol_missing": "אין פרוטוקול. הוספה:",
186
+ "rel": "מאפייני rel",
187
+ "rel_hint": "כל ערך: Enter, רווח או פסיק מוסיפים אותו.",
188
+ "rel_new_tab_hint": "קישור שנפתח בכרטיסייה חדשה מקבל גם noopener ו-noreferrer.",
189
+ "remove": "הסרת קישור",
190
+ "text": "טקסט",
191
+ "text_hint": "השאר ריק כדי להשתמש בכתובת כטקסט.",
192
+ "title_edit": "עריכת קישור",
193
+ "title_insert": "הוספת קישור"
194
+ },
195
+ "linkCard": {
196
+ "apply_failed": "לא ניתן להוסיף את הכרטיס כאן.",
197
+ "description": "תיאור",
198
+ "display": "הצגה בתור",
199
+ "display_card": "כרטיס",
200
+ "display_link": "קישור",
201
+ "fetch_failed": "לא ניתן היה לטעון את נתוני העמוד: {error}. אפשר למלא את השדות ידנית.",
202
+ "href_invalid": "הזינו את הכתובת המלאה של עמוד, לדוגמה https://example.com/page.",
203
+ "image": "תמונה",
204
+ "image_choose": "בחירת תמונה",
205
+ "image_failed": "לא ניתן היה להעלות את התמונה. נסו שוב.",
206
+ "image_remove": "הסרת תמונה",
207
+ "image_replace": "החלפה",
208
+ "layout": "תצוגה",
209
+ "layout_compact": "קומפקטי",
210
+ "layout_large": "גדול",
211
+ "layout_text": "ללא תמונה",
212
+ "loading": "נתוני העמוד נטענים…",
213
+ "page_title": "כותרת",
214
+ "paste_dismiss": "השארת הקישור",
215
+ "paste_error": "אין תצוגה מקדימה לעמוד זה.",
216
+ "protocol_missing": "הכתובת צריכה להתחיל ב־https:// או ב־http://.",
217
+ "refresh": "רענון נתונים",
218
+ "site_name": "שם האתר",
219
+ "title_edit": "עריכת כרטיס קישור",
220
+ "title_insert": "הוספת כרטיס קישור"
86
221
  },
87
222
  "preview": {
88
223
  "title": "תצוגה מקדימה"
89
224
  },
225
+ "remove": "הסרה",
226
+ "save": "שמירה",
90
227
  "source": {
91
228
  "prettify": "סידור פורמט",
92
229
  "title": "הצגת קוד מקור"
93
230
  },
94
231
  "video": {
232
+ "apply_failed": "לא ניתן להוסיף את הסרטון כאן.",
233
+ "autoplay": "הפעלה אוטומטית ללא קול",
234
+ "controls": "הצגת פקדים",
95
235
  "height": "גובה",
96
- "src": "מקור",
97
- "title": "הוסף/ערוך סרטון",
236
+ "keep_ratio": "שמור על יחס",
237
+ "loop": "לולאה",
238
+ "poster": "תמונת שער",
239
+ "poster_choose": "בחירת תמונה",
240
+ "poster_hint": "אופציונלי. מוצגת עד שהסרטון מתחיל.",
241
+ "poster_url": "כתובת URL של תמונת השער",
242
+ "preview": "תצוגה מקדימה של הסרטון",
243
+ "preview_empty": "התצוגה המקדימה תופיע לאחר זיהוי הקישור.",
244
+ "size": "גודל",
245
+ "size_custom": "מותאם אישית",
246
+ "size_invalid": "הזן את הגודל בפיקסלים.",
247
+ "size_responsive": "רספונסיבי",
248
+ "size_responsive_embed": "רספונסיבי 16:9",
249
+ "source_upload": "העלאה",
250
+ "source_url": "מכתובת URL",
251
+ "start": "התחלה ב-",
252
+ "start_invalid": "הזן את הזמן בפורמט m:ss או h:mm:ss.",
253
+ "title_edit": "עריכת סרטון",
254
+ "title_insert": "הוספת סרטון",
255
+ "upload_choose": "בחר קובץ וידאו",
256
+ "upload_failed": "לא ניתן היה להעלות את הקובץ. נסה שוב.",
257
+ "upload_progress": "{loaded} מתוך {total} MB",
258
+ "upload_replace": "החלפה",
259
+ "url": "קישור לסרטון",
260
+ "url_file_protocol": "הוסיפו פרוטוקול לקישור הקובץ: https://‎ או http://‎.",
261
+ "url_required": "הדביקו קישור ל־YouTube, ל־Vimeo או לקובץ וידאו.",
262
+ "url_unsupported": "השתמשו בקישור ל־YouTube או ל־Vimeo, או בקישור לקובץ וידאו (.mp4, .webm, .ogg, .mov). לאתרים אחרים השתמשו בקוד ההטמעה.",
98
263
  "width": "רוחב"
99
264
  }
100
265
  },
@@ -171,7 +336,7 @@
171
336
  "search": "חפש אימוג'י...",
172
337
  "title": "אימוג'י"
173
338
  },
174
- "iframe": "iframe",
339
+ "iframe": "הטמעה",
175
340
  "image": "תמונה",
176
341
  "image_toolbar": {
177
342
  "align_left": "Align left",
@@ -213,9 +378,47 @@
213
378
  "style": {
214
379
  "color": {
215
380
  "custom": "צבע מותאם",
381
+ "default": "ברירת מחדל",
382
+ "eyedropper": "בחירת צבע מהמסך",
383
+ "hex": "צבע הקסדצימלי",
384
+ "hex_invalid": "הזן צבע בפורמט #rgb או #rrggbb.",
216
385
  "highlight": "צבע הדגשה",
217
- "text": "צבע טקסט",
218
- "unset": "ביטול צבע"
386
+ "names": {
387
+ "amber": "ענבר",
388
+ "black": "שחור",
389
+ "blue": "כחול",
390
+ "dark_amber": "ענבר כהה",
391
+ "dark_blue": "כחול כהה",
392
+ "dark_green": "ירוק כהה",
393
+ "dark_grey": "אפור כהה",
394
+ "dark_orange": "כתום כהה",
395
+ "dark_pink": "ורוד כהה",
396
+ "dark_purple": "סגול כהה",
397
+ "dark_red": "אדום כהה",
398
+ "dark_teal": "טורקיז כהה",
399
+ "green": "ירוק",
400
+ "grey": "אפור",
401
+ "light_amber": "ענבר בהיר",
402
+ "light_blue": "כחול בהיר",
403
+ "light_green": "ירוק בהיר",
404
+ "light_grey": "אפור בהיר",
405
+ "light_orange": "כתום בהיר",
406
+ "light_pink": "ורוד בהיר",
407
+ "light_purple": "סגול בהיר",
408
+ "light_red": "אדום בהיר",
409
+ "light_teal": "טורקיז בהיר",
410
+ "medium_grey": "אפור בינוני",
411
+ "orange": "כתום",
412
+ "pale_grey": "אפור חיוור",
413
+ "pink": "ורוד",
414
+ "purple": "סגול",
415
+ "red": "אדום",
416
+ "teal": "טורקיז",
417
+ "white": "לבן"
418
+ },
419
+ "no_highlight": "ללא הדגשה",
420
+ "recent": "אחרונים",
421
+ "text": "צבע טקסט"
219
422
  },
220
423
  "fontFamily": "משפחת גופן",
221
424
  "fontSize": "גודל גופן",