@ckeditor/ckeditor5-code-block 0.0.0-internal-20241017.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 (326) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/LICENSE.md +21 -0
  3. package/README.md +26 -0
  4. package/build/code-block.js +5 -0
  5. package/build/translations/af.js +1 -0
  6. package/build/translations/ar.js +1 -0
  7. package/build/translations/az.js +1 -0
  8. package/build/translations/bg.js +1 -0
  9. package/build/translations/bn.js +1 -0
  10. package/build/translations/bs.js +1 -0
  11. package/build/translations/ca.js +1 -0
  12. package/build/translations/cs.js +1 -0
  13. package/build/translations/da.js +1 -0
  14. package/build/translations/de-ch.js +1 -0
  15. package/build/translations/de.js +1 -0
  16. package/build/translations/el.js +1 -0
  17. package/build/translations/en-au.js +1 -0
  18. package/build/translations/es-co.js +1 -0
  19. package/build/translations/es.js +1 -0
  20. package/build/translations/et.js +1 -0
  21. package/build/translations/fa.js +1 -0
  22. package/build/translations/fi.js +1 -0
  23. package/build/translations/fr.js +1 -0
  24. package/build/translations/gl.js +1 -0
  25. package/build/translations/he.js +1 -0
  26. package/build/translations/hi.js +1 -0
  27. package/build/translations/hr.js +1 -0
  28. package/build/translations/hu.js +1 -0
  29. package/build/translations/id.js +1 -0
  30. package/build/translations/it.js +1 -0
  31. package/build/translations/ja.js +1 -0
  32. package/build/translations/jv.js +1 -0
  33. package/build/translations/ko.js +1 -0
  34. package/build/translations/ku.js +1 -0
  35. package/build/translations/lt.js +1 -0
  36. package/build/translations/lv.js +1 -0
  37. package/build/translations/ms.js +1 -0
  38. package/build/translations/nl.js +1 -0
  39. package/build/translations/no.js +1 -0
  40. package/build/translations/pl.js +1 -0
  41. package/build/translations/pt-br.js +1 -0
  42. package/build/translations/pt.js +1 -0
  43. package/build/translations/ro.js +1 -0
  44. package/build/translations/ru.js +1 -0
  45. package/build/translations/sk.js +1 -0
  46. package/build/translations/sq.js +1 -0
  47. package/build/translations/sr-latn.js +1 -0
  48. package/build/translations/sr.js +1 -0
  49. package/build/translations/sv.js +1 -0
  50. package/build/translations/th.js +1 -0
  51. package/build/translations/tk.js +1 -0
  52. package/build/translations/tr.js +1 -0
  53. package/build/translations/ug.js +1 -0
  54. package/build/translations/uk.js +1 -0
  55. package/build/translations/ur.js +1 -0
  56. package/build/translations/uz.js +1 -0
  57. package/build/translations/vi.js +1 -0
  58. package/build/translations/zh-cn.js +1 -0
  59. package/build/translations/zh.js +1 -0
  60. package/ckeditor5-metadata.json +34 -0
  61. package/dist/augmentation.d.ts +29 -0
  62. package/dist/codeblock.d.ts +37 -0
  63. package/dist/codeblockcommand.d.ts +64 -0
  64. package/dist/codeblockconfig.d.ts +150 -0
  65. package/dist/codeblockediting.d.ts +51 -0
  66. package/dist/codeblockui.d.ts +37 -0
  67. package/dist/converters.d.ts +130 -0
  68. package/dist/indentcodeblockcommand.d.ts +37 -0
  69. package/dist/index-content.css +24 -0
  70. package/dist/index-editor.css +12 -0
  71. package/dist/index.css +46 -0
  72. package/dist/index.css.map +1 -0
  73. package/dist/index.d.ts +19 -0
  74. package/dist/index.js +1455 -0
  75. package/dist/index.js.map +1 -0
  76. package/dist/outdentcodeblockcommand.d.ts +37 -0
  77. package/dist/translations/af.d.ts +8 -0
  78. package/dist/translations/af.js +5 -0
  79. package/dist/translations/af.umd.js +11 -0
  80. package/dist/translations/ar.d.ts +8 -0
  81. package/dist/translations/ar.js +5 -0
  82. package/dist/translations/ar.umd.js +11 -0
  83. package/dist/translations/az.d.ts +8 -0
  84. package/dist/translations/az.js +5 -0
  85. package/dist/translations/az.umd.js +11 -0
  86. package/dist/translations/bg.d.ts +8 -0
  87. package/dist/translations/bg.js +5 -0
  88. package/dist/translations/bg.umd.js +11 -0
  89. package/dist/translations/bn.d.ts +8 -0
  90. package/dist/translations/bn.js +5 -0
  91. package/dist/translations/bn.umd.js +11 -0
  92. package/dist/translations/bs.d.ts +8 -0
  93. package/dist/translations/bs.js +5 -0
  94. package/dist/translations/bs.umd.js +11 -0
  95. package/dist/translations/ca.d.ts +8 -0
  96. package/dist/translations/ca.js +5 -0
  97. package/dist/translations/ca.umd.js +11 -0
  98. package/dist/translations/cs.d.ts +8 -0
  99. package/dist/translations/cs.js +5 -0
  100. package/dist/translations/cs.umd.js +11 -0
  101. package/dist/translations/da.d.ts +8 -0
  102. package/dist/translations/da.js +5 -0
  103. package/dist/translations/da.umd.js +11 -0
  104. package/dist/translations/de-ch.d.ts +8 -0
  105. package/dist/translations/de-ch.js +5 -0
  106. package/dist/translations/de-ch.umd.js +11 -0
  107. package/dist/translations/de.d.ts +8 -0
  108. package/dist/translations/de.js +5 -0
  109. package/dist/translations/de.umd.js +11 -0
  110. package/dist/translations/el.d.ts +8 -0
  111. package/dist/translations/el.js +5 -0
  112. package/dist/translations/el.umd.js +11 -0
  113. package/dist/translations/en-au.d.ts +8 -0
  114. package/dist/translations/en-au.js +5 -0
  115. package/dist/translations/en-au.umd.js +11 -0
  116. package/dist/translations/en.d.ts +8 -0
  117. package/dist/translations/en.js +5 -0
  118. package/dist/translations/en.umd.js +11 -0
  119. package/dist/translations/es-co.d.ts +8 -0
  120. package/dist/translations/es-co.js +5 -0
  121. package/dist/translations/es-co.umd.js +11 -0
  122. package/dist/translations/es.d.ts +8 -0
  123. package/dist/translations/es.js +5 -0
  124. package/dist/translations/es.umd.js +11 -0
  125. package/dist/translations/et.d.ts +8 -0
  126. package/dist/translations/et.js +5 -0
  127. package/dist/translations/et.umd.js +11 -0
  128. package/dist/translations/fa.d.ts +8 -0
  129. package/dist/translations/fa.js +5 -0
  130. package/dist/translations/fa.umd.js +11 -0
  131. package/dist/translations/fi.d.ts +8 -0
  132. package/dist/translations/fi.js +5 -0
  133. package/dist/translations/fi.umd.js +11 -0
  134. package/dist/translations/fr.d.ts +8 -0
  135. package/dist/translations/fr.js +5 -0
  136. package/dist/translations/fr.umd.js +11 -0
  137. package/dist/translations/gl.d.ts +8 -0
  138. package/dist/translations/gl.js +5 -0
  139. package/dist/translations/gl.umd.js +11 -0
  140. package/dist/translations/he.d.ts +8 -0
  141. package/dist/translations/he.js +5 -0
  142. package/dist/translations/he.umd.js +11 -0
  143. package/dist/translations/hi.d.ts +8 -0
  144. package/dist/translations/hi.js +5 -0
  145. package/dist/translations/hi.umd.js +11 -0
  146. package/dist/translations/hr.d.ts +8 -0
  147. package/dist/translations/hr.js +5 -0
  148. package/dist/translations/hr.umd.js +11 -0
  149. package/dist/translations/hu.d.ts +8 -0
  150. package/dist/translations/hu.js +5 -0
  151. package/dist/translations/hu.umd.js +11 -0
  152. package/dist/translations/id.d.ts +8 -0
  153. package/dist/translations/id.js +5 -0
  154. package/dist/translations/id.umd.js +11 -0
  155. package/dist/translations/it.d.ts +8 -0
  156. package/dist/translations/it.js +5 -0
  157. package/dist/translations/it.umd.js +11 -0
  158. package/dist/translations/ja.d.ts +8 -0
  159. package/dist/translations/ja.js +5 -0
  160. package/dist/translations/ja.umd.js +11 -0
  161. package/dist/translations/jv.d.ts +8 -0
  162. package/dist/translations/jv.js +5 -0
  163. package/dist/translations/jv.umd.js +11 -0
  164. package/dist/translations/ko.d.ts +8 -0
  165. package/dist/translations/ko.js +5 -0
  166. package/dist/translations/ko.umd.js +11 -0
  167. package/dist/translations/ku.d.ts +8 -0
  168. package/dist/translations/ku.js +5 -0
  169. package/dist/translations/ku.umd.js +11 -0
  170. package/dist/translations/lt.d.ts +8 -0
  171. package/dist/translations/lt.js +5 -0
  172. package/dist/translations/lt.umd.js +11 -0
  173. package/dist/translations/lv.d.ts +8 -0
  174. package/dist/translations/lv.js +5 -0
  175. package/dist/translations/lv.umd.js +11 -0
  176. package/dist/translations/ms.d.ts +8 -0
  177. package/dist/translations/ms.js +5 -0
  178. package/dist/translations/ms.umd.js +11 -0
  179. package/dist/translations/nl.d.ts +8 -0
  180. package/dist/translations/nl.js +5 -0
  181. package/dist/translations/nl.umd.js +11 -0
  182. package/dist/translations/no.d.ts +8 -0
  183. package/dist/translations/no.js +5 -0
  184. package/dist/translations/no.umd.js +11 -0
  185. package/dist/translations/pl.d.ts +8 -0
  186. package/dist/translations/pl.js +5 -0
  187. package/dist/translations/pl.umd.js +11 -0
  188. package/dist/translations/pt-br.d.ts +8 -0
  189. package/dist/translations/pt-br.js +5 -0
  190. package/dist/translations/pt-br.umd.js +11 -0
  191. package/dist/translations/pt.d.ts +8 -0
  192. package/dist/translations/pt.js +5 -0
  193. package/dist/translations/pt.umd.js +11 -0
  194. package/dist/translations/ro.d.ts +8 -0
  195. package/dist/translations/ro.js +5 -0
  196. package/dist/translations/ro.umd.js +11 -0
  197. package/dist/translations/ru.d.ts +8 -0
  198. package/dist/translations/ru.js +5 -0
  199. package/dist/translations/ru.umd.js +11 -0
  200. package/dist/translations/sk.d.ts +8 -0
  201. package/dist/translations/sk.js +5 -0
  202. package/dist/translations/sk.umd.js +11 -0
  203. package/dist/translations/sq.d.ts +8 -0
  204. package/dist/translations/sq.js +5 -0
  205. package/dist/translations/sq.umd.js +11 -0
  206. package/dist/translations/sr-latn.d.ts +8 -0
  207. package/dist/translations/sr-latn.js +5 -0
  208. package/dist/translations/sr-latn.umd.js +11 -0
  209. package/dist/translations/sr.d.ts +8 -0
  210. package/dist/translations/sr.js +5 -0
  211. package/dist/translations/sr.umd.js +11 -0
  212. package/dist/translations/sv.d.ts +8 -0
  213. package/dist/translations/sv.js +5 -0
  214. package/dist/translations/sv.umd.js +11 -0
  215. package/dist/translations/th.d.ts +8 -0
  216. package/dist/translations/th.js +5 -0
  217. package/dist/translations/th.umd.js +11 -0
  218. package/dist/translations/tk.d.ts +8 -0
  219. package/dist/translations/tk.js +5 -0
  220. package/dist/translations/tk.umd.js +11 -0
  221. package/dist/translations/tr.d.ts +8 -0
  222. package/dist/translations/tr.js +5 -0
  223. package/dist/translations/tr.umd.js +11 -0
  224. package/dist/translations/ug.d.ts +8 -0
  225. package/dist/translations/ug.js +5 -0
  226. package/dist/translations/ug.umd.js +11 -0
  227. package/dist/translations/uk.d.ts +8 -0
  228. package/dist/translations/uk.js +5 -0
  229. package/dist/translations/uk.umd.js +11 -0
  230. package/dist/translations/ur.d.ts +8 -0
  231. package/dist/translations/ur.js +5 -0
  232. package/dist/translations/ur.umd.js +11 -0
  233. package/dist/translations/uz.d.ts +8 -0
  234. package/dist/translations/uz.js +5 -0
  235. package/dist/translations/uz.umd.js +11 -0
  236. package/dist/translations/vi.d.ts +8 -0
  237. package/dist/translations/vi.js +5 -0
  238. package/dist/translations/vi.umd.js +11 -0
  239. package/dist/translations/zh-cn.d.ts +8 -0
  240. package/dist/translations/zh-cn.js +5 -0
  241. package/dist/translations/zh-cn.umd.js +11 -0
  242. package/dist/translations/zh.d.ts +8 -0
  243. package/dist/translations/zh.js +5 -0
  244. package/dist/translations/zh.umd.js +11 -0
  245. package/dist/utils.d.ts +181 -0
  246. package/lang/contexts.json +9 -0
  247. package/lang/translations/af.po +46 -0
  248. package/lang/translations/ar.po +46 -0
  249. package/lang/translations/az.po +46 -0
  250. package/lang/translations/bg.po +46 -0
  251. package/lang/translations/bn.po +46 -0
  252. package/lang/translations/bs.po +46 -0
  253. package/lang/translations/ca.po +46 -0
  254. package/lang/translations/cs.po +46 -0
  255. package/lang/translations/da.po +46 -0
  256. package/lang/translations/de-ch.po +46 -0
  257. package/lang/translations/de.po +46 -0
  258. package/lang/translations/el.po +46 -0
  259. package/lang/translations/en-au.po +46 -0
  260. package/lang/translations/en.po +46 -0
  261. package/lang/translations/es-co.po +46 -0
  262. package/lang/translations/es.po +46 -0
  263. package/lang/translations/et.po +46 -0
  264. package/lang/translations/fa.po +46 -0
  265. package/lang/translations/fi.po +46 -0
  266. package/lang/translations/fr.po +46 -0
  267. package/lang/translations/gl.po +46 -0
  268. package/lang/translations/he.po +46 -0
  269. package/lang/translations/hi.po +46 -0
  270. package/lang/translations/hr.po +46 -0
  271. package/lang/translations/hu.po +46 -0
  272. package/lang/translations/id.po +46 -0
  273. package/lang/translations/it.po +46 -0
  274. package/lang/translations/ja.po +46 -0
  275. package/lang/translations/jv.po +46 -0
  276. package/lang/translations/ko.po +46 -0
  277. package/lang/translations/ku.po +46 -0
  278. package/lang/translations/lt.po +46 -0
  279. package/lang/translations/lv.po +46 -0
  280. package/lang/translations/ms.po +46 -0
  281. package/lang/translations/nl.po +46 -0
  282. package/lang/translations/no.po +46 -0
  283. package/lang/translations/pl.po +46 -0
  284. package/lang/translations/pt-br.po +46 -0
  285. package/lang/translations/pt.po +46 -0
  286. package/lang/translations/ro.po +46 -0
  287. package/lang/translations/ru.po +46 -0
  288. package/lang/translations/sk.po +46 -0
  289. package/lang/translations/sq.po +46 -0
  290. package/lang/translations/sr-latn.po +46 -0
  291. package/lang/translations/sr.po +46 -0
  292. package/lang/translations/sv.po +46 -0
  293. package/lang/translations/th.po +46 -0
  294. package/lang/translations/tk.po +46 -0
  295. package/lang/translations/tr.po +46 -0
  296. package/lang/translations/ug.po +46 -0
  297. package/lang/translations/uk.po +46 -0
  298. package/lang/translations/ur.po +46 -0
  299. package/lang/translations/uz.po +46 -0
  300. package/lang/translations/vi.po +46 -0
  301. package/lang/translations/zh-cn.po +46 -0
  302. package/lang/translations/zh.po +46 -0
  303. package/package.json +44 -0
  304. package/src/augmentation.d.ts +25 -0
  305. package/src/augmentation.js +5 -0
  306. package/src/codeblock.d.ts +33 -0
  307. package/src/codeblock.js +39 -0
  308. package/src/codeblockcommand.d.ts +60 -0
  309. package/src/codeblockcommand.js +138 -0
  310. package/src/codeblockconfig.d.ts +146 -0
  311. package/src/codeblockconfig.js +5 -0
  312. package/src/codeblockediting.d.ts +47 -0
  313. package/src/codeblockediting.js +429 -0
  314. package/src/codeblockui.d.ts +33 -0
  315. package/src/codeblockui.js +133 -0
  316. package/src/converters.d.ts +126 -0
  317. package/src/converters.js +277 -0
  318. package/src/indentcodeblockcommand.d.ts +33 -0
  319. package/src/indentcodeblockcommand.js +78 -0
  320. package/src/index.d.ts +15 -0
  321. package/src/index.js +11 -0
  322. package/src/outdentcodeblockcommand.d.ts +33 -0
  323. package/src/outdentcodeblockcommand.js +133 -0
  324. package/src/utils.d.ts +177 -0
  325. package/src/utils.js +280 -0
  326. package/theme/codeblock.css +40 -0
@@ -0,0 +1,150 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+ /**
6
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
7
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
8
+ */
9
+ /**
10
+ * @module code-block/codeblockconfig
11
+ */
12
+ /**
13
+ * The configuration of the {@link module:code-block/codeblock~CodeBlock code block feature}.
14
+ *
15
+ * ```ts
16
+ * ClassicEditor
17
+ * .create( editorElement, {
18
+ * codeBlock: ... // The code block feature configuration.
19
+ * } )
20
+ * .then( ... )
21
+ * .catch( ... );
22
+ * ```
23
+ *
24
+ * See {@link module:core/editor/editorconfig~EditorConfig all editor options}.
25
+ */
26
+ export interface CodeBlockConfig {
27
+ /**
28
+ * The list of code languages available in the user interface to choose for a particular code block.
29
+ *
30
+ * The language of the code block is represented as a CSS class (by default prefixed by "language-") set on the
31
+ * `<code>` element, both when editing and in the editor data. The CSS class associated with the language
32
+ * can be used by third–party code syntax highlighters to detect and apply the correct highlighting.
33
+ *
34
+ * For instance, this language configuration:
35
+ *
36
+ * ```ts
37
+ * ClassicEditor
38
+ * .create( document.querySelector( '#editor' ), {
39
+ * codeBlock: {
40
+ * languages: [
41
+ * // ...
42
+ * { language: 'javascript', label: 'JavaScript' },
43
+ * // ...
44
+ * ]
45
+ * }
46
+ * } )
47
+ * .then( ... )
48
+ * .catch( ... );
49
+ * ```
50
+ *
51
+ * will result in the following structure of JavaScript code blocks in the editor editing and data:
52
+ *
53
+ * ```html
54
+ * <pre><code class="language-javascript">window.alert( 'Hello world!' )</code></pre>
55
+ * ```
56
+ *
57
+ * You can customize the CSS class by specifying an optional `class` property in the language definition.
58
+ * You can set **multiple classes** but **only the first one** will be used as defining language class:
59
+ *
60
+ * ```ts
61
+ * ClassicEditor
62
+ * .create( document.querySelector( '#editor' ), {
63
+ * codeBlock: {
64
+ * languages: [
65
+ * // Do not render the CSS class for the plain text code blocks.
66
+ * { language: 'plaintext', label: 'Plain text', class: '' },
67
+ *
68
+ * // Use the "php-code" class for PHP code blocks.
69
+ * { language: 'php', label: 'PHP', class: 'php-code' },
70
+ *
71
+ * // Use the "js" class for JavaScript code blocks.
72
+ * // Note that only the first ("js") class will determine the language of the block when loading data.
73
+ * { language: 'javascript', label: 'JavaScript', class: 'js javascript js-code' },
74
+ *
75
+ * // Python code blocks will have the default "language-python" CSS class.
76
+ * { language: 'python', label: 'Python' }
77
+ * ]
78
+ * }
79
+ * } )
80
+ * .then( ... )
81
+ * .catch( ... );
82
+ * ```
83
+ *
84
+ * The default value of the language configuration is as follows:
85
+ *
86
+ * ```ts
87
+ * languages: [
88
+ * { language: 'plaintext', label: 'Plain text' }, // The default language.
89
+ * { language: 'c', label: 'C' },
90
+ * { language: 'cs', label: 'C#' },
91
+ * { language: 'cpp', label: 'C++' },
92
+ * { language: 'css', label: 'CSS' },
93
+ * { language: 'diff', label: 'Diff' },
94
+ * { language: 'html', label: 'HTML' },
95
+ * { language: 'java', label: 'Java' },
96
+ * { language: 'javascript', label: 'JavaScript' },
97
+ * { language: 'php', label: 'PHP' },
98
+ * { language: 'python', label: 'Python' },
99
+ * { language: 'ruby', label: 'Ruby' },
100
+ * { language: 'typescript', label: 'TypeScript' },
101
+ * { language: 'xml', label: 'XML' }
102
+ * ]
103
+ * ```
104
+ *
105
+ * **Note**: The first language defined in the configuration is considered the default one. This means it will be
106
+ * applied to code blocks loaded from the data that have no CSS `class` specified (or no matching `class` in the configuration).
107
+ * It will also be used when creating new code blocks using the main UI button. By default it is "Plain text".
108
+ */
109
+ languages?: Array<CodeBlockLanguageDefinition>;
110
+ /**
111
+ * A sequence of characters inserted or removed from the code block lines when its indentation
112
+ * is changed by the user, for instance, using <kbd>Tab</kbd> and <kbd>Shift</kbd>+<kbd>Tab</kbd> keys.
113
+ *
114
+ * The default value is a single tab character (" ", `\u0009` in Unicode).
115
+ *
116
+ * This configuration is used by `indentCodeBlock` and `outdentCodeBlock` commands (instances of
117
+ * {@link module:code-block/indentcodeblockcommand~IndentCodeBlockCommand}).
118
+ *
119
+ * **Note**: Setting this configuration to `false` will disable the code block indentation commands
120
+ * and associated keystrokes.
121
+ *
122
+ */
123
+ indentSequence?: string;
124
+ }
125
+ /**
126
+ * The code block language descriptor. See {@link module:code-block/codeblockconfig~CodeBlockConfig#languages} to learn more.
127
+ *
128
+ * ```ts
129
+ * {
130
+ * language: 'javascript',
131
+ * label: 'JavaScript'
132
+ * }
133
+ * ```
134
+ */
135
+ export interface CodeBlockLanguageDefinition {
136
+ /**
137
+ * The name of the language that will be stored in the model attribute. Also, when `class`
138
+ * is not specified, it will be used to create the CSS class associated with the language (prefixed by "language-").
139
+ */
140
+ language: string;
141
+ /**
142
+ * The human–readable label associated with the language and displayed in the UI.
143
+ */
144
+ label: string;
145
+ /**
146
+ * The CSS class associated with the language. When not specified the `language`
147
+ * property is used to create a class prefixed by "language-".
148
+ */
149
+ class?: string;
150
+ }
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+ /**
6
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
7
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
8
+ */
9
+ /**
10
+ * @module code-block/codeblockediting
11
+ */
12
+ import { Plugin, type Editor } from 'ckeditor5/src/core.js';
13
+ import { ShiftEnter } from 'ckeditor5/src/enter.js';
14
+ /**
15
+ * The editing part of the code block feature.
16
+ *
17
+ * Introduces the `'codeBlock'` command and the `'codeBlock'` model element.
18
+ */
19
+ export default class CodeBlockEditing extends Plugin {
20
+ /**
21
+ * @inheritDoc
22
+ */
23
+ static get pluginName(): "CodeBlockEditing";
24
+ /**
25
+ * @inheritDoc
26
+ */
27
+ static get isOfficialPlugin(): true;
28
+ /**
29
+ * @inheritDoc
30
+ */
31
+ static get requires(): readonly [typeof ShiftEnter];
32
+ /**
33
+ * @inheritDoc
34
+ */
35
+ constructor(editor: Editor);
36
+ /**
37
+ * @inheritDoc
38
+ */
39
+ init(): void;
40
+ /**
41
+ * @inheritDoc
42
+ */
43
+ afterInit(): void;
44
+ /**
45
+ * Observe when user enters or leaves code block and set proper aria value in global live announcer.
46
+ * This allows screen readers to indicate when the user has entered and left the specified code block.
47
+ *
48
+ * @internal
49
+ */
50
+ private _initAriaAnnouncements;
51
+ }
@@ -0,0 +1,37 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+ /**
6
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
7
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
8
+ */
9
+ /**
10
+ * @module code-block/codeblockui
11
+ */
12
+ import { Plugin } from 'ckeditor5/src/core.js';
13
+ import '../theme/codeblock.css';
14
+ /**
15
+ * The code block UI plugin.
16
+ *
17
+ * Introduces the `'codeBlock'` dropdown.
18
+ */
19
+ export default class CodeBlockUI extends Plugin {
20
+ /**
21
+ * @inheritDoc
22
+ */
23
+ static get pluginName(): "CodeBlockUI";
24
+ /**
25
+ * @inheritDoc
26
+ */
27
+ static get isOfficialPlugin(): true;
28
+ /**
29
+ * @inheritDoc
30
+ */
31
+ init(): void;
32
+ /**
33
+ * A helper returning a collection of the `codeBlock` dropdown items representing languages
34
+ * available for the user to choose from.
35
+ */
36
+ private _getLanguageListItemDefinitions;
37
+ }
@@ -0,0 +1,130 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+ /**
6
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
7
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
8
+ */
9
+ /**
10
+ * @module code-block/converters
11
+ */
12
+ import type { GetCallback } from 'ckeditor5/src/utils.js';
13
+ import type { DowncastInsertEvent, Model, UpcastElementEvent, UpcastTextEvent, EditingView } from 'ckeditor5/src/engine.js';
14
+ import type { CodeBlockLanguageDefinition } from './codeblockconfig.js';
15
+ /**
16
+ * A model-to-view (both editing and data) converter for the `codeBlock` element.
17
+ *
18
+ * Sample input:
19
+ *
20
+ * ```html
21
+ * <codeBlock language="javascript">foo();<softBreak></softBreak>bar();</codeBlock>
22
+ * ```
23
+ *
24
+ * Sample output (editing):
25
+ *
26
+ * ```html
27
+ * <pre data-language="JavaScript"><code class="language-javascript">foo();<br />bar();</code></pre>
28
+ * ```
29
+ *
30
+ * Sample output (data, see {@link module:code-block/converters~modelToDataViewSoftBreakInsertion}):
31
+ *
32
+ * ```html
33
+ * <pre><code class="language-javascript">foo();\nbar();</code></pre>
34
+ * ```
35
+ *
36
+ * @param languageDefs The normalized language configuration passed to the feature.
37
+ * @param useLabels When `true`, the `<pre>` element will get a `data-language` attribute with a
38
+ * human–readable label of the language. Used only in the editing.
39
+ * @returns Returns a conversion callback.
40
+ */
41
+ export declare function modelToViewCodeBlockInsertion(model: Model, languageDefs: Array<CodeBlockLanguageDefinition>, useLabels?: boolean): GetCallback<DowncastInsertEvent>;
42
+ /**
43
+ * A model-to-data view converter for the new line (`softBreak`) separator.
44
+ *
45
+ * Sample input:
46
+ *
47
+ * ```html
48
+ * <codeBlock ...>foo();<softBreak></softBreak>bar();</codeBlock>
49
+ * ```
50
+ *
51
+ * Sample output:
52
+ *
53
+ * ```html
54
+ * <pre><code ...>foo();\nbar();</code></pre>
55
+ * ```
56
+ *
57
+ * @returns Returns a conversion callback.
58
+ */
59
+ export declare function modelToDataViewSoftBreakInsertion(model: Model): GetCallback<DowncastInsertEvent>;
60
+ /**
61
+ * A view-to-model converter for `<pre>` with the `<code>` HTML.
62
+ *
63
+ * Sample input:
64
+ *
65
+ * ```html
66
+ * <pre><code class="language-javascript">foo();bar();</code></pre>
67
+ * ```
68
+ *
69
+ * Sample output:
70
+ *
71
+ * ```html
72
+ * <codeBlock language="javascript">foo();bar();</codeBlock>
73
+ * ```
74
+ *
75
+ * @param languageDefs The normalized language configuration passed to the feature.
76
+ * @returns Returns a conversion callback.
77
+ */
78
+ export declare function dataViewToModelCodeBlockInsertion(editingView: EditingView, languageDefs: Array<CodeBlockLanguageDefinition>): GetCallback<UpcastElementEvent>;
79
+ /**
80
+ * A view-to-model converter for new line characters in `<pre>`.
81
+ *
82
+ * Sample input:
83
+ *
84
+ * ```html
85
+ * <pre><code class="language-javascript">foo();\nbar();</code></pre>
86
+ * ```
87
+ *
88
+ * Sample output:
89
+ *
90
+ * ```html
91
+ * <codeBlock language="javascript">foo();<softBreak></softBreak>bar();</codeBlock>
92
+ * ```
93
+ *
94
+ * @returns {Function} Returns a conversion callback.
95
+ */
96
+ export declare function dataViewToModelTextNewlinesInsertion(): GetCallback<UpcastTextEvent>;
97
+ /**
98
+ * A view-to-model converter that handles orphan text nodes (white spaces, new lines, etc.)
99
+ * that surround `<code>` inside `<pre>`.
100
+ *
101
+ * Sample input:
102
+ *
103
+ * ```html
104
+ * // White spaces
105
+ * <pre> <code>foo()</code> </pre>
106
+ *
107
+ * // White spaces
108
+ * <pre> <code>foo()</code> </pre>
109
+ *
110
+ * // White spaces
111
+ * <pre> <code>foo()</code> </pre>
112
+ *
113
+ * // New lines
114
+ * <pre>
115
+ * <code>foo()</code>
116
+ * </pre>
117
+ *
118
+ * // Redundant text
119
+ * <pre>ABC<code>foo()</code>DEF</pre>
120
+ * ```
121
+ *
122
+ * Unified output for each case:
123
+ *
124
+ * ```html
125
+ * <codeBlock language="plaintext">foo()</codeBlock>
126
+ * ```
127
+ *
128
+ * @returns Returns a conversion callback.
129
+ */
130
+ export declare function dataViewToModelOrphanNodeConsumer(): GetCallback<UpcastElementEvent>;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+ /**
6
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
7
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
8
+ */
9
+ /**
10
+ * @module code-block/indentcodeblockcommand
11
+ */
12
+ import { Command, type Editor } from 'ckeditor5/src/core.js';
13
+ /**
14
+ * The code block indentation increase command plugin.
15
+ */
16
+ export default class IndentCodeBlockCommand extends Command {
17
+ /**
18
+ * A sequence of characters added to the line when the command is executed.
19
+ */
20
+ private _indentSequence;
21
+ constructor(editor: Editor);
22
+ /**
23
+ * @inheritDoc
24
+ */
25
+ refresh(): void;
26
+ /**
27
+ * Executes the command. When the command {@link #isEnabled is enabled}, the indentation of the
28
+ * code lines in the selection will be increased.
29
+ *
30
+ * @fires execute
31
+ */
32
+ execute(): void;
33
+ /**
34
+ * Checks whether the command can be enabled in the current context.
35
+ */
36
+ private _checkEnabled;
37
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+ .ck-content pre{
6
+ padding:1em;
7
+ color:hsl(0, 0%, 20.8%);
8
+ background:hsla(0, 0%, 78%, 0.3);
9
+ border:1px solid hsl(0, 0%, 77%);
10
+ border-radius:2px;
11
+ text-align:left;
12
+ direction:ltr;
13
+
14
+ tab-size:4;
15
+ white-space:pre-wrap;
16
+ font-style:normal;
17
+ min-width:200px;
18
+ }
19
+
20
+ .ck-content pre code{
21
+ background:unset;
22
+ padding:0;
23
+ border-radius:0;
24
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+ .ck.ck-editor__editable pre{
6
+ position:relative;
7
+ }
8
+
9
+ .ck.ck-editor__editable pre[data-language]::after{
10
+ content:attr(data-language);
11
+ position:absolute;
12
+ }
package/dist/index.css ADDED
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+ /*
6
+ * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
7
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
8
+ */
9
+
10
+ .ck-content pre {
11
+ padding: 1em;
12
+ color: hsl(0, 0%, 20.8%);
13
+ background: hsla(0, 0%, 78%, 0.3);
14
+ border: 1px solid hsl(0, 0%, 77%);
15
+ border-radius: 2px;
16
+
17
+ /* Code block are language direction–agnostic. */
18
+ text-align: left;
19
+ direction: ltr;
20
+
21
+ tab-size: 4;
22
+ white-space: pre-wrap;
23
+
24
+ /* Don't inherit the style, e.g. when in a block quote. */
25
+ font-style: normal;
26
+
27
+ /* Don't let the code be squashed e.g. when in a table cell. */
28
+ min-width: 200px;
29
+ }
30
+
31
+ .ck-content pre code {
32
+ background: unset;
33
+ padding: 0;
34
+ border-radius: 0;
35
+ }
36
+
37
+ .ck.ck-editor__editable pre {
38
+ position: relative;
39
+ }
40
+
41
+ .ck.ck-editor__editable pre[data-language]::after {
42
+ content: attr(data-language);
43
+ position: absolute;
44
+ }
45
+
46
+ /*# sourceMappingURL=index.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../theme/codeblock.css","index.css"],"names":[],"mappings":"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","file":"index.css.map","sourcesContent":["/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-content pre {\n\tpadding: 1em;\n\tcolor: hsl(0, 0%, 20.8%);\n\tbackground: hsla(0, 0%, 78%, 0.3);\n\tborder: 1px solid hsl(0, 0%, 77%);\n\tborder-radius: 2px;\n\n\t/* Code block are language direction–agnostic. */\n\ttext-align: left;\n\tdirection: ltr;\n\n\ttab-size: 4;\n\twhite-space: pre-wrap;\n\n\t/* Don't inherit the style, e.g. when in a block quote. */\n\tfont-style: normal;\n\n\t/* Don't let the code be squashed e.g. when in a table cell. */\n\tmin-width: 200px;\n\n\t& code {\n\t\tbackground: unset;\n\t\tpadding: 0;\n\t\tborder-radius: 0;\n\t}\n}\n\n.ck.ck-editor__editable pre {\n\tposition: relative;\n\n\t&[data-language]::after {\n\t\tcontent: attr(data-language);\n\t\tposition: absolute;\n\t}\n}\n","/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n.ck-content pre {\n\tpadding: 1em;\n\tcolor: hsl(0, 0%, 20.8%);\n\tbackground: hsla(0, 0%, 78%, 0.3);\n\tborder: 1px solid hsl(0, 0%, 77%);\n\tborder-radius: 2px;\n\n\t/* Code block are language direction–agnostic. */\n\ttext-align: left;\n\tdirection: ltr;\n\n\ttab-size: 4;\n\twhite-space: pre-wrap;\n\n\t/* Don't inherit the style, e.g. when in a block quote. */\n\tfont-style: normal;\n\n\t/* Don't let the code be squashed e.g. when in a table cell. */\n\tmin-width: 200px;\n}\n\n.ck-content pre code {\n\t\tbackground: unset;\n\t\tpadding: 0;\n\t\tborder-radius: 0;\n\t}\n\n.ck.ck-editor__editable pre {\n\tposition: relative;\n}\n\n.ck.ck-editor__editable pre[data-language]::after {\n\t\tcontent: attr(data-language);\n\t\tposition: absolute;\n\t}\n\n/*# sourceMappingURL=index.css.map */"]}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+ /**
6
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
7
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
8
+ */
9
+ /**
10
+ * @module code-block
11
+ */
12
+ export { default as CodeBlock } from './codeblock.js';
13
+ export { default as CodeBlockEditing } from './codeblockediting.js';
14
+ export { default as CodeBlockUI } from './codeblockui.js';
15
+ export type { default as CodeBlockCommand } from './codeblockcommand.js';
16
+ export type { default as IndentCodeBlockCommand } from './indentcodeblockcommand.js';
17
+ export type { default as OutdentCodeBlockCommand } from './outdentcodeblockcommand.js';
18
+ export type { CodeBlockConfig } from './codeblockconfig.js';
19
+ import './augmentation.js';