@ckeditor/ckeditor5-block-quote 30.0.0
Sign up to get free protection for your applications and to get access to all the features.
- package/LICENSE.md +17 -0
- package/README.md +20 -0
- package/build/block-quote.js +5 -0
- package/build/translations/af.js +1 -0
- package/build/translations/ar.js +1 -0
- package/build/translations/az.js +1 -0
- package/build/translations/bg.js +1 -0
- package/build/translations/ca.js +1 -0
- package/build/translations/cs.js +1 -0
- package/build/translations/da.js +1 -0
- package/build/translations/de-ch.js +1 -0
- package/build/translations/de.js +1 -0
- package/build/translations/el.js +1 -0
- package/build/translations/en-au.js +1 -0
- package/build/translations/en-gb.js +1 -0
- package/build/translations/es.js +1 -0
- package/build/translations/et.js +1 -0
- package/build/translations/eu.js +1 -0
- package/build/translations/fa.js +1 -0
- package/build/translations/fi.js +1 -0
- package/build/translations/fr.js +1 -0
- package/build/translations/gl.js +1 -0
- package/build/translations/gu.js +1 -0
- package/build/translations/he.js +1 -0
- package/build/translations/hi.js +1 -0
- package/build/translations/hr.js +1 -0
- package/build/translations/hu.js +1 -0
- package/build/translations/id.js +1 -0
- package/build/translations/it.js +1 -0
- package/build/translations/ja.js +1 -0
- package/build/translations/km.js +1 -0
- package/build/translations/kn.js +1 -0
- package/build/translations/ko.js +1 -0
- package/build/translations/ku.js +1 -0
- package/build/translations/lt.js +1 -0
- package/build/translations/lv.js +1 -0
- package/build/translations/nb.js +1 -0
- package/build/translations/ne.js +1 -0
- package/build/translations/nl.js +1 -0
- package/build/translations/no.js +1 -0
- package/build/translations/pl.js +1 -0
- package/build/translations/pt-br.js +1 -0
- package/build/translations/ro.js +1 -0
- package/build/translations/ru.js +1 -0
- package/build/translations/sk.js +1 -0
- package/build/translations/sl.js +1 -0
- package/build/translations/sq.js +1 -0
- package/build/translations/sr-latn.js +1 -0
- package/build/translations/sr.js +1 -0
- package/build/translations/sv.js +1 -0
- package/build/translations/th.js +1 -0
- package/build/translations/tk.js +1 -0
- package/build/translations/tr.js +1 -0
- package/build/translations/ug.js +1 -0
- package/build/translations/uk.js +1 -0
- package/build/translations/vi.js +1 -0
- package/build/translations/zh-cn.js +1 -0
- package/build/translations/zh.js +1 -0
- package/ckeditor5-metadata.json +23 -0
- package/lang/contexts.json +3 -0
- package/lang/translations/af.po +21 -0
- package/lang/translations/ar.po +21 -0
- package/lang/translations/az.po +21 -0
- package/lang/translations/bg.po +21 -0
- package/lang/translations/ca.po +21 -0
- package/lang/translations/cs.po +21 -0
- package/lang/translations/da.po +21 -0
- package/lang/translations/de-ch.po +21 -0
- package/lang/translations/de.po +21 -0
- package/lang/translations/el.po +21 -0
- package/lang/translations/en-au.po +21 -0
- package/lang/translations/en-gb.po +21 -0
- package/lang/translations/en.po +21 -0
- package/lang/translations/es.po +21 -0
- package/lang/translations/et.po +21 -0
- package/lang/translations/eu.po +21 -0
- package/lang/translations/fa.po +21 -0
- package/lang/translations/fi.po +21 -0
- package/lang/translations/fr.po +21 -0
- package/lang/translations/gl.po +21 -0
- package/lang/translations/gu.po +21 -0
- package/lang/translations/he.po +21 -0
- package/lang/translations/hi.po +21 -0
- package/lang/translations/hr.po +21 -0
- package/lang/translations/hu.po +21 -0
- package/lang/translations/id.po +21 -0
- package/lang/translations/it.po +21 -0
- package/lang/translations/ja.po +21 -0
- package/lang/translations/km.po +21 -0
- package/lang/translations/kn.po +21 -0
- package/lang/translations/ko.po +21 -0
- package/lang/translations/ku.po +21 -0
- package/lang/translations/lt.po +21 -0
- package/lang/translations/lv.po +21 -0
- package/lang/translations/nb.po +21 -0
- package/lang/translations/ne.po +21 -0
- package/lang/translations/nl.po +21 -0
- package/lang/translations/no.po +21 -0
- package/lang/translations/pl.po +21 -0
- package/lang/translations/pt-br.po +21 -0
- package/lang/translations/ro.po +21 -0
- package/lang/translations/ru.po +21 -0
- package/lang/translations/sk.po +21 -0
- package/lang/translations/sl.po +21 -0
- package/lang/translations/sq.po +21 -0
- package/lang/translations/sr-latn.po +21 -0
- package/lang/translations/sr.po +21 -0
- package/lang/translations/sv.po +21 -0
- package/lang/translations/th.po +21 -0
- package/lang/translations/tk.po +21 -0
- package/lang/translations/tr.po +21 -0
- package/lang/translations/ug.po +21 -0
- package/lang/translations/uk.po +21 -0
- package/lang/translations/vi.po +21 -0
- package/lang/translations/zh-cn.po +21 -0
- package/lang/translations/zh.po +21 -0
- package/package.json +57 -0
- package/src/blockquote.js +39 -0
- package/src/blockquotecommand.js +232 -0
- package/src/blockquoteediting.js +147 -0
- package/src/blockquoteui.js +60 -0
- package/src/index.js +12 -0
- package/theme/blockquote.css +23 -0
@@ -0,0 +1,21 @@
|
|
1
|
+
# Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
|
2
|
+
#
|
3
|
+
# !!! IMPORTANT !!!
|
4
|
+
#
|
5
|
+
# Before you edit this file, please keep in mind that contributing to the project
|
6
|
+
# translations is possible ONLY via the Transifex online service.
|
7
|
+
#
|
8
|
+
# To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
|
9
|
+
#
|
10
|
+
# To learn more, check out the official contributor's guide:
|
11
|
+
# https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
|
12
|
+
#
|
13
|
+
msgid ""
|
14
|
+
msgstr ""
|
15
|
+
"Language-Team: Slovak (https://www.transifex.com/ckeditor/teams/11143/sk/)\n"
|
16
|
+
"Language: sk\n"
|
17
|
+
"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n"
|
18
|
+
|
19
|
+
msgctxt "Toolbar button tooltip for the Block quote feature."
|
20
|
+
msgid "Block quote"
|
21
|
+
msgstr "Citát"
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
|
2
|
+
#
|
3
|
+
# !!! IMPORTANT !!!
|
4
|
+
#
|
5
|
+
# Before you edit this file, please keep in mind that contributing to the project
|
6
|
+
# translations is possible ONLY via the Transifex online service.
|
7
|
+
#
|
8
|
+
# To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
|
9
|
+
#
|
10
|
+
# To learn more, check out the official contributor's guide:
|
11
|
+
# https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
|
12
|
+
#
|
13
|
+
msgid ""
|
14
|
+
msgstr ""
|
15
|
+
"Language-Team: Slovenian (https://www.transifex.com/ckeditor/teams/11143/sl/)\n"
|
16
|
+
"Language: sl\n"
|
17
|
+
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
|
18
|
+
|
19
|
+
msgctxt "Toolbar button tooltip for the Block quote feature."
|
20
|
+
msgid "Block quote"
|
21
|
+
msgstr "Blokiraj citat"
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
|
2
|
+
#
|
3
|
+
# !!! IMPORTANT !!!
|
4
|
+
#
|
5
|
+
# Before you edit this file, please keep in mind that contributing to the project
|
6
|
+
# translations is possible ONLY via the Transifex online service.
|
7
|
+
#
|
8
|
+
# To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
|
9
|
+
#
|
10
|
+
# To learn more, check out the official contributor's guide:
|
11
|
+
# https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
|
12
|
+
#
|
13
|
+
msgid ""
|
14
|
+
msgstr ""
|
15
|
+
"Language-Team: Albanian (https://www.transifex.com/ckeditor/teams/11143/sq/)\n"
|
16
|
+
"Language: sq\n"
|
17
|
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
18
|
+
|
19
|
+
msgctxt "Toolbar button tooltip for the Block quote feature."
|
20
|
+
msgid "Block quote"
|
21
|
+
msgstr "Thonjëzat"
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
|
2
|
+
#
|
3
|
+
# !!! IMPORTANT !!!
|
4
|
+
#
|
5
|
+
# Before you edit this file, please keep in mind that contributing to the project
|
6
|
+
# translations is possible ONLY via the Transifex online service.
|
7
|
+
#
|
8
|
+
# To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
|
9
|
+
#
|
10
|
+
# To learn more, check out the official contributor's guide:
|
11
|
+
# https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
|
12
|
+
#
|
13
|
+
msgid ""
|
14
|
+
msgstr ""
|
15
|
+
"Language-Team: Serbian (Latin) (https://www.transifex.com/ckeditor/teams/11143/sr@latin/)\n"
|
16
|
+
"Language: sr@latin\n"
|
17
|
+
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
18
|
+
|
19
|
+
msgctxt "Toolbar button tooltip for the Block quote feature."
|
20
|
+
msgid "Block quote"
|
21
|
+
msgstr "Citat"
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
|
2
|
+
#
|
3
|
+
# !!! IMPORTANT !!!
|
4
|
+
#
|
5
|
+
# Before you edit this file, please keep in mind that contributing to the project
|
6
|
+
# translations is possible ONLY via the Transifex online service.
|
7
|
+
#
|
8
|
+
# To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
|
9
|
+
#
|
10
|
+
# To learn more, check out the official contributor's guide:
|
11
|
+
# https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
|
12
|
+
#
|
13
|
+
msgid ""
|
14
|
+
msgstr ""
|
15
|
+
"Language-Team: Serbian (https://www.transifex.com/ckeditor/teams/11143/sr/)\n"
|
16
|
+
"Language: sr\n"
|
17
|
+
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
18
|
+
|
19
|
+
msgctxt "Toolbar button tooltip for the Block quote feature."
|
20
|
+
msgid "Block quote"
|
21
|
+
msgstr "Цитат"
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
|
2
|
+
#
|
3
|
+
# !!! IMPORTANT !!!
|
4
|
+
#
|
5
|
+
# Before you edit this file, please keep in mind that contributing to the project
|
6
|
+
# translations is possible ONLY via the Transifex online service.
|
7
|
+
#
|
8
|
+
# To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
|
9
|
+
#
|
10
|
+
# To learn more, check out the official contributor's guide:
|
11
|
+
# https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
|
12
|
+
#
|
13
|
+
msgid ""
|
14
|
+
msgstr ""
|
15
|
+
"Language-Team: Swedish (https://www.transifex.com/ckeditor/teams/11143/sv/)\n"
|
16
|
+
"Language: sv\n"
|
17
|
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
18
|
+
|
19
|
+
msgctxt "Toolbar button tooltip for the Block quote feature."
|
20
|
+
msgid "Block quote"
|
21
|
+
msgstr "Blockcitat"
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
|
2
|
+
#
|
3
|
+
# !!! IMPORTANT !!!
|
4
|
+
#
|
5
|
+
# Before you edit this file, please keep in mind that contributing to the project
|
6
|
+
# translations is possible ONLY via the Transifex online service.
|
7
|
+
#
|
8
|
+
# To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
|
9
|
+
#
|
10
|
+
# To learn more, check out the official contributor's guide:
|
11
|
+
# https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
|
12
|
+
#
|
13
|
+
msgid ""
|
14
|
+
msgstr ""
|
15
|
+
"Language-Team: Thai (https://www.transifex.com/ckeditor/teams/11143/th/)\n"
|
16
|
+
"Language: th\n"
|
17
|
+
"Plural-Forms: nplurals=1; plural=0;\n"
|
18
|
+
|
19
|
+
msgctxt "Toolbar button tooltip for the Block quote feature."
|
20
|
+
msgid "Block quote"
|
21
|
+
msgstr "คำพูดบล็อก"
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
|
2
|
+
#
|
3
|
+
# !!! IMPORTANT !!!
|
4
|
+
#
|
5
|
+
# Before you edit this file, please keep in mind that contributing to the project
|
6
|
+
# translations is possible ONLY via the Transifex online service.
|
7
|
+
#
|
8
|
+
# To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
|
9
|
+
#
|
10
|
+
# To learn more, check out the official contributor's guide:
|
11
|
+
# https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
|
12
|
+
#
|
13
|
+
msgid ""
|
14
|
+
msgstr ""
|
15
|
+
"Language-Team: Turkmen (https://www.transifex.com/ckeditor/teams/11143/tk/)\n"
|
16
|
+
"Language: tk\n"
|
17
|
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
18
|
+
|
19
|
+
msgctxt "Toolbar button tooltip for the Block quote feature."
|
20
|
+
msgid "Block quote"
|
21
|
+
msgstr "Sitata blokirläň"
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
|
2
|
+
#
|
3
|
+
# !!! IMPORTANT !!!
|
4
|
+
#
|
5
|
+
# Before you edit this file, please keep in mind that contributing to the project
|
6
|
+
# translations is possible ONLY via the Transifex online service.
|
7
|
+
#
|
8
|
+
# To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
|
9
|
+
#
|
10
|
+
# To learn more, check out the official contributor's guide:
|
11
|
+
# https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
|
12
|
+
#
|
13
|
+
msgid ""
|
14
|
+
msgstr ""
|
15
|
+
"Language-Team: Turkish (https://www.transifex.com/ckeditor/teams/11143/tr/)\n"
|
16
|
+
"Language: tr\n"
|
17
|
+
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
18
|
+
|
19
|
+
msgctxt "Toolbar button tooltip for the Block quote feature."
|
20
|
+
msgid "Block quote"
|
21
|
+
msgstr "Alıntı"
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
|
2
|
+
#
|
3
|
+
# !!! IMPORTANT !!!
|
4
|
+
#
|
5
|
+
# Before you edit this file, please keep in mind that contributing to the project
|
6
|
+
# translations is possible ONLY via the Transifex online service.
|
7
|
+
#
|
8
|
+
# To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
|
9
|
+
#
|
10
|
+
# To learn more, check out the official contributor's guide:
|
11
|
+
# https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
|
12
|
+
#
|
13
|
+
msgid ""
|
14
|
+
msgstr ""
|
15
|
+
"Language-Team: Uyghur (https://www.transifex.com/ckeditor/teams/11143/ug/)\n"
|
16
|
+
"Language: ug\n"
|
17
|
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
18
|
+
|
19
|
+
msgctxt "Toolbar button tooltip for the Block quote feature."
|
20
|
+
msgid "Block quote"
|
21
|
+
msgstr "نەقىل"
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
|
2
|
+
#
|
3
|
+
# !!! IMPORTANT !!!
|
4
|
+
#
|
5
|
+
# Before you edit this file, please keep in mind that contributing to the project
|
6
|
+
# translations is possible ONLY via the Transifex online service.
|
7
|
+
#
|
8
|
+
# To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
|
9
|
+
#
|
10
|
+
# To learn more, check out the official contributor's guide:
|
11
|
+
# https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
|
12
|
+
#
|
13
|
+
msgid ""
|
14
|
+
msgstr ""
|
15
|
+
"Language-Team: Ukrainian (https://www.transifex.com/ckeditor/teams/11143/uk/)\n"
|
16
|
+
"Language: uk\n"
|
17
|
+
"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n"
|
18
|
+
|
19
|
+
msgctxt "Toolbar button tooltip for the Block quote feature."
|
20
|
+
msgid "Block quote"
|
21
|
+
msgstr "Цитата"
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
|
2
|
+
#
|
3
|
+
# !!! IMPORTANT !!!
|
4
|
+
#
|
5
|
+
# Before you edit this file, please keep in mind that contributing to the project
|
6
|
+
# translations is possible ONLY via the Transifex online service.
|
7
|
+
#
|
8
|
+
# To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
|
9
|
+
#
|
10
|
+
# To learn more, check out the official contributor's guide:
|
11
|
+
# https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
|
12
|
+
#
|
13
|
+
msgid ""
|
14
|
+
msgstr ""
|
15
|
+
"Language-Team: Vietnamese (https://www.transifex.com/ckeditor/teams/11143/vi/)\n"
|
16
|
+
"Language: vi\n"
|
17
|
+
"Plural-Forms: nplurals=1; plural=0;\n"
|
18
|
+
|
19
|
+
msgctxt "Toolbar button tooltip for the Block quote feature."
|
20
|
+
msgid "Block quote"
|
21
|
+
msgstr "Trích dẫn"
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
|
2
|
+
#
|
3
|
+
# !!! IMPORTANT !!!
|
4
|
+
#
|
5
|
+
# Before you edit this file, please keep in mind that contributing to the project
|
6
|
+
# translations is possible ONLY via the Transifex online service.
|
7
|
+
#
|
8
|
+
# To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
|
9
|
+
#
|
10
|
+
# To learn more, check out the official contributor's guide:
|
11
|
+
# https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
|
12
|
+
#
|
13
|
+
msgid ""
|
14
|
+
msgstr ""
|
15
|
+
"Language-Team: Chinese (China) (https://www.transifex.com/ckeditor/teams/11143/zh_CN/)\n"
|
16
|
+
"Language: zh_CN\n"
|
17
|
+
"Plural-Forms: nplurals=1; plural=0;\n"
|
18
|
+
|
19
|
+
msgctxt "Toolbar button tooltip for the Block quote feature."
|
20
|
+
msgid "Block quote"
|
21
|
+
msgstr "块引用"
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
|
2
|
+
#
|
3
|
+
# !!! IMPORTANT !!!
|
4
|
+
#
|
5
|
+
# Before you edit this file, please keep in mind that contributing to the project
|
6
|
+
# translations is possible ONLY via the Transifex online service.
|
7
|
+
#
|
8
|
+
# To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
|
9
|
+
#
|
10
|
+
# To learn more, check out the official contributor's guide:
|
11
|
+
# https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
|
12
|
+
#
|
13
|
+
msgid ""
|
14
|
+
msgstr ""
|
15
|
+
"Language-Team: Chinese (Taiwan) (https://www.transifex.com/ckeditor/teams/11143/zh_TW/)\n"
|
16
|
+
"Language: zh_TW\n"
|
17
|
+
"Plural-Forms: nplurals=1; plural=0;\n"
|
18
|
+
|
19
|
+
msgctxt "Toolbar button tooltip for the Block quote feature."
|
20
|
+
msgid "Block quote"
|
21
|
+
msgstr "段落引用"
|
package/package.json
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
{
|
2
|
+
"name": "@ckeditor/ckeditor5-block-quote",
|
3
|
+
"version": "30.0.0",
|
4
|
+
"description": "Block quote feature for CKEditor 5.",
|
5
|
+
"keywords": [
|
6
|
+
"ckeditor",
|
7
|
+
"ckeditor5",
|
8
|
+
"ckeditor 5",
|
9
|
+
"ckeditor5-feature",
|
10
|
+
"ckeditor5-plugin",
|
11
|
+
"ckeditor5-dll"
|
12
|
+
],
|
13
|
+
"main": "src/index.js",
|
14
|
+
"dependencies": {
|
15
|
+
"ckeditor5": "^30.0.0"
|
16
|
+
},
|
17
|
+
"devDependencies": {
|
18
|
+
"@ckeditor/ckeditor5-basic-styles": "^30.0.0",
|
19
|
+
"@ckeditor/ckeditor5-core": "^30.0.0",
|
20
|
+
"@ckeditor/ckeditor5-dev-utils": "^25.4.0",
|
21
|
+
"@ckeditor/ckeditor5-editor-classic": "^30.0.0",
|
22
|
+
"@ckeditor/ckeditor5-engine": "^30.0.0",
|
23
|
+
"@ckeditor/ckeditor5-enter": "^30.0.0",
|
24
|
+
"@ckeditor/ckeditor5-heading": "^30.0.0",
|
25
|
+
"@ckeditor/ckeditor5-image": "^30.0.0",
|
26
|
+
"@ckeditor/ckeditor5-list": "^30.0.0",
|
27
|
+
"@ckeditor/ckeditor5-paragraph": "^30.0.0",
|
28
|
+
"@ckeditor/ckeditor5-table": "^30.0.0",
|
29
|
+
"@ckeditor/ckeditor5-theme-lark": "^30.0.0",
|
30
|
+
"@ckeditor/ckeditor5-typing": "^30.0.0",
|
31
|
+
"webpack": "^4.43.0",
|
32
|
+
"webpack-cli": "^3.3.11"
|
33
|
+
},
|
34
|
+
"engines": {
|
35
|
+
"node": ">=12.0.0",
|
36
|
+
"npm": ">=5.7.1"
|
37
|
+
},
|
38
|
+
"author": "CKSource (http://cksource.com/)",
|
39
|
+
"license": "GPL-2.0-or-later",
|
40
|
+
"homepage": "https://ckeditor.com/ckeditor-5",
|
41
|
+
"bugs": "https://github.com/ckeditor/ckeditor5/issues",
|
42
|
+
"repository": {
|
43
|
+
"type": "git",
|
44
|
+
"url": "https://github.com/ckeditor/ckeditor5.git",
|
45
|
+
"directory": "packages/ckeditor5-block-quote"
|
46
|
+
},
|
47
|
+
"files": [
|
48
|
+
"lang",
|
49
|
+
"src",
|
50
|
+
"theme",
|
51
|
+
"build",
|
52
|
+
"ckeditor5-metadata.json"
|
53
|
+
],
|
54
|
+
"scripts": {
|
55
|
+
"dll:build": "webpack"
|
56
|
+
}
|
57
|
+
}
|
@@ -0,0 +1,39 @@
|
|
1
|
+
/**
|
2
|
+
* @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
4
|
+
*/
|
5
|
+
|
6
|
+
/**
|
7
|
+
* @module block-quote/blockquote
|
8
|
+
*/
|
9
|
+
|
10
|
+
import { Plugin } from 'ckeditor5/src/core';
|
11
|
+
|
12
|
+
import BlockQuoteEditing from './blockquoteediting';
|
13
|
+
import BlockQuoteUI from './blockquoteui';
|
14
|
+
|
15
|
+
/**
|
16
|
+
* The block quote plugin.
|
17
|
+
*
|
18
|
+
* For more information about this feature check the {@glink api/block-quote package page}.
|
19
|
+
*
|
20
|
+
* This is a "glue" plugin which loads the {@link module:block-quote/blockquoteediting~BlockQuoteEditing block quote editing feature}
|
21
|
+
* and {@link module:block-quote/blockquoteui~BlockQuoteUI block quote UI feature}.
|
22
|
+
*
|
23
|
+
* @extends module:core/plugin~Plugin
|
24
|
+
*/
|
25
|
+
export default class BlockQuote extends Plugin {
|
26
|
+
/**
|
27
|
+
* @inheritDoc
|
28
|
+
*/
|
29
|
+
static get requires() {
|
30
|
+
return [ BlockQuoteEditing, BlockQuoteUI ];
|
31
|
+
}
|
32
|
+
|
33
|
+
/**
|
34
|
+
* @inheritDoc
|
35
|
+
*/
|
36
|
+
static get pluginName() {
|
37
|
+
return 'BlockQuote';
|
38
|
+
}
|
39
|
+
}
|
@@ -0,0 +1,232 @@
|
|
1
|
+
/**
|
2
|
+
* @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
4
|
+
*/
|
5
|
+
|
6
|
+
/**
|
7
|
+
* @module block-quote/blockquotecommand
|
8
|
+
*/
|
9
|
+
|
10
|
+
import { Command } from 'ckeditor5/src/core';
|
11
|
+
import { first } from 'ckeditor5/src/utils';
|
12
|
+
|
13
|
+
/**
|
14
|
+
* The block quote command plugin.
|
15
|
+
*
|
16
|
+
* @extends module:core/command~Command
|
17
|
+
*/
|
18
|
+
export default class BlockQuoteCommand extends Command {
|
19
|
+
/**
|
20
|
+
* Whether the selection starts in a block quote.
|
21
|
+
*
|
22
|
+
* @observable
|
23
|
+
* @readonly
|
24
|
+
* @member {Boolean} #value
|
25
|
+
*/
|
26
|
+
|
27
|
+
/**
|
28
|
+
* @inheritDoc
|
29
|
+
*/
|
30
|
+
refresh() {
|
31
|
+
this.value = this._getValue();
|
32
|
+
this.isEnabled = this._checkEnabled();
|
33
|
+
}
|
34
|
+
|
35
|
+
/**
|
36
|
+
* Executes the command. When the command {@link #value is on}, all top-most block quotes within
|
37
|
+
* the selection will be removed. If it is off, all selected blocks will be wrapped with
|
38
|
+
* a block quote.
|
39
|
+
*
|
40
|
+
* @fires execute
|
41
|
+
* @param {Object} [options] Command options.
|
42
|
+
* @param {Boolean} [options.forceValue] If set, it will force the command behavior. If `true`, the command will apply a block quote,
|
43
|
+
* otherwise the command will remove the block quote. If not set, the command will act basing on its current value.
|
44
|
+
*/
|
45
|
+
execute( options = {} ) {
|
46
|
+
const model = this.editor.model;
|
47
|
+
const schema = model.schema;
|
48
|
+
const selection = model.document.selection;
|
49
|
+
|
50
|
+
const blocks = Array.from( selection.getSelectedBlocks() );
|
51
|
+
|
52
|
+
const value = ( options.forceValue === undefined ) ? !this.value : options.forceValue;
|
53
|
+
|
54
|
+
model.change( writer => {
|
55
|
+
if ( !value ) {
|
56
|
+
this._removeQuote( writer, blocks.filter( findQuote ) );
|
57
|
+
} else {
|
58
|
+
const blocksToQuote = blocks.filter( block => {
|
59
|
+
// Already quoted blocks needs to be considered while quoting too
|
60
|
+
// in order to reuse their <bQ> elements.
|
61
|
+
return findQuote( block ) || checkCanBeQuoted( schema, block );
|
62
|
+
} );
|
63
|
+
|
64
|
+
this._applyQuote( writer, blocksToQuote );
|
65
|
+
}
|
66
|
+
} );
|
67
|
+
}
|
68
|
+
|
69
|
+
/**
|
70
|
+
* Checks the command's {@link #value}.
|
71
|
+
*
|
72
|
+
* @private
|
73
|
+
* @returns {Boolean} The current value.
|
74
|
+
*/
|
75
|
+
_getValue() {
|
76
|
+
const selection = this.editor.model.document.selection;
|
77
|
+
|
78
|
+
const firstBlock = first( selection.getSelectedBlocks() );
|
79
|
+
|
80
|
+
// In the current implementation, the block quote must be an immediate parent of a block element.
|
81
|
+
return !!( firstBlock && findQuote( firstBlock ) );
|
82
|
+
}
|
83
|
+
|
84
|
+
/**
|
85
|
+
* Checks whether the command can be enabled in the current context.
|
86
|
+
*
|
87
|
+
* @private
|
88
|
+
* @returns {Boolean} Whether the command should be enabled.
|
89
|
+
*/
|
90
|
+
_checkEnabled() {
|
91
|
+
if ( this.value ) {
|
92
|
+
return true;
|
93
|
+
}
|
94
|
+
|
95
|
+
const selection = this.editor.model.document.selection;
|
96
|
+
const schema = this.editor.model.schema;
|
97
|
+
|
98
|
+
const firstBlock = first( selection.getSelectedBlocks() );
|
99
|
+
|
100
|
+
if ( !firstBlock ) {
|
101
|
+
return false;
|
102
|
+
}
|
103
|
+
|
104
|
+
return checkCanBeQuoted( schema, firstBlock );
|
105
|
+
}
|
106
|
+
|
107
|
+
/**
|
108
|
+
* Removes the quote from given blocks.
|
109
|
+
*
|
110
|
+
* If blocks which are supposed to be "unquoted" are in the middle of a quote,
|
111
|
+
* start it or end it, then the quote will be split (if needed) and the blocks
|
112
|
+
* will be moved out of it, so other quoted blocks remained quoted.
|
113
|
+
*
|
114
|
+
* @private
|
115
|
+
* @param {module:engine/model/writer~Writer} writer
|
116
|
+
* @param {Array.<module:engine/model/element~Element>} blocks
|
117
|
+
*/
|
118
|
+
_removeQuote( writer, blocks ) {
|
119
|
+
// Unquote all groups of block. Iterate in the reverse order to not break following ranges.
|
120
|
+
getRangesOfBlockGroups( writer, blocks ).reverse().forEach( groupRange => {
|
121
|
+
if ( groupRange.start.isAtStart && groupRange.end.isAtEnd ) {
|
122
|
+
writer.unwrap( groupRange.start.parent );
|
123
|
+
|
124
|
+
return;
|
125
|
+
}
|
126
|
+
|
127
|
+
// The group of blocks are at the beginning of an <bQ> so let's move them left (out of the <bQ>).
|
128
|
+
if ( groupRange.start.isAtStart ) {
|
129
|
+
const positionBefore = writer.createPositionBefore( groupRange.start.parent );
|
130
|
+
|
131
|
+
writer.move( groupRange, positionBefore );
|
132
|
+
|
133
|
+
return;
|
134
|
+
}
|
135
|
+
|
136
|
+
// The blocks are in the middle of an <bQ> so we need to split the <bQ> after the last block
|
137
|
+
// so we move the items there.
|
138
|
+
if ( !groupRange.end.isAtEnd ) {
|
139
|
+
writer.split( groupRange.end );
|
140
|
+
}
|
141
|
+
|
142
|
+
// Now we are sure that groupRange.end.isAtEnd is true, so let's move the blocks right.
|
143
|
+
|
144
|
+
const positionAfter = writer.createPositionAfter( groupRange.end.parent );
|
145
|
+
|
146
|
+
writer.move( groupRange, positionAfter );
|
147
|
+
} );
|
148
|
+
}
|
149
|
+
|
150
|
+
/**
|
151
|
+
* Applies the quote to given blocks.
|
152
|
+
*
|
153
|
+
* @private
|
154
|
+
* @param {module:engine/model/writer~Writer} writer
|
155
|
+
* @param {Array.<module:engine/model/element~Element>} blocks
|
156
|
+
*/
|
157
|
+
_applyQuote( writer, blocks ) {
|
158
|
+
const quotesToMerge = [];
|
159
|
+
|
160
|
+
// Quote all groups of block. Iterate in the reverse order to not break following ranges.
|
161
|
+
getRangesOfBlockGroups( writer, blocks ).reverse().forEach( groupRange => {
|
162
|
+
let quote = findQuote( groupRange.start );
|
163
|
+
|
164
|
+
if ( !quote ) {
|
165
|
+
quote = writer.createElement( 'blockQuote' );
|
166
|
+
|
167
|
+
writer.wrap( groupRange, quote );
|
168
|
+
}
|
169
|
+
|
170
|
+
quotesToMerge.push( quote );
|
171
|
+
} );
|
172
|
+
|
173
|
+
// Merge subsequent <bQ> elements. Reverse the order again because this time we want to go through
|
174
|
+
// the <bQ> elements in the source order (due to how merge works – it moves the right element's content
|
175
|
+
// to the first element and removes the right one. Since we may need to merge a couple of subsequent `<bQ>` elements
|
176
|
+
// we want to keep the reference to the first (furthest left) one.
|
177
|
+
quotesToMerge.reverse().reduce( ( currentQuote, nextQuote ) => {
|
178
|
+
if ( currentQuote.nextSibling == nextQuote ) {
|
179
|
+
writer.merge( writer.createPositionAfter( currentQuote ) );
|
180
|
+
|
181
|
+
return currentQuote;
|
182
|
+
}
|
183
|
+
|
184
|
+
return nextQuote;
|
185
|
+
} );
|
186
|
+
}
|
187
|
+
}
|
188
|
+
|
189
|
+
function findQuote( elementOrPosition ) {
|
190
|
+
return elementOrPosition.parent.name == 'blockQuote' ? elementOrPosition.parent : null;
|
191
|
+
}
|
192
|
+
|
193
|
+
// Returns a minimal array of ranges containing groups of subsequent blocks.
|
194
|
+
//
|
195
|
+
// content: abcdefgh
|
196
|
+
// blocks: [ a, b, d, f, g, h ]
|
197
|
+
// output ranges: [ab]c[d]e[fgh]
|
198
|
+
//
|
199
|
+
// @param {Array.<module:engine/model/element~Element>} blocks
|
200
|
+
// @returns {Array.<module:engine/model/range~Range>}
|
201
|
+
function getRangesOfBlockGroups( writer, blocks ) {
|
202
|
+
let startPosition;
|
203
|
+
let i = 0;
|
204
|
+
const ranges = [];
|
205
|
+
|
206
|
+
while ( i < blocks.length ) {
|
207
|
+
const block = blocks[ i ];
|
208
|
+
const nextBlock = blocks[ i + 1 ];
|
209
|
+
|
210
|
+
if ( !startPosition ) {
|
211
|
+
startPosition = writer.createPositionBefore( block );
|
212
|
+
}
|
213
|
+
|
214
|
+
if ( !nextBlock || block.nextSibling != nextBlock ) {
|
215
|
+
ranges.push( writer.createRange( startPosition, writer.createPositionAfter( block ) ) );
|
216
|
+
startPosition = null;
|
217
|
+
}
|
218
|
+
|
219
|
+
i++;
|
220
|
+
}
|
221
|
+
|
222
|
+
return ranges;
|
223
|
+
}
|
224
|
+
|
225
|
+
// Checks whether <bQ> can wrap the block.
|
226
|
+
function checkCanBeQuoted( schema, block ) {
|
227
|
+
// TMP will be replaced with schema.checkWrap().
|
228
|
+
const isBQAllowed = schema.checkChild( block.parent, 'blockQuote' );
|
229
|
+
const isBlockAllowedInBQ = schema.checkChild( [ '$root', 'blockQuote' ], block );
|
230
|
+
|
231
|
+
return isBQAllowed && isBlockAllowedInBQ;
|
232
|
+
}
|