formstrap 0.3.3 → 0.3.4

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 (29) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/app/assets/javascripts/formstrap/controllers/redactor_controller.js +18 -0
  4. data/app/assets/javascripts/formstrap/controllers/select_controller.js +22 -18
  5. data/app/assets/javascripts/formstrap/index.js +5 -2
  6. data/app/assets/javascripts/formstrap/vendor/redactor/i18n/de.js +214 -0
  7. data/app/assets/javascripts/formstrap/vendor/redactor/i18n/en.js +214 -0
  8. data/app/assets/javascripts/formstrap/vendor/redactor/i18n/fr.js +214 -0
  9. data/app/assets/javascripts/formstrap/vendor/redactor/i18n/nl.js +214 -0
  10. data/app/assets/javascripts/formstrap/vendor/redactor/index.js +5 -0
  11. data/app/assets/javascripts/formstrap/vendor/redactor/plugins/emoji.js +332 -0
  12. data/app/assets/javascripts/formstrap/vendor/redactor/plugins/linkstyles.js +124 -0
  13. data/app/assets/javascripts/formstrap.js +1295 -148
  14. data/app/assets/stylesheets/formstrap/general.scss +0 -6
  15. data/app/assets/stylesheets/formstrap/vendor/overrides/redactor.scss +151 -0
  16. data/app/assets/stylesheets/formstrap/vendor/redactor.css +2535 -0
  17. data/app/assets/stylesheets/formstrap.css +2650 -5
  18. data/app/assets/stylesheets/formstrap.scss +4 -0
  19. data/app/models/formstrap/redactor_view.rb +57 -0
  20. data/app/models/formstrap/wysiwyg_view.rb +9 -1
  21. data/app/views/formstrap/{_redactorx.html.erb → _redactor.html.erb} +4 -7
  22. data/app/views/formstrap/_wysiwyg.html.erb +3 -5
  23. data/lib/formstrap/form_builder.rb +12 -4
  24. data/lib/formstrap/version.rb +1 -1
  25. data/package.json +2 -2
  26. data/yarn.lock +4 -4
  27. metadata +14 -5
  28. data/app/assets/javascripts/formstrap/controllers/redactorx_controller.js +0 -40
  29. data/app/models/formstrap/redactorx_view.rb +0 -57
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dc7c89e02028fbd50ff04f97b36ad9ef3bcbc3a1e270d025a664a721a9755e7d
4
- data.tar.gz: 2375b43a0db037bcb58be9bac12d47079d7f4e5baaa03b08a5ea839053a3aaad
3
+ metadata.gz: 4b2d2e888ad5276d55adec6e93fa3c9d8f7a461c7b166d5b63828137fb69a59e
4
+ data.tar.gz: af940de7b13d8c07eb22b96494bddd6d61162c60dea21422ab547d0dcf96fa40
5
5
  SHA512:
6
- metadata.gz: c888b852f01b98134dae97d0a5573ac695c4525020a9fef792af903b9c7a894c5b85dce0172633246e78a0e5ed2825c89659ecf2ff2a663f5aea9b10d844002b
7
- data.tar.gz: 30ae20de2ddf908f64a82ca167bbc62fa6c0c6b744403e48ff053a9b6e1f293a323f3070947f3d29dd5e4509ef7cee20d42ec9db18d76adb53c8eddb79ee65aa
6
+ metadata.gz: 958941ba2f0ff2747a96de87aae82ef42bfb316a63742a964a254917304d0d080857b7230057aa30d3d0d1b4f19a59a998823be5fe0a4fd86a4b2e6011b6f6b5
7
+ data.tar.gz: 7c6c651c014d19ce4e85eecf8856339ae24049f8762be4ed942d5989ba150a13340aed3965bbbc55f67535e066b08d96b5b515129b10160e0af323209d43e0f7
data/README.md CHANGED
@@ -64,7 +64,7 @@ An overview of all the Formstrap / Ruby on Rails form helpers:
64
64
  | Media | media | N/A |
65
65
  | Number | number | number formstrap: false or number_field |
66
66
  | Password | password | password formstrap: false or password_field |
67
- | RedactorX * | redactorx | N/A |
67
+ | Redactor * | redactor | N/A |
68
68
  | Search | search | N/A |
69
69
  | Select | select | select formstrap: false |
70
70
  | Switch | switch | N/A |
@@ -77,7 +77,7 @@ An overview of all the Formstrap / Ruby on Rails form helpers:
77
77
  \* Formstrap provides the implementation of these 3rd party libraries, however it is up to the user to provide the
78
78
  correct assets.
79
79
 
80
- As you might have noticed, Formstrap provides more helpers than what is standard in Ruby on Rails, e.g. ```Media```, ```Date range```, ```RedactorX``` ...
80
+ As you might have noticed, Formstrap provides more helpers than what is standard in Ruby on Rails, e.g. ```Media```, ```Date range```, ```Redactor``` ...
81
81
 
82
82
  ### Altering Formstrap helpers
83
83
 
@@ -0,0 +1,18 @@
1
+ /* global Redactor */
2
+ import { Controller } from '@hotwired/stimulus'
3
+
4
+ export default class extends Controller {
5
+ connect () {
6
+ this.initRedactor()
7
+ }
8
+
9
+ initRedactor () {
10
+ if (typeof Redactor === 'undefined') {
11
+ console.error('Redactor is a paid module and is not included in Headmin. Please purchase it and import it as a JS module')
12
+ return false
13
+ }
14
+
15
+ const options = JSON.parse(this.element.getAttribute('data-redactor-options'))
16
+ Redactor(this.element, options)
17
+ }
18
+ }
@@ -9,30 +9,34 @@ export default class extends Controller {
9
9
  }
10
10
  }
11
11
 
12
- defaultOptions (locale) {
13
- const defaultOptions = {
12
+ defaultOptions () {
13
+ return {
14
+ plugins: ['drag_drop', 'caret_position', 'input_autogrow'],
15
+ persist: false,
16
+ create: true,
17
+ render: this.renderOptions()[I18n.locale]
18
+ }
19
+ }
20
+
21
+ renderOptions () {
22
+ return {
14
23
  en: {
15
- render: {
16
- option_create: function (data, escape) {
17
- return '<div class="create">Add <strong>' + escape(data.input) + '</strong>&hellip;</div>'
18
- },
19
- no_results: function (data, escape) {
20
- return '<div class="no-results">No results found</div>'
21
- }
24
+ option_create: function (data, escape) {
25
+ return '<div class="create">Add <strong>' + escape(data.input) + '</strong>&hellip;</div>'
26
+ },
27
+ no_results: function (data, escape) {
28
+ return '<div class="no-results">No results found</div>'
22
29
  }
23
30
  },
24
31
  nl: {
25
- render: {
26
- option_create: function (data, escape) {
27
- return '<div class="create">Voeg <strong>' + escape(data.input) + '</strong> toe &hellip;</div>'
28
- },
29
- no_results: function (data, escape) {
30
- return '<div class="no-results">Geen resultaten gevonden</div>'
31
- }
32
+ option_create: function (data, escape) {
33
+ return '<div class="create">Voeg <strong>' + escape(data.input) + '</strong> toe &hellip;</div>'
34
+ },
35
+ no_results: function (data, escape) {
36
+ return '<div class="no-results">Geen resultaten gevonden</div>'
32
37
  }
33
38
  }
34
39
  }
35
- return defaultOptions[locale]
36
40
  }
37
41
 
38
42
  hasTags () {
@@ -40,7 +44,7 @@ export default class extends Controller {
40
44
  }
41
45
 
42
46
  initTomSelect () {
43
- const defaultOptions = this.defaultOptions(I18n.locale)
47
+ const defaultOptions = this.defaultOptions()
44
48
  const options = { create: this.hasTags() }
45
49
 
46
50
  /* eslint-disable no-new */
@@ -11,11 +11,14 @@ import MediaModalController from './controllers/media_modal_controller'
11
11
  import NestedPreviewController from './controllers/nested_preview_controller'
12
12
  import PopupController from './controllers/popup_controller'
13
13
  import PreviewController from './controllers/preview_controller'
14
- import RedactorxController from './controllers/redactorx_controller'
14
+ import RedactorController from './controllers/redactor_controller'
15
15
  import RepeaterController from './controllers/repeater_controller'
16
16
  import SelectController from './controllers/select_controller'
17
17
  import TextareaController from './controllers/textarea_controller'
18
18
 
19
+ // Import redactor dependencies
20
+ import './vendor/redactor'
21
+
19
22
  export class Formstrap {
20
23
  static start () {
21
24
  window.Stimulus = window.Stimulus || Application.start()
@@ -30,7 +33,7 @@ export class Formstrap {
30
33
  Stimulus.register('nested-preview', NestedPreviewController)
31
34
  Stimulus.register('popup', PopupController)
32
35
  Stimulus.register('preview', PreviewController)
33
- Stimulus.register('redactorx', RedactorxController)
36
+ Stimulus.register('redactor', RedactorController)
34
37
  Stimulus.register('repeater', RepeaterController)
35
38
  Stimulus.register('select', SelectController)
36
39
  Stimulus.register('textarea', TextareaController)
@@ -0,0 +1,214 @@
1
+ /* global Redactor */
2
+ Redactor.lang.de = {
3
+ accessibility: {
4
+ 'help-label': 'Texteditor'
5
+ },
6
+ placeholders: {
7
+ figcaption: 'Beschreibung eingeben (optional)'
8
+ },
9
+ modal: {
10
+ link: 'Link',
11
+ image: 'Bild',
12
+ 'add-image': 'Bild hinzufügen'
13
+ },
14
+ embed: {
15
+ embed: 'Einbetten',
16
+ caption: 'Beschriftung',
17
+ description: 'Fügen Sie einen Einbettungscode ein oder geben Sie die URL ein (nur Vimeo- oder YouTube-Video)',
18
+ 'responsive-video': 'Responsives Video'
19
+ },
20
+ image: {
21
+ or: 'oder',
22
+ 'alt-text': 'Alternativer Text',
23
+ link: 'Link',
24
+ width: 'Breite',
25
+ caption: 'Beschriftung',
26
+ 'link-in-new-tab': 'Link in neuem Tab öffnen',
27
+ 'url-placeholder': 'URL des Bildes einfügen...',
28
+ 'upload-new-placeholder': 'Zum Hochladen eines neuen Bildes ziehen<br>oder klicken Sie, um auszuwählen'
29
+ },
30
+ link: {
31
+ link: 'Link',
32
+ 'edit-link': 'Link bearbeiten',
33
+ unlink: 'Link entfernen',
34
+ 'link-in-new-tab': 'Link in neuem Tab öffnen',
35
+ text: 'Text',
36
+ url: 'URL'
37
+ },
38
+ table: {
39
+ width: 'Breite',
40
+ nowrap: 'Kein Zeilenumbruch',
41
+ 'table-cell': 'Tabellenzelle',
42
+ 'select-table': 'Tabelle auswählen',
43
+ 'select-cell': 'Zelle auswählen',
44
+ 'cell-setting': 'Zelleinstellung',
45
+ 'add-head': 'Kopfzeile hinzufügen',
46
+ 'remove-head': 'Kopfzeile entfernen',
47
+ 'add-row-below': 'Zeile unten hinzufügen',
48
+ 'add-row-above': 'Zeile oben hinzufügen',
49
+ 'remove-row': 'Zeile entfernen',
50
+ 'add-column-after': 'Spalte danach hinzufügen',
51
+ 'add-column-before': 'Spalte davor hinzufügen',
52
+ 'remove-column': 'Spalte entfernen',
53
+ 'delete-table': 'Tabelle löschen'
54
+ },
55
+ buttons: {
56
+ add: 'Hinzufügen',
57
+ insert: 'Einfügen',
58
+ save: 'Speichern',
59
+ cancel: 'Abbrechen',
60
+ delete: 'Löschen',
61
+ 'ai-tools': 'KI-Werkzeuge',
62
+ 'ai-image': 'KI-Bild',
63
+ html: 'HTML',
64
+ format: 'Format',
65
+ bold: 'Fett',
66
+ italic: 'Kursiv',
67
+ deleted: 'Durchgestrichen',
68
+ 'more-formatting': 'Weitere Formatierungen',
69
+ link: 'Link',
70
+ 'link-text': 'Linktext',
71
+ unlink: 'Link entfernen',
72
+ image: 'Bild',
73
+ unwrap: 'Formatierung aufheben',
74
+ outset: 'Hervorhebung',
75
+ 'wrap-image': 'Bild einrahmen',
76
+ 'move-up': 'Nach oben verschieben',
77
+ 'move-down': 'Nach unten verschieben',
78
+ list: 'Liste',
79
+ 'numbered-list': 'Nummerierte Liste',
80
+ 'bullet-list': 'Aufzählung',
81
+ indent: 'Einrücken',
82
+ outdent: 'Ausrücken',
83
+ 'definition-list': 'Definitionslite',
84
+ hotkeys: 'Tastenkombinationen',
85
+ undo: 'Rückgängig machen',
86
+ redo: 'Wiederherstellen',
87
+ toggle: 'Umschalten',
88
+ duplicate: 'Duplizieren',
89
+ table: 'Tabelle',
90
+ embed: 'Einbetten',
91
+ quote: 'Zitat',
92
+ layout: 'Layout',
93
+ wrapper: 'Umschlag',
94
+ todo: 'Aufgabe',
95
+ 'code-snippet': 'Code-Schnipsel',
96
+ line: 'Linie',
97
+ parent: 'Elternteil',
98
+ code: 'Code',
99
+ underline: 'Unterstreichen',
100
+ highlight: 'Hervorheben',
101
+ superscript: 'Hochgestellt',
102
+ subscript: 'Tiefgestellt',
103
+ 'clear-all-styles': 'Alle Stile löschen',
104
+ heading: 'Überschrift',
105
+ text: 'Text',
106
+ address: 'Adresse'
107
+ },
108
+ colorpicker: {
109
+ 'remove-color': 'Farbe entfernen',
110
+ 'remove-background': 'Hintergrundfarbe entfernen',
111
+ color: 'Farbe',
112
+ background: 'Hintergrund',
113
+ 'set-color': 'Farbe einstellen'
114
+ },
115
+ ai: {
116
+ 'placeholder-image': 'Beschreiben Sie das Bild, das Sie generieren möchten.',
117
+ 'placeholder-text': 'Sagen Sie mir, was Sie schreiben möchten.',
118
+ send: 'Senden',
119
+ stop: 'Stoppen',
120
+ discard: 'Verwerfen',
121
+ insert: 'Einfügen',
122
+ prompt: 'Aufforderung'
123
+ },
124
+ pathbar: {
125
+ title: 'Körper'
126
+ },
127
+ layout: {
128
+ 'single-column': 'Eine Spalte',
129
+ 'two-columns': 'Zwei Spalten',
130
+ 'three-columns': 'Drei Spalten',
131
+ 'four-columns': 'Vier Spalten'
132
+ },
133
+ outset: {
134
+ 'outset-none': 'Keine Hervorhebung',
135
+ 'outset-left': 'Hervorhebung links',
136
+ 'outset-both': 'Hervorhebung beidseitig',
137
+ 'outset-right': 'Hervorhebung rechts'
138
+ },
139
+ wrap: {
140
+ 'wrap-none': 'Kein Einrahmen',
141
+ 'wrap-left': 'Links einrahmen',
142
+ 'wrap-center': 'Zentriert einrahmen',
143
+ 'wrap-right': 'Rechts einrahmen'
144
+ },
145
+ blocks: {
146
+ address: 'Adresse',
147
+ cell: 'Zelle',
148
+ column: 'Spalte',
149
+ dlist: 'Definitionenliste',
150
+ embed: 'Einbetten',
151
+ figcaption: 'Beschriftung',
152
+ heading: 'Überschrift',
153
+ image: 'Bild',
154
+ wrapper: 'Umschlag',
155
+ layout: 'Layout',
156
+ line: 'Linie',
157
+ list: 'Liste',
158
+ listitem: 'Element',
159
+ noneditable: 'Nicht bearbeitbar',
160
+ pre: 'Vorformatiert',
161
+ quote: 'Zitat',
162
+ row: 'Zeile',
163
+ table: 'Tabelle',
164
+ text: 'Text',
165
+ todo: 'Aufgabe',
166
+ todoitem: 'Element',
167
+ mergetag: 'Zusammenführungszeichen'
168
+ },
169
+ hotkeys: {
170
+ 'meta-shift-a': 'Text im Block auswählen',
171
+ 'meta-a': 'Alle Blöcke auswählen',
172
+ 'meta-z': 'Rückgängig machen',
173
+ 'meta-shift-z': 'Wiederherstellen',
174
+ 'meta-shift-m': 'Inline-Formatierung entfernen',
175
+ 'meta-b': 'Fett',
176
+ 'meta-i': 'Kursiv',
177
+ 'meta-u': 'Unterstreichen',
178
+ 'meta-h': 'Hochgestellt',
179
+ 'meta-l': 'Tiefgestellt',
180
+ 'meta-k': 'Link',
181
+ 'meta-alt-0': 'Normaler Text',
182
+ 'meta-alt-1': 'Überschrift 1',
183
+ 'meta-alt-2': 'Überschrift 2',
184
+ 'meta-alt-3': 'Überschrift 3',
185
+ 'meta-alt-4': 'Überschrift 4',
186
+ 'meta-alt-5': 'Überschrift 5',
187
+ 'meta-alt-6': 'Überschrift 6',
188
+ 'meta-shift-7': 'Nummerierte Liste',
189
+ 'meta-shift-8': 'Ungeordnete Liste',
190
+ 'meta-indent': 'Einzug',
191
+ 'meta-outdent': 'Ausrückung',
192
+ 'meta-shift-backspace': 'Block löschen',
193
+ 'meta-shift-o': 'Block hinzufügen',
194
+ 'meta-shift-d': 'Block duplizieren',
195
+ 'meta-shift-up': 'Zeile nach oben verschieben',
196
+ 'meta-shift-down': 'Zeile nach unten verschieben'
197
+ },
198
+ emoji: {
199
+ emoji: 'Emoji',
200
+ favorites: 'Favoriten',
201
+ smileys: 'Smileys',
202
+ gestures: 'Gesten',
203
+ animals: 'Tiere',
204
+ food: 'Essen',
205
+ activities: 'Aktivitäten',
206
+ travel: 'Reisen'
207
+ },
208
+ linkstyles: {
209
+ label: 'Stile',
210
+ link: 'Link',
211
+ primary: 'Primärer Button',
212
+ secondary: 'Sekundärer Button'
213
+ }
214
+ }
@@ -0,0 +1,214 @@
1
+ /* global Redactor */
2
+ Redactor.lang.en = {
3
+ accessibility: {
4
+ 'help-label': 'Rich text editor'
5
+ },
6
+ placeholders: {
7
+ figcaption: 'Type caption (optional)'
8
+ },
9
+ modal: {
10
+ link: 'Link',
11
+ image: 'Image',
12
+ 'add-image': 'Add Image'
13
+ },
14
+ embed: {
15
+ embed: 'Embed',
16
+ caption: 'Caption',
17
+ description: 'Paste any embed/html code or enter the url (vimeo or youtube video only)',
18
+ 'responsive-video': 'Responsive video'
19
+ },
20
+ image: {
21
+ or: 'or',
22
+ 'alt-text': 'Alt Text',
23
+ link: 'Link',
24
+ width: 'Width',
25
+ caption: 'Caption',
26
+ 'link-in-new-tab': 'Open link in new tab',
27
+ 'url-placeholder': 'Paste url of image...',
28
+ 'upload-new-placeholder': 'Drag to upload a new image<br>or click to select'
29
+ },
30
+ link: {
31
+ link: 'Linkje',
32
+ 'edit-link': 'Edit Link',
33
+ unlink: 'Unlink',
34
+ 'link-in-new-tab': 'Open link in new tab',
35
+ text: 'Text',
36
+ url: 'URL'
37
+ },
38
+ table: {
39
+ width: 'Width',
40
+ nowrap: 'Nowrap',
41
+ 'table-cell': 'Table cell',
42
+ 'select-table': 'Select table',
43
+ 'select-cell': 'Select cell',
44
+ 'cell-setting': 'Cell setting',
45
+ 'add-head': 'Add head',
46
+ 'remove-head': 'Remove head',
47
+ 'add-row-below': 'Add row below',
48
+ 'add-row-above': 'Add row above',
49
+ 'remove-row': 'Remove row',
50
+ 'add-column-after': 'Add column after',
51
+ 'add-column-before': 'Add column before',
52
+ 'remove-column': 'Remove column',
53
+ 'delete-table': 'Delete table'
54
+ },
55
+ buttons: {
56
+ add: 'Add',
57
+ insert: 'Insert',
58
+ save: 'Save',
59
+ cancel: 'Cancel',
60
+ delete: 'Delete',
61
+ 'ai-tools': 'AI Tools',
62
+ 'ai-image': 'AI Image',
63
+ html: 'HTML',
64
+ format: 'Format',
65
+ bold: 'Bold',
66
+ italic: 'Italic',
67
+ deleted: 'Deleted',
68
+ 'more-formatting': 'More formatting',
69
+ link: 'Link',
70
+ 'link-text': 'Link Text',
71
+ unlink: 'Unlink',
72
+ image: 'Image',
73
+ unwrap: 'Unwrap',
74
+ outset: 'Outset',
75
+ 'wrap-image': 'Wrap image',
76
+ 'move-up': 'Move up',
77
+ 'move-down': 'Move down',
78
+ list: 'List',
79
+ 'numbered-list': 'Numbered list',
80
+ 'bullet-list': 'Bullet list',
81
+ indent: 'Indent',
82
+ outdent: 'Outdent',
83
+ 'definition-list': 'Definition list',
84
+ hotkeys: 'Hotkeys',
85
+ undo: 'Undo',
86
+ redo: 'Redo',
87
+ toggle: 'Toggle',
88
+ duplicate: 'Duplicate',
89
+ table: 'Table',
90
+ embed: 'Embed',
91
+ quote: 'Quote',
92
+ layout: 'Layout',
93
+ wrapper: 'Wrapper',
94
+ todo: 'Todo',
95
+ 'code-snippet': 'Code snippet',
96
+ line: 'Line',
97
+ parent: 'Parent',
98
+ code: 'Code',
99
+ underline: 'Underline',
100
+ highlight: 'Highlight',
101
+ superscript: 'Superscript',
102
+ subscript: 'Subscript',
103
+ 'clear-all-styles': 'Clear all styles',
104
+ heading: 'Heading',
105
+ text: 'Text',
106
+ address: 'Address'
107
+ },
108
+ colorpicker: {
109
+ 'remove-color': 'Remove color',
110
+ 'remove-background': 'Remove background color',
111
+ color: 'Color',
112
+ background: 'Background',
113
+ 'set-color': 'Set color'
114
+ },
115
+ ai: {
116
+ 'placeholder-image': 'Describe the image you want to generate.',
117
+ 'placeholder-text': 'Tell me what you want to write.',
118
+ send: 'Send',
119
+ stop: 'Stop',
120
+ discard: 'Discard',
121
+ insert: 'Insert',
122
+ prompt: 'Prompt'
123
+ },
124
+ pathbar: {
125
+ title: 'Body'
126
+ },
127
+ layout: {
128
+ 'single-column': 'Single column',
129
+ 'two-columns': 'Two columns',
130
+ 'three-columns': 'Three columns',
131
+ 'four-columns': 'Four columns'
132
+ },
133
+ outset: {
134
+ 'outset-none': 'Outset none',
135
+ 'outset-left': 'Outset left',
136
+ 'outset-both': 'Outset both',
137
+ 'outset-right': 'Outset right'
138
+ },
139
+ wrap: {
140
+ 'wrap-none': 'Wrap none',
141
+ 'wrap-left': 'Wrap left',
142
+ 'wrap-center': 'Wrap center',
143
+ 'wrap-right': 'Wrap right'
144
+ },
145
+ blocks: {
146
+ address: 'Address',
147
+ cell: 'Cell',
148
+ column: 'Column',
149
+ dlist: 'Definition List',
150
+ embed: 'Embed',
151
+ figcaption: 'Figcaption',
152
+ heading: 'Heading',
153
+ image: 'Image',
154
+ wrapper: 'Wrapper',
155
+ layout: 'Layout',
156
+ line: 'Line',
157
+ list: 'List',
158
+ listitem: 'Item',
159
+ noneditable: 'Noneditable',
160
+ pre: 'Pre',
161
+ quote: 'Quote',
162
+ row: 'Row',
163
+ table: 'Table',
164
+ text: 'Text',
165
+ todo: 'Todo',
166
+ todoitem: 'Item',
167
+ mergetag: 'Mergetag'
168
+ },
169
+ hotkeys: {
170
+ 'meta-shift-a': 'Select text in the block',
171
+ 'meta-a': 'Select all blocks',
172
+ 'meta-z': 'Undo',
173
+ 'meta-shift-z': 'Redo',
174
+ 'meta-shift-m': 'Remove inline format',
175
+ 'meta-b': 'Bold',
176
+ 'meta-i': 'Italic',
177
+ 'meta-u': 'Underline',
178
+ 'meta-h': 'Superscript',
179
+ 'meta-l': 'Subscript',
180
+ 'meta-k': 'Link',
181
+ 'meta-alt-0': 'Normal text',
182
+ 'meta-alt-1': 'Heading 1',
183
+ 'meta-alt-2': 'Heading 2',
184
+ 'meta-alt-3': 'Heading 3',
185
+ 'meta-alt-4': 'Heading 4',
186
+ 'meta-alt-5': 'Heading 5',
187
+ 'meta-alt-6': 'Heading 6',
188
+ 'meta-shift-7': 'Ordered List',
189
+ 'meta-shift-8': 'Unordered List',
190
+ 'meta-indent': 'Indent',
191
+ 'meta-outdent': 'Outdent',
192
+ 'meta-shift-backspace': 'Delete block',
193
+ 'meta-shift-o': 'Add block',
194
+ 'meta-shift-d': 'Duplicate block',
195
+ 'meta-shift-up': 'Move line up',
196
+ 'meta-shift-down': 'Move line down'
197
+ },
198
+ emoji: {
199
+ emoji: 'Emoji',
200
+ favorites: 'Favorites',
201
+ smileys: 'Smileys',
202
+ gestures: 'Gestures',
203
+ animals: 'Animals',
204
+ food: 'Food',
205
+ activities: 'Activities',
206
+ travel: 'Travel'
207
+ },
208
+ linkstyles: {
209
+ label: 'Styles',
210
+ link: 'Link',
211
+ primary: 'Primary button',
212
+ secondary: 'Secondary button'
213
+ }
214
+ }