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": "Angre"
5
5
  },
6
6
  "ai": {
7
+ "another_version": "En annen versjon",
7
8
  "append": "Legg til i slutten",
9
+ "change_vs_original": "{percent} sammenlignet med originalen",
10
+ "changes": "Endringer",
11
+ "context": {
12
+ "characters": "{n} tegn",
13
+ "cursor": "Ved markøren",
14
+ "document": "Hele teksten",
15
+ "excerpt": "«{text}»",
16
+ "paragraphs": "{n} avsnitt",
17
+ "selection": "Merket: {paragraphs}, {characters}"
18
+ },
19
+ "copied": "Kopiert",
20
+ "copy": "Kopier",
8
21
  "defaultExamples": {
9
22
  "expand": {
10
23
  "prompt": "Utvid denne teksten til en mer detaljert versjon.",
@@ -23,19 +36,58 @@
23
36
  "title": "Oppsummer"
24
37
  }
25
38
  },
39
+ "effort_label": {
40
+ "default": "Innsats: standard",
41
+ "high": "Innsats: høy",
42
+ "low": "Innsats: lav",
43
+ "max": "Innsats: maksimal",
44
+ "medium": "Innsats: middels",
45
+ "xhigh": "Innsats: svært høy"
46
+ },
47
+ "effort_levels": {
48
+ "default": "Standard",
49
+ "high": "Høy",
50
+ "low": "Lav",
51
+ "max": "Maksimal",
52
+ "medium": "Middels",
53
+ "xhigh": "Svært høy"
54
+ },
26
55
  "error": "AI-genereringen feilet",
56
+ "errors": {
57
+ "auth": "AI-tjenesten avviste forespørselen: sjekk API-nøkkelen eller tilgangsrettighetene.",
58
+ "network": "Kunne ikke nå AI-tjenesten. Sjekk at den kjører og tillater forespørsler fra denne siden (CORS): nettleserkonsollen viser årsaken.",
59
+ "not_found": "Fant ikke adressen til AI-tjenesten: sjekk banen til endepunktet.",
60
+ "rate_limit": "For mange forespørsler til AI-tjenesten. Vent litt og prøv igjen.",
61
+ "request": "AI-tjenesten kunne ikke behandle forespørselen.",
62
+ "service_says": "Svar fra tjenesten:",
63
+ "timeout": "AI-tjenesten svarte ikke i tide. Prøv igjen.",
64
+ "unavailable": "AI-tjenesten er utilgjengelig: den laster kanskje en modell eller er opptatt. Prøv senere."
65
+ },
27
66
  "generate": "Generer",
28
67
  "insert": "Sett inn",
29
- "limit_exceeded": "Resultatet overskrider redigeringsverktøgets tegnlimit. Forkort teksten og bruk igjen.",
68
+ "insert_below": "Sett inn under",
69
+ "limit_exceeded": "Resultatet er lengre enn tegngrensen i redigeringsverktøyet tillater. Be om en kortere versjon.",
30
70
  "loading": "Genererer...",
31
71
  "prompt": "Prompt",
72
+ "prompt_placeholder": "Be om å skrive eller redigere teksten",
32
73
  "quick_prompts": "Hurtigprompts",
33
74
  "reasoning_effort": "Resonnementsevne",
34
- "replace": "Erstatt",
75
+ "replace_selection": "Erstatt merket tekst",
35
76
  "result": "Resultat",
77
+ "send_hint": "Enter — send",
36
78
  "stop": "Stopp",
37
79
  "thinking": "Tenker",
38
- "title": "AI-skriving",
80
+ "thinking_label": {
81
+ "off": "Resonnering: av",
82
+ "on": "Resonnering: på"
83
+ },
84
+ "thinking_now": "Tenker…",
85
+ "thinking_states": {
86
+ "off": "Av",
87
+ "on": "På"
88
+ },
89
+ "thought_for": "Tenkte i {seconds} s",
90
+ "title": "Assistent",
39
91
  "unavailable": "Konfigurer en AI-leverandør for å bruke denne handlingen"
40
92
  },
41
93
  "alignment": "Justering",
@@ -51,50 +103,163 @@
51
103
  "defaultValue": "Standardverdi",
52
104
  "dialog": {
53
105
  "apply": "Bruk",
106
+ "cancel": "Avbryt",
54
107
  "clear": "Tøm",
55
108
  "close": "Lukk",
56
109
  "iframe": {
57
- "dialog_title": "Legg til/rediger iframe",
58
- "frameborder": "Iframe-ramme",
110
+ "advanced": "Avansert",
111
+ "allow": "Tillatelser (allow)",
112
+ "allow_hint": "For eksempel: autoplay; fullscreen; clipboard-write",
113
+ "apply_failed": "Innebyggingen kan ikke settes inn her.",
114
+ "border": "Vis ramme",
115
+ "code_invalid": "Lim inn koden for én iframe med en adresse. Koder med skript eller andre tagger støttes ikke.",
116
+ "code_parsed": "Koden er tolket: {fields}.",
59
117
  "height": "Høyde",
118
+ "input": "Lenke eller innebyggingskode",
119
+ "input_hint": "Lim inn adressen eller iframe-koden fra nettstedets Del- eller Bygg inn-meny.",
120
+ "keep_ratio": "Behold proporsjon",
121
+ "lazy": "Last inn når den rulles inn i visningen",
60
122
  "name": "Navn",
61
- "src": "Kilde",
62
- "src_invalid": "Inndataen er ikke en gyldig URL",
63
- "title": "Tittel",
64
- "width": "Bredd"
123
+ "parsed_allow": "tillatelser",
124
+ "parsed_fullscreen": "fullskjerm",
125
+ "parsed_loading": "utsatt lasting",
126
+ "parsed_name": "navn",
127
+ "parsed_sandbox": "sandbox",
128
+ "parsed_size": "størrelse {width} × {height}",
129
+ "parsed_src": "adresse",
130
+ "parsed_title": "tittel",
131
+ "preview": "Forhåndsvisning av innebygging",
132
+ "preview_empty": "Forhåndsvisningen vises når adressen er gyldig.",
133
+ "sandbox": "Sandkasse (sandbox)",
134
+ "sandbox_hint": "Tomt: ingen begrensninger. For eksempel: allow-scripts allow-same-origin",
135
+ "size": "Størrelse",
136
+ "size_custom": "Egendefinert",
137
+ "size_invalid": "Oppgi størrelsen i piksler.",
138
+ "size_responsive": "Responsiv",
139
+ "size_responsive_hint": "Fyller tekstbredden i forholdet {ratio}.",
140
+ "src_invalid": "En innebygging trenger en nettadresse som begynner med https:// eller http://.",
141
+ "src_protocol": "Legg til protokollen i adressen: https:// eller http://.",
142
+ "src_required": "Lim inn en lenke eller en innebyggingskode.",
143
+ "title_edit": "Rediger innebygging",
144
+ "title_insert": "Bygg inn innhold",
145
+ "title_missing": "Skjermlesere leser opp innebyggingen ved tittelen. Beskriv hva den viser.",
146
+ "title_text": "Tittel for skjermlesere",
147
+ "width": "Bredde"
65
148
  },
66
149
  "image": {
67
- "alt": "Alternativ tekst",
150
+ "alt_missing": "Skjermlesere og søkemotorer kan ikke lese et bilde uten alternativ tekst.",
151
+ "alt_text": "Alternativ tekst for skjermlesere",
152
+ "apply_error": "Bildet kunne ikke lagres her.",
68
153
  "caption": "Bildetekst",
69
154
  "caption_placeholder": "Legg til bildetekst…",
70
- "dialog_title": "Legg til/rediger bilde",
71
155
  "height": "Høyde",
72
156
  "keep_ratio": "Behold proporsjon",
157
+ "original_size": "Original {width} × {height}",
158
+ "position": "Plassering",
159
+ "position_center": "Midten",
160
+ "position_left": "Venstre",
161
+ "position_right": "Høyre",
162
+ "remove_error": "Bildet kunne ikke fjernes.",
163
+ "size": "Størrelse",
164
+ "size_custom": "Egendefinert",
165
+ "size_original": "Original",
166
+ "size_text": "Tekstbredde",
167
+ "source_upload": "Last opp",
168
+ "source_url": "Fra URL",
73
169
  "src": "Kilde",
74
- "title": "Legg til/rediger bilde",
170
+ "title_edit": "Rediger bilde",
171
+ "title_insert": "Sett inn bilde",
172
+ "upload_cancel": "Avbryt opplasting",
173
+ "upload_error": "Bildet kunne ikke lastes opp.",
174
+ "upload_file": "Bildefil",
75
175
  "width": "Bredd"
76
176
  },
177
+ "insert": "Sett inn",
77
178
  "link": {
179
+ "advanced": "Avansert",
180
+ "apply_error": "Lenken kunne ikke brukes.",
78
181
  "class": "CSS-klasse",
79
182
  "href": "Lenkeadresse",
80
- "href_error": "Ugyldig lenkeadresse",
81
- "rel": "Rel",
82
- "target": "Åpne i...",
83
- "target_blank": "Nytt vindu",
84
- "target_self": "Gjeldende vindu",
85
- "title": "Legg til/rediger lenke"
183
+ "href_invalid": "Skriv inn en lenkeadresse, for eksempel https://example.com, #anker eller /side.",
184
+ "new_tab": "Åpne i ny fane",
185
+ "protocol_missing": "Ingen protokoll. Legg til:",
186
+ "rel": "Rel-attributter",
187
+ "rel_hint": "Valgfri verdi: Enter, mellomrom eller komma legger den til.",
188
+ "rel_new_tab_hint": "En lenke som åpnes i ny fane, får også noopener og noreferrer.",
189
+ "remove": "Fjern lenke",
190
+ "text": "Tekst",
191
+ "text_hint": "La stå tomt for å bruke adressen som tekst.",
192
+ "title_edit": "Rediger lenke",
193
+ "title_insert": "Sett inn lenke"
194
+ },
195
+ "linkCard": {
196
+ "apply_failed": "Kortet kan ikke settes inn her.",
197
+ "description": "Beskrivelse",
198
+ "display": "Vis som",
199
+ "display_card": "Kort",
200
+ "display_link": "Lenke",
201
+ "fetch_failed": "Sidedataene kunne ikke lastes inn: {error}. Feltene kan fylles ut manuelt.",
202
+ "href_invalid": "Skriv inn hele adressen til en side, for eksempel https://example.com/page.",
203
+ "image": "Bilde",
204
+ "image_choose": "Velg bilde",
205
+ "image_failed": "Bildet kunne ikke lastes opp. Prøv igjen.",
206
+ "image_remove": "Fjern bilde",
207
+ "image_replace": "Erstatt",
208
+ "layout": "Visning",
209
+ "layout_compact": "Kompakt",
210
+ "layout_large": "Stor",
211
+ "layout_text": "Uten bilde",
212
+ "loading": "Laster inn sidedata…",
213
+ "page_title": "Tittel",
214
+ "paste_dismiss": "Behold lenken",
215
+ "paste_error": "Ingen forhåndsvisning for denne siden.",
216
+ "protocol_missing": "Start adressen med https:// eller http://.",
217
+ "refresh": "Oppdater data",
218
+ "site_name": "Nettstedsnavn",
219
+ "title_edit": "Rediger lenkekort",
220
+ "title_insert": "Sett inn lenkekort"
86
221
  },
87
222
  "preview": {
88
223
  "title": "Forhåndsvisning"
89
224
  },
225
+ "remove": "Fjern",
226
+ "save": "Lagre",
90
227
  "source": {
91
228
  "prettify": "Formater",
92
229
  "title": "Vis kildekode"
93
230
  },
94
231
  "video": {
232
+ "apply_failed": "Videoen kan ikke settes inn her.",
233
+ "autoplay": "Autospill uten lyd",
234
+ "controls": "Vis kontroller",
95
235
  "height": "Høyde",
96
- "src": "Kilde",
97
- "title": "Legg til/rediger video",
236
+ "keep_ratio": "Behold proporsjon",
237
+ "loop": "Gjenta",
238
+ "poster": "Plakatbilde",
239
+ "poster_choose": "Velg bilde",
240
+ "poster_hint": "Valgfritt. Vises til videoen starter.",
241
+ "poster_url": "URL til plakatbilde",
242
+ "preview": "Forhåndsvisning av video",
243
+ "preview_empty": "Forhåndsvisningen vises når lenken er gjenkjent.",
244
+ "size": "Størrelse",
245
+ "size_custom": "Egendefinert",
246
+ "size_invalid": "Skriv inn størrelsen i piksler.",
247
+ "size_responsive": "Responsiv",
248
+ "size_responsive_embed": "Responsiv 16:9",
249
+ "source_upload": "Last opp",
250
+ "source_url": "Fra URL",
251
+ "start": "Start ved",
252
+ "start_invalid": "Skriv inn tiden som m:ss eller h:mm:ss.",
253
+ "title_edit": "Rediger video",
254
+ "title_insert": "Sett inn video",
255
+ "upload_choose": "Velg en videofil",
256
+ "upload_failed": "Filen kunne ikke lastes opp. Prøv igjen.",
257
+ "upload_progress": "{loaded} av {total} MB",
258
+ "upload_replace": "Erstatt",
259
+ "url": "Videolenke",
260
+ "url_file_protocol": "Legg til protokollen i fillenken: https:// eller http://.",
261
+ "url_required": "Lim inn en lenke til YouTube, Vimeo eller en videofil.",
262
+ "url_unsupported": "Bruk en lenke til YouTube eller Vimeo, eller en lenke til en videofil (.mp4, .webm, .ogg, .mov). Bruk innebyggingskoden for andre nettsteder.",
98
263
  "width": "Bredd"
99
264
  }
100
265
  },
@@ -171,7 +336,7 @@
171
336
  "search": "Søk emojier...",
172
337
  "title": "Emoji"
173
338
  },
174
- "iframe": "iframe",
339
+ "iframe": "Innebygging",
175
340
  "image": "Bilde",
176
341
  "image_toolbar": {
177
342
  "align_left": "Align left",
@@ -212,10 +377,48 @@
212
377
  },
213
378
  "style": {
214
379
  "color": {
215
- "custom": "Tilpasset farge",
380
+ "custom": "Egendefinert farge",
381
+ "default": "Standard",
382
+ "eyedropper": "Hent en farge fra skjermen",
383
+ "hex": "Hex-farge",
384
+ "hex_invalid": "Skriv inn en farge som #rgb eller #rrggbb.",
216
385
  "highlight": "Markeringsfarge",
217
- "text": "Tekstfarge",
218
- "unset": "Fjern farge"
386
+ "names": {
387
+ "amber": "Ravgul",
388
+ "black": "Svart",
389
+ "blue": "Blå",
390
+ "dark_amber": "Mørk ravgul",
391
+ "dark_blue": "Mørkeblå",
392
+ "dark_green": "Mørkegrønn",
393
+ "dark_grey": "Mørkegrå",
394
+ "dark_orange": "Mørkeoransje",
395
+ "dark_pink": "Mørkerosa",
396
+ "dark_purple": "Mørkelilla",
397
+ "dark_red": "Mørkerød",
398
+ "dark_teal": "Mørkeblågrønn",
399
+ "green": "Grønn",
400
+ "grey": "Grå",
401
+ "light_amber": "Lys ravgul",
402
+ "light_blue": "Lyseblå",
403
+ "light_green": "Lysegrønn",
404
+ "light_grey": "Lysegrå",
405
+ "light_orange": "Lyseoransje",
406
+ "light_pink": "Lyserosa",
407
+ "light_purple": "Lyselilla",
408
+ "light_red": "Lys rød",
409
+ "light_teal": "Lyseblågrønn",
410
+ "medium_grey": "Mellomgrå",
411
+ "orange": "Oransje",
412
+ "pale_grey": "Blekgrå",
413
+ "pink": "Rosa",
414
+ "purple": "Lilla",
415
+ "red": "Rød",
416
+ "teal": "Blågrønn",
417
+ "white": "Hvit"
418
+ },
419
+ "no_highlight": "Ingen utheving",
420
+ "recent": "Nylig brukt",
421
+ "text": "Tekstfarge"
219
422
  },
220
423
  "fontFamily": "Skriftfamilie",
221
424
  "fontSize": "Skriftstørrelse",
@@ -4,7 +4,20 @@
4
4
  "undo": "Cofnij"
5
5
  },
6
6
  "ai": {
7
+ "another_version": "Inna wersja",
7
8
  "append": "Dodaj na końcu",
9
+ "change_vs_original": "{percent} względem oryginału",
10
+ "changes": "Zmiany",
11
+ "context": {
12
+ "characters": "{n} zn.",
13
+ "cursor": "W miejscu kursora",
14
+ "document": "Cały tekst",
15
+ "excerpt": "„{text}”",
16
+ "paragraphs": "{n} akap.",
17
+ "selection": "Zaznaczono: {paragraphs}, {characters}"
18
+ },
19
+ "copied": "Skopiowano",
20
+ "copy": "Kopiuj",
8
21
  "defaultExamples": {
9
22
  "expand": {
10
23
  "prompt": "Rozwiń ten tekst w bardziej szczegółową wersję.",
@@ -23,19 +36,58 @@
23
36
  "title": "Podsumowanie"
24
37
  }
25
38
  },
39
+ "effort_label": {
40
+ "default": "Stopień: domyślny",
41
+ "high": "Stopień: wysoki",
42
+ "low": "Stopień: niski",
43
+ "max": "Stopień: maksymalny",
44
+ "medium": "Stopień: średni",
45
+ "xhigh": "Stopień: bardzo wysoki"
46
+ },
47
+ "effort_levels": {
48
+ "default": "Domyślny",
49
+ "high": "Wysoki",
50
+ "low": "Niski",
51
+ "max": "Maksymalny",
52
+ "medium": "Średni",
53
+ "xhigh": "Bardzo wysoki"
54
+ },
26
55
  "error": "Generowanie AI nie powiodło się",
56
+ "errors": {
57
+ "auth": "Usługa AI odrzuciła żądanie: sprawdź klucz API lub uprawnienia.",
58
+ "network": "Nie udało się połączyć z usługą AI. Sprawdź, czy działa i zezwala na żądania z tej strony (CORS): przyczynę pokaże konsola przeglądarki.",
59
+ "not_found": "Nie znaleziono adresu usługi AI: sprawdź ścieżkę endpointu.",
60
+ "rate_limit": "Zbyt wiele żądań do usługi AI. Odczekaj chwilę i spróbuj ponownie.",
61
+ "request": "Usługa AI nie mogła przetworzyć żądania.",
62
+ "service_says": "Odpowiedź usługi:",
63
+ "timeout": "Usługa AI nie odpowiedziała na czas. Spróbuj ponownie.",
64
+ "unavailable": "Usługa AI jest niedostępna: może ładować model lub być zajęta. Spróbuj później."
65
+ },
27
66
  "generate": "Generuj",
28
67
  "insert": "Wstaw",
29
- "limit_exceeded": "Wynik przekracza limit znaków edytora. Skróć tekst i zastosuj ponownie.",
68
+ "insert_below": "Wstaw poniżej",
69
+ "limit_exceeded": "Wynik przekracza limit znaków edytora. Poproś o krótszą wersję.",
30
70
  "loading": "Generowanie...",
31
71
  "prompt": "Zapytanie",
72
+ "prompt_placeholder": "Poproś o napisanie lub edycję tekstu",
32
73
  "quick_prompts": "Szybkie zapytania",
33
74
  "reasoning_effort": "Stopień rozumowania",
34
- "replace": "Zamień",
75
+ "replace_selection": "Zastąp zaznaczenie",
35
76
  "result": "Wynik",
77
+ "send_hint": "Enter — wyślij",
36
78
  "stop": "Zatrzymaj",
37
79
  "thinking": "Rozmyślanie",
38
- "title": "Pisanie z AI",
80
+ "thinking_label": {
81
+ "off": "Rozumowanie: wyłączone",
82
+ "on": "Rozumowanie: włączone"
83
+ },
84
+ "thinking_now": "Myśli…",
85
+ "thinking_states": {
86
+ "off": "Wyłączone",
87
+ "on": "Włączone"
88
+ },
89
+ "thought_for": "Czas myślenia: {seconds} s",
90
+ "title": "Asystent",
39
91
  "unavailable": "Skonfiguruj dostawcę AI, aby użyć tej akcji"
40
92
  },
41
93
  "alignment": "Wyrównanie",
@@ -51,50 +103,163 @@
51
103
  "defaultValue": "Wartość domyślna",
52
104
  "dialog": {
53
105
  "apply": "Zastosuj",
106
+ "cancel": "Anuluj",
54
107
  "clear": "Wyczyść",
55
108
  "close": "Zamknij",
56
109
  "iframe": {
57
- "dialog_title": "Dodaj/edytuj iframe",
58
- "frameborder": "Ramka obramowania",
110
+ "advanced": "Zaawansowane",
111
+ "allow": "Uprawnienia (allow)",
112
+ "allow_hint": "Na przykład: autoplay; fullscreen; clipboard-write",
113
+ "apply_failed": "Nie można tu wstawić osadzenia.",
114
+ "border": "Pokaż obramowanie",
115
+ "code_invalid": "Wklej kod jednego elementu iframe z adresem. Kody ze skryptami lub innymi znacznikami nie są obsługiwane.",
116
+ "code_parsed": "Rozpoznano kod: {fields}.",
59
117
  "height": "Wysokość",
118
+ "input": "Link lub kod osadzenia",
119
+ "input_hint": "Wklej adres lub kod iframe z menu Udostępnij lub Osadź na stronie.",
120
+ "keep_ratio": "Zachowaj proporcje",
121
+ "lazy": "Ładuj po przewinięciu do widoku",
60
122
  "name": "Nazwa",
61
- "src": "Źródło",
62
- "src_invalid": "Wprowadzony URL jest nieprawidłowy",
63
- "title": "Tytuł",
123
+ "parsed_allow": "uprawnienia",
124
+ "parsed_fullscreen": "pełny ekran",
125
+ "parsed_loading": "leniwe ładowanie",
126
+ "parsed_name": "nazwa",
127
+ "parsed_sandbox": "sandbox",
128
+ "parsed_size": "rozmiar {width} × {height}",
129
+ "parsed_src": "adres",
130
+ "parsed_title": "tytuł",
131
+ "preview": "Podgląd osadzenia",
132
+ "preview_empty": "Podgląd pojawi się, gdy adres będzie prawidłowy.",
133
+ "sandbox": "Piaskownica (sandbox)",
134
+ "sandbox_hint": "Puste: bez ograniczeń. Na przykład: allow-scripts allow-same-origin",
135
+ "size": "Rozmiar",
136
+ "size_custom": "Własny",
137
+ "size_invalid": "Podaj rozmiar w pikselach.",
138
+ "size_responsive": "Responsywny",
139
+ "size_responsive_hint": "Wypełnia szerokość tekstu w proporcjach {ratio}.",
140
+ "src_invalid": "Osadzenie wymaga adresu internetowego zaczynającego się od https:// lub http://.",
141
+ "src_protocol": "Dodaj protokół do adresu: https:// lub http://.",
142
+ "src_required": "Wklej link lub kod osadzenia.",
143
+ "title_edit": "Edytuj osadzenie",
144
+ "title_insert": "Osadź treść",
145
+ "title_missing": "Czytniki ekranu odczytują osadzenie po tytule. Opisz, co przedstawia.",
146
+ "title_text": "Tytuł dla czytników ekranu",
64
147
  "width": "Szerokość"
65
148
  },
66
149
  "image": {
67
- "alt": "alt",
150
+ "alt_missing": "Czytniki ekranu i wyszukiwarki nie odczytają obrazu bez tekstu alternatywnego.",
151
+ "alt_text": "Tekst alternatywny dla czytników ekranu",
152
+ "apply_error": "Nie udało się zapisać obrazu w tym miejscu.",
68
153
  "caption": "Podpis",
69
154
  "caption_placeholder": "Dodaj podpis…",
70
- "dialog_title": "Dodaj/zmień obraz",
71
155
  "height": "Wysokość",
72
156
  "keep_ratio": "Zachowaj proporcję",
157
+ "original_size": "Oryginał {width} × {height}",
158
+ "position": "Położenie",
159
+ "position_center": "Na środku",
160
+ "position_left": "Do lewej",
161
+ "position_right": "Do prawej",
162
+ "remove_error": "Nie udało się usunąć obrazu.",
163
+ "size": "Rozmiar",
164
+ "size_custom": "Własny",
165
+ "size_original": "Oryginalny",
166
+ "size_text": "Szerokość tekstu",
167
+ "source_upload": "Prześlij",
168
+ "source_url": "Z adresu URL",
73
169
  "src": "Źródło",
74
- "title": "Tytuł",
170
+ "title_edit": "Edytuj obraz",
171
+ "title_insert": "Wstaw obraz",
172
+ "upload_cancel": "Anuluj przesyłanie",
173
+ "upload_error": "Nie udało się przesłać obrazu.",
174
+ "upload_file": "Plik obrazu",
75
175
  "width": "Szerokość"
76
176
  },
177
+ "insert": "Wstaw",
77
178
  "link": {
179
+ "advanced": "Zaawansowane",
180
+ "apply_error": "Nie udało się zastosować linku.",
78
181
  "class": "Klasa CSS",
79
182
  "href": "Adres linka",
80
- "href_error": "Nieprawidłowy adres linka",
81
- "rel": "rel",
82
- "target": "Otwórz w...",
83
- "target_blank": "Nowym oknie",
84
- "target_self": "Bieżącym oknie",
85
- "title": "Dodaj/zmień link"
183
+ "href_invalid": "Wpisz adres linku, na przykład https://example.com, #kotwica lub /strona.",
184
+ "new_tab": "Otwórz w nowej karcie",
185
+ "protocol_missing": "Brak protokołu. Dodaj:",
186
+ "rel": "Atrybuty rel",
187
+ "rel_hint": "Dowolna wartość: Enter, spacja lub przecinek ją dodaje.",
188
+ "rel_new_tab_hint": "Link otwierany w nowej karcie otrzymuje też noopener i noreferrer.",
189
+ "remove": "Usuń link",
190
+ "text": "Tekst",
191
+ "text_hint": "Pozostaw puste, aby użyć adresu jako tekstu.",
192
+ "title_edit": "Edytuj link",
193
+ "title_insert": "Wstaw link"
194
+ },
195
+ "linkCard": {
196
+ "apply_failed": "Nie można wstawić tutaj karty.",
197
+ "description": "Opis",
198
+ "display": "Pokaż jako",
199
+ "display_card": "Karta",
200
+ "display_link": "Link",
201
+ "fetch_failed": "Nie udało się wczytać danych strony: {error}. Możesz wypełnić pola ręcznie.",
202
+ "href_invalid": "Wpisz pełny adres strony, na przykład https://example.com/page.",
203
+ "image": "Obraz",
204
+ "image_choose": "Wybierz obraz",
205
+ "image_failed": "Nie udało się przesłać obrazu. Spróbuj ponownie.",
206
+ "image_remove": "Usuń obraz",
207
+ "image_replace": "Zastąp",
208
+ "layout": "Wygląd",
209
+ "layout_compact": "Kompaktowa",
210
+ "layout_large": "Duża",
211
+ "layout_text": "Bez obrazu",
212
+ "loading": "Wczytywanie danych strony…",
213
+ "page_title": "Tytuł",
214
+ "paste_dismiss": "Zostaw link",
215
+ "paste_error": "Brak podglądu dla tej strony.",
216
+ "protocol_missing": "Zacznij adres od https:// lub http://.",
217
+ "refresh": "Odśwież dane",
218
+ "site_name": "Nazwa witryny",
219
+ "title_edit": "Edytuj kartę linku",
220
+ "title_insert": "Wstaw kartę linku"
86
221
  },
87
222
  "preview": {
88
223
  "title": "Podgląd"
89
224
  },
225
+ "remove": "Usuń",
226
+ "save": "Zapisz",
90
227
  "source": {
91
228
  "prettify": "prettify",
92
229
  "title": "Pokaż kod źródłowy"
93
230
  },
94
231
  "video": {
232
+ "apply_failed": "Nie można wstawić tutaj wideo.",
233
+ "autoplay": "Autoodtwarzanie bez dźwięku",
234
+ "controls": "Pokaż elementy sterujące",
95
235
  "height": "Wysokość",
96
- "src": "Źródło",
97
- "title": "Dodaj/edytuj wideo",
236
+ "keep_ratio": "Zachowaj proporcję",
237
+ "loop": "Zapętl",
238
+ "poster": "Okładka",
239
+ "poster_choose": "Wybierz obraz",
240
+ "poster_hint": "Opcjonalnie. Wyświetlana do momentu uruchomienia wideo.",
241
+ "poster_url": "URL obrazu okładki",
242
+ "preview": "Podgląd wideo",
243
+ "preview_empty": "Podgląd pojawi się po rozpoznaniu linku.",
244
+ "size": "Rozmiar",
245
+ "size_custom": "Własny",
246
+ "size_invalid": "Podaj rozmiar w pikselach.",
247
+ "size_responsive": "Responsywny",
248
+ "size_responsive_embed": "Responsywny 16:9",
249
+ "source_upload": "Prześlij",
250
+ "source_url": "Z adresu URL",
251
+ "start": "Zacznij od",
252
+ "start_invalid": "Wpisz czas w formacie m:ss lub h:mm:ss.",
253
+ "title_edit": "Edytuj wideo",
254
+ "title_insert": "Wstaw wideo",
255
+ "upload_choose": "Wybierz plik wideo",
256
+ "upload_failed": "Nie udało się przesłać pliku. Spróbuj ponownie.",
257
+ "upload_progress": "{loaded} z {total} MB",
258
+ "upload_replace": "Zastąp",
259
+ "url": "Link do wideo",
260
+ "url_file_protocol": "Dodaj protokół do linku do pliku: https:// lub http://.",
261
+ "url_required": "Wklej link do YouTube, Vimeo lub pliku wideo.",
262
+ "url_unsupported": "Użyj linku do YouTube lub Vimeo albo linku do pliku wideo (.mp4, .webm, .ogg, .mov). W przypadku innych witryn użyj kodu osadzania.",
98
263
  "width": "Szerokość"
99
264
  }
100
265
  },
@@ -171,7 +336,7 @@
171
336
  "search": "Szukaj emoji...",
172
337
  "title": "Emoji"
173
338
  },
174
- "iframe": "iframe",
339
+ "iframe": "Osadzenie",
175
340
  "image": "Obraz",
176
341
  "image_toolbar": {
177
342
  "align_left": "Align left",
@@ -212,10 +377,48 @@
212
377
  },
213
378
  "style": {
214
379
  "color": {
215
- "custom": "Własny wybór",
380
+ "custom": "Własny kolor",
381
+ "default": "Domyślny",
382
+ "eyedropper": "Pobierz kolor z ekranu",
383
+ "hex": "Kolor szesnastkowy",
384
+ "hex_invalid": "Wpisz kolor w formacie #rgb lub #rrggbb.",
216
385
  "highlight": "Kolor podświetlenia",
217
- "text": "Kolor tekstu",
218
- "unset": "Wyczyść kolor"
386
+ "names": {
387
+ "amber": "Bursztynowy",
388
+ "black": "Czarny",
389
+ "blue": "Niebieski",
390
+ "dark_amber": "Ciemnobursztynowy",
391
+ "dark_blue": "Ciemnoniebieski",
392
+ "dark_green": "Ciemnozielony",
393
+ "dark_grey": "Ciemnoszary",
394
+ "dark_orange": "Ciemnopomarańczowy",
395
+ "dark_pink": "Ciemnoróżowy",
396
+ "dark_purple": "Ciemnofioletowy",
397
+ "dark_red": "Ciemnoczerwony",
398
+ "dark_teal": "Ciemnomorski",
399
+ "green": "Zielony",
400
+ "grey": "Szary",
401
+ "light_amber": "Jasnobursztynowy",
402
+ "light_blue": "Jasnoniebieski",
403
+ "light_green": "Jasnozielony",
404
+ "light_grey": "Jasnoszary",
405
+ "light_orange": "Jasnopomarańczowy",
406
+ "light_pink": "Jasnoróżowy",
407
+ "light_purple": "Jasnofioletowy",
408
+ "light_red": "Jasnoczerwony",
409
+ "light_teal": "Jasnomorski",
410
+ "medium_grey": "Średnioszary",
411
+ "orange": "Pomarańczowy",
412
+ "pale_grey": "Bladoszary",
413
+ "pink": "Różowy",
414
+ "purple": "Fioletowy",
415
+ "red": "Czerwony",
416
+ "teal": "Morski",
417
+ "white": "Biały"
418
+ },
419
+ "no_highlight": "Bez podświetlenia",
420
+ "recent": "Ostatnie",
421
+ "text": "Kolor tekstu"
219
422
  },
220
423
  "fontFamily": "Czcionka",
221
424
  "fontSize": "Rozmiar",