@akilli/editor-src 5.1.5

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 (126) hide show
  1. package/abbreviation/Abbreviation.js +32 -0
  2. package/abbreviation/AbbreviationDialog.js +21 -0
  3. package/audio/Audio.js +47 -0
  4. package/audio/AudioDialog.js +18 -0
  5. package/audio/AudioListener.js +50 -0
  6. package/base/AlignCommand.js +34 -0
  7. package/base/AlignableListener.js +45 -0
  8. package/base/Alignment.js +36 -0
  9. package/base/BarListener.js +95 -0
  10. package/base/Base.js +127 -0
  11. package/base/Command.js +139 -0
  12. package/base/CommandManager.js +60 -0
  13. package/base/ContentFilter.js +109 -0
  14. package/base/DeletableListener.js +36 -0
  15. package/base/DeleteCommand.js +18 -0
  16. package/base/Dialog.js +153 -0
  17. package/base/DialogManager.js +44 -0
  18. package/base/Dispatcher.js +88 -0
  19. package/base/Dom.js +790 -0
  20. package/base/EditableListener.js +82 -0
  21. package/base/Editor.js +448 -0
  22. package/base/Filter.js +35 -0
  23. package/base/FilterManager.js +44 -0
  24. package/base/FocusableListener.js +22 -0
  25. package/base/FocusbarListener.js +99 -0
  26. package/base/FormCreator.js +162 -0
  27. package/base/FormatbarListener.js +32 -0
  28. package/base/Key.js +258 -0
  29. package/base/Listener.js +51 -0
  30. package/base/NavigableListener.js +81 -0
  31. package/base/Plugin.js +176 -0
  32. package/base/PluginManager.js +51 -0
  33. package/base/SlotableListener.js +40 -0
  34. package/base/SortCommand.js +30 -0
  35. package/base/SortableListener.js +135 -0
  36. package/base/Sorting.js +36 -0
  37. package/base/Tag.js +113 -0
  38. package/base/TagGroup.js +183 -0
  39. package/base/TagListener.js +34 -0
  40. package/base/TagManager.js +61 -0
  41. package/base/TagName.js +470 -0
  42. package/base/ToolbarListener.js +11 -0
  43. package/base/util.js +59 -0
  44. package/block/Block.js +51 -0
  45. package/block/BlockDialog.js +11 -0
  46. package/block/BlockElement.js +21 -0
  47. package/block/BlockListener.js +60 -0
  48. package/blockquote/Blockquote.js +43 -0
  49. package/blockquote/BlockquoteFilter.js +22 -0
  50. package/blockquote/BlockquoteListener.js +34 -0
  51. package/bold/Bold.js +30 -0
  52. package/break/Break.js +33 -0
  53. package/break/BreakFilter.js +24 -0
  54. package/build/BuildEditor.js +97 -0
  55. package/build/editor.css +548 -0
  56. package/build/editor.woff2 +0 -0
  57. package/cite/Cite.js +30 -0
  58. package/code/Code.js +30 -0
  59. package/data/Data.js +32 -0
  60. package/data/DataDialog.js +13 -0
  61. package/definition/Definition.js +32 -0
  62. package/definition/DefinitionDialog.js +13 -0
  63. package/deletion/Deletion.js +30 -0
  64. package/details/Details.js +63 -0
  65. package/details/DetailsFilter.js +17 -0
  66. package/details/DetailsListener.js +102 -0
  67. package/division/Division.js +53 -0
  68. package/division/DivisionDialog.js +13 -0
  69. package/emphasis/Emphasis.js +30 -0
  70. package/figure/Figure.js +58 -0
  71. package/figure/FigureFilter.js +14 -0
  72. package/figure/FigureListener.js +23 -0
  73. package/heading/Heading.js +38 -0
  74. package/horizontalrule/HorizontalRule.js +37 -0
  75. package/i18n/I18n.js +26 -0
  76. package/i18n/de.js +167 -0
  77. package/iframe/Iframe.js +49 -0
  78. package/iframe/IframeDialog.js +20 -0
  79. package/iframe/IframeListener.js +48 -0
  80. package/image/Image.js +47 -0
  81. package/image/ImageDialog.js +23 -0
  82. package/image/ImageListener.js +47 -0
  83. package/insertion/Insertion.js +30 -0
  84. package/italic/Italic.js +30 -0
  85. package/keyboard/Keyboard.js +30 -0
  86. package/link/Link.js +34 -0
  87. package/link/LinkDialog.js +14 -0
  88. package/link/LinkListener.js +45 -0
  89. package/list/List.js +40 -0
  90. package/list/ListListener.js +91 -0
  91. package/mark/Mark.js +30 -0
  92. package/orderedlist/OrderedList.js +39 -0
  93. package/package.json +24 -0
  94. package/paragraph/Paragraph.js +42 -0
  95. package/paragraph/ParagraphListener.js +40 -0
  96. package/preformat/Preformat.js +43 -0
  97. package/preformat/PreformatFilter.js +22 -0
  98. package/preformat/PreformatListener.js +34 -0
  99. package/quote/Quote.js +30 -0
  100. package/sample/Sample.js +30 -0
  101. package/section/Section.js +55 -0
  102. package/section/SectionDialog.js +13 -0
  103. package/small/Small.js +30 -0
  104. package/strikethrough/Strikethrough.js +30 -0
  105. package/strong/Strong.js +30 -0
  106. package/subheading/Subheading.js +38 -0
  107. package/subscript/Subscript.js +30 -0
  108. package/superscript/Superscript.js +30 -0
  109. package/table/Table.js +113 -0
  110. package/table/TableCellListener.js +125 -0
  111. package/table/TableColumnAddCommand.js +19 -0
  112. package/table/TableColumnListener.js +34 -0
  113. package/table/TableCommand.js +23 -0
  114. package/table/TableDialog.js +14 -0
  115. package/table/TableFilter.js +35 -0
  116. package/table/TableListener.js +39 -0
  117. package/table/TableRowAddCommand.js +18 -0
  118. package/table/TableRowListener.js +34 -0
  119. package/time/Time.js +32 -0
  120. package/time/TimeDialog.js +13 -0
  121. package/underline/Underline.js +30 -0
  122. package/unorderedlist/UnorderedList.js +39 -0
  123. package/variable/Variable.js +30 -0
  124. package/video/Video.js +47 -0
  125. package/video/VideoDialog.js +20 -0
  126. package/video/VideoListener.js +48 -0
@@ -0,0 +1,548 @@
1
+ /**
2
+ * Variable
3
+ */
4
+ :root {
5
+ --editor-block-background: #012022;
6
+ --editor-block-color: #fff;
7
+ --editor-border: #01202233;
8
+ --editor-button-background: #012022;
9
+ --editor-button-color: #fff;
10
+ --editor-cancel-background: #e3e7e7;
11
+ --editor-cancel-color: #012022;
12
+ --editor-dialog-background: #fff;
13
+ --editor-dialog-color: #012022;
14
+ --editor-error: #cc2e2c;
15
+ --editor-focus: #fcece1;
16
+ --editor-placeholder: #01202233;
17
+ --editor-slot: #09575c;
18
+ --editor-sortover: #012022;
19
+ --editor-toolbar-background: #fff;
20
+ --editor-toolbar-color: #012022;
21
+ --editor-text-block: 'Block: ' attr(id);
22
+ --editor-text-editable: 'Gimme some text!';
23
+ --editor-text-root: 'Gimme some widgets!';
24
+ --editor-text-slot: 'Focus this slot and gimme some widgets!';
25
+ --editor-text-tablecol: 'Col ';
26
+ --editor-text-tablebodyrow: 'Row ';
27
+ --editor-text-tablefootrow: 'Foot ';
28
+ --editor-text-tableheadrow: 'Head ';
29
+ }
30
+
31
+ akilli-editor[lang=de] {
32
+ --editor-text-editable: 'Gib mir Text!';
33
+ --editor-text-root: 'Gib mir Widgets!';
34
+ --editor-text-slot: 'Fokussiere diesen Slot und gib mir Widgets!';
35
+ --editor-text-tablecol: 'Spalte ';
36
+ --editor-text-tablebodyrow: 'Zeile ';
37
+ --editor-text-tablefootrow: 'Fuß ';
38
+ --editor-text-tableheadrow: 'Kopf ';
39
+ }
40
+
41
+ ::backdrop {
42
+ --editor-dialog-backdrop: #000000cc;
43
+ }
44
+
45
+ /**
46
+ * Font
47
+ */
48
+ @font-face {
49
+ font-family: editor;
50
+ font-display: block;
51
+ font-style: normal;
52
+ font-weight: 900;
53
+ src: url(editor.woff2) format('woff2');
54
+ }
55
+
56
+ /**
57
+ * Editor
58
+ */
59
+ akilli-editor {
60
+ position: relative;
61
+ display: block;
62
+ }
63
+
64
+ /**
65
+ * Editor Root
66
+ */
67
+ akilli-editor editor-root {
68
+ display: block;
69
+ width: 100%;
70
+ padding: 0.75rem 0.6875rem 0.6875rem;
71
+ overflow: auto;
72
+ border: 0.0625rem solid var(--editor-border);
73
+ border-top: 0;
74
+ }
75
+
76
+ akilli-editor editor-root:empty::after {
77
+ color: var(--editor-placeholder);
78
+ content: var(--editor-text-root);
79
+ }
80
+
81
+ /**
82
+ * Widgets
83
+ */
84
+ akilli-editor editor-root :focus {
85
+ outline: 0.25rem dashed var(--editor-focus);
86
+ }
87
+
88
+ /**
89
+ * Editable
90
+ */
91
+ akilli-editor editor-root [contenteditable] {
92
+ min-height: 1.5rem;
93
+ }
94
+
95
+ akilli-editor editor-root [contenteditable=true]:empty::after {
96
+ color: var(--editor-placeholder);
97
+ content: var(--editor-text-editable);
98
+ }
99
+
100
+ akilli-editor editor-root :is(td, th)[contenteditable] {
101
+ height: 1.5rem;
102
+ }
103
+
104
+ akilli-editor editor-root slot[contenteditable] {
105
+ display: block;
106
+ padding: 0.25rem;
107
+ clear: both;
108
+ border: 0.25rem solid var(--editor-slot);
109
+ }
110
+
111
+ akilli-editor editor-root slot[contenteditable=true]:empty::after {
112
+ color: var(--editor-slot);
113
+ content: var(--editor-text-slot);
114
+ }
115
+
116
+ akilli-editor editor-root [contenteditable=true] :hover {
117
+ cursor: context-menu;
118
+ }
119
+
120
+ /**
121
+ * Sortable
122
+ */
123
+ akilli-editor editor-root [data-sortable][data-sort]:hover {
124
+ cursor: grab;
125
+ }
126
+
127
+ akilli-editor editor-root :is([data-sortover], [contenteditable][data-sortover]) {
128
+ outline: 0.25rem dashed var(--editor-sortover);
129
+ }
130
+
131
+ /**
132
+ * Container
133
+ */
134
+ akilli-editor editor-root :is(details, div, section) {
135
+ overflow: auto;
136
+ }
137
+
138
+ /**
139
+ * Media
140
+ */
141
+ akilli-editor editor-root :is(audio, iframe, img, video) {
142
+ pointer-events: none;
143
+ }
144
+
145
+ /**
146
+ * Table
147
+ */
148
+ akilli-editor editor-root :is(thead, tbody, tfoot) {
149
+ counter-reset: rows;
150
+ }
151
+
152
+ akilli-editor editor-root colgroup {
153
+ display: table-header-group;
154
+ counter-reset: cols;
155
+ }
156
+
157
+ akilli-editor editor-root col,
158
+ akilli-editor editor-root :is(colgroup, tr)::before {
159
+ display: table-cell;
160
+ height: 1.5rem;
161
+ line-height: 1.5rem;
162
+ vertical-align: middle;
163
+ text-align: center;
164
+ color: var(--editor-placeholder);
165
+ }
166
+
167
+ akilli-editor editor-root col::after {
168
+ counter-increment: cols;
169
+ content: var(--editor-text-tablecol) counter(cols);
170
+ }
171
+
172
+ akilli-editor editor-root colgroup::before {
173
+ content: ' ';
174
+ }
175
+
176
+ akilli-editor editor-root tr::before {
177
+ counter-increment: rows;
178
+ content: var(--editor-text-tablebodyrow) counter(rows);
179
+ }
180
+
181
+ akilli-editor editor-root thead tr::before {
182
+ content: var(--editor-text-tableheadrow) counter(rows);
183
+ }
184
+
185
+ akilli-editor editor-root tfoot tr::before {
186
+ content: var(--editor-text-tablefootrow) counter(rows);
187
+ }
188
+
189
+ akilli-editor editor-root col:focus,
190
+ akilli-editor editor-root tr:focus::before {
191
+ background: var(--editor-focus);
192
+ }
193
+
194
+ /**
195
+ * Details
196
+ */
197
+ akilli-editor editor-root summary {
198
+ white-space: pre-wrap;
199
+ }
200
+
201
+ /**
202
+ * Block
203
+ */
204
+ akilli-editor editor-root app-block {
205
+ display: block;
206
+ padding: 0.25rem;
207
+ border: 0.0625rem solid var(--editor-block-background);
208
+ }
209
+
210
+ akilli-editor editor-root app-block::before {
211
+ display: block;
212
+ margin: -0.25rem -0.25rem 0.5rem;
213
+ padding: 0.125rem 0.25rem;
214
+ color: var(--editor-block-color);
215
+ background: var(--editor-block-background);
216
+ content: var(--editor-text-block);
217
+ }
218
+
219
+ /**
220
+ * Dialog
221
+ */
222
+ akilli-editor dialog::backdrop {
223
+ background: var(--editor-dialog-backdrop);
224
+ }
225
+
226
+ akilli-editor dialog form {
227
+ padding: 0.75rem;
228
+ color: var(--editor-dialog-color);
229
+ background: var(--editor-dialog-background);
230
+ }
231
+
232
+ akilli-editor dialog :is(form, fieldset) > :not(:first-child) {
233
+ margin-top: 1.5rem;
234
+ }
235
+
236
+ akilli-editor dialog legend {
237
+ font-size: 1.25rem;
238
+ }
239
+
240
+ akilli-editor dialog label {
241
+ display: block;
242
+ }
243
+
244
+ akilli-editor dialog [data-required] label::after {
245
+ content: ' *';
246
+ }
247
+
248
+ akilli-editor dialog button {
249
+ padding: 0.75rem;
250
+ color: var(--editor-button-color);
251
+ background: var(--editor-button-background);
252
+ }
253
+
254
+ akilli-editor dialog button + button {
255
+ margin-left: 1.5rem;
256
+ }
257
+
258
+ akilli-editor dialog button[type=reset] {
259
+ color: var(--editor-cancel-color);
260
+ background: var(--editor-cancel-background);
261
+ }
262
+
263
+ akilli-editor dialog input:is(
264
+ [type=email],
265
+ [type=number],
266
+ [type=password],
267
+ [type=search],
268
+ [type=tel],
269
+ [type=text],
270
+ [type=url]
271
+ ),
272
+ akilli-editor dialog select {
273
+ width: 100%;
274
+ padding: 0.71875rem 0;
275
+ border-bottom: 0.0625rem solid var(--editor-border);
276
+ }
277
+
278
+ akilli-editor dialog input:is(
279
+ [type=email],
280
+ [type=number],
281
+ [type=password],
282
+ [type=search],
283
+ [type=tel],
284
+ [type=text],
285
+ [type=url]
286
+ ):invalid,
287
+ akilli-editor dialog select:invalid {
288
+ border-color: var(--editor-error);
289
+ }
290
+
291
+ /**
292
+ * Toolbar
293
+ */
294
+ akilli-editor editor-toolbar {
295
+ position: sticky;
296
+ top: 0;
297
+ display: flex;
298
+ flex-wrap: wrap;
299
+ color: var(--editor-toolbar-color);
300
+ background: var(--editor-toolbar-background);
301
+ border: 0.0625rem solid var(--editor-border);
302
+ }
303
+
304
+ akilli-editor :is(editor-focusbar, editor-formatbar) {
305
+ position: absolute;
306
+ left: 0;
307
+ display: flex;
308
+ flex-wrap: wrap;
309
+ color: var(--editor-toolbar-color);
310
+ background: var(--editor-toolbar-background);
311
+ border: 0.0625rem solid var(--editor-border);
312
+ }
313
+
314
+ akilli-editor editor-focusbar:empty,
315
+ akilli-editor editor-focusbar [data-command] {
316
+ display: none;
317
+ }
318
+
319
+ akilli-editor editor-focusbar[data-alignable] [data-command^=align-],
320
+ akilli-editor editor-focusbar[data-deletable] [data-command=delete],
321
+ akilli-editor editor-focusbar[data-sortable] [data-command^=sort-],
322
+ akilli-editor editor-focusbar[data-tag=col] [data-command^=tablecolumn-],
323
+ akilli-editor editor-focusbar[data-tag=tr] [data-command^=tablerow-] {
324
+ display: inline-block;
325
+ }
326
+
327
+ /**
328
+ * Buttons
329
+ */
330
+ akilli-editor [data-command] {
331
+ display: inline-block;
332
+ line-height: 1;
333
+ padding: 0.25rem 0.5rem;
334
+ font-family: editor;
335
+ font-size: 0;
336
+ }
337
+
338
+ akilli-editor [data-command]:focus {
339
+ color: var(--editor-focus);
340
+ }
341
+
342
+ akilli-editor [data-command]::before {
343
+ font-size: 1.5rem;
344
+ }
345
+
346
+ akilli-editor [data-command=abbreviation]::before {
347
+ content: '\e800';
348
+ }
349
+
350
+ akilli-editor [data-command=align-center]::before {
351
+ content: '\e801';
352
+ }
353
+
354
+ akilli-editor [data-command=align-left]::before {
355
+ content: '\e802';
356
+ }
357
+
358
+ akilli-editor [data-command=align-none]::before {
359
+ content: '\e803';
360
+ }
361
+
362
+ akilli-editor [data-command=align-right]::before {
363
+ content: '\e804';
364
+ }
365
+
366
+ akilli-editor [data-command=audio]::before {
367
+ content: '\e805';
368
+ }
369
+
370
+ akilli-editor [data-command=block]::before {
371
+ content: '\e806';
372
+ }
373
+
374
+ akilli-editor [data-command=blockquote]::before {
375
+ content: '\e807';
376
+ }
377
+
378
+ akilli-editor [data-command=bold]::before {
379
+ content: '\e808';
380
+ }
381
+
382
+ akilli-editor [data-command=cite]::before {
383
+ content: '\e809';
384
+ }
385
+
386
+ akilli-editor [data-command=code]::before {
387
+ content: '\e80a';
388
+ }
389
+
390
+ akilli-editor [data-command=data]::before {
391
+ content: '\e80b';
392
+ }
393
+
394
+ akilli-editor [data-command=definition]::before {
395
+ content: '\e80c';
396
+ }
397
+
398
+ akilli-editor [data-command=delete]::before {
399
+ content: '\e80d';
400
+ }
401
+
402
+ akilli-editor [data-command=deletion]::before {
403
+ content: '\e80e';
404
+ }
405
+
406
+ akilli-editor [data-command=details]::before {
407
+ content: '\e80f';
408
+ }
409
+
410
+ akilli-editor [data-command=division]::before {
411
+ content: '\e810';
412
+ }
413
+
414
+ akilli-editor [data-command=emphasis]::before {
415
+ content: '\e811';
416
+ }
417
+
418
+ akilli-editor [data-command=heading]::before {
419
+ content: '\e812';
420
+ }
421
+
422
+ akilli-editor [data-command=horizontalrule]::before {
423
+ content: '\e813';
424
+ }
425
+
426
+ akilli-editor [data-command=iframe]::before {
427
+ content: '\e814';
428
+ }
429
+
430
+ akilli-editor [data-command=image]::before {
431
+ content: '\e815';
432
+ }
433
+
434
+ akilli-editor [data-command=insertion]::before {
435
+ content: '\e816';
436
+ }
437
+
438
+ akilli-editor [data-command=italic]::before {
439
+ content: '\e817';
440
+ }
441
+
442
+ akilli-editor [data-command=keyboard]::before {
443
+ content: '\e818';
444
+ }
445
+
446
+ akilli-editor [data-command=link]::before {
447
+ content: '\e819';
448
+ }
449
+
450
+ akilli-editor [data-command=mark]::before {
451
+ content: '\e81a';
452
+ }
453
+
454
+ akilli-editor [data-command=orderedlist]::before {
455
+ content: '\e81b';
456
+ }
457
+
458
+ akilli-editor [data-command=paragraph]::before {
459
+ content: '\e81c';
460
+ }
461
+
462
+ akilli-editor [data-command=preformat]::before {
463
+ content: '\e81d';
464
+ }
465
+
466
+ akilli-editor [data-command=quote]::before {
467
+ content: '\e81e';
468
+ }
469
+
470
+ akilli-editor [data-command=sample]::before {
471
+ content: '\e81f';
472
+ }
473
+
474
+ akilli-editor [data-command=section]::before {
475
+ content: '\e820';
476
+ }
477
+
478
+ akilli-editor [data-command=small]::before {
479
+ content: '\e821';
480
+ }
481
+
482
+ akilli-editor [data-command=sort-first]::before {
483
+ content: '\e822';
484
+ }
485
+
486
+ akilli-editor [data-command=sort-last]::before {
487
+ content: '\e823';
488
+ }
489
+
490
+ akilli-editor [data-command=sort-next]::before {
491
+ content: '\e824';
492
+ }
493
+
494
+ akilli-editor [data-command=sort-prev]::before {
495
+ content: '\e825';
496
+ }
497
+
498
+ akilli-editor [data-command=strikethrough]::before {
499
+ content: '\e826';
500
+ }
501
+
502
+ akilli-editor [data-command=strong]::before {
503
+ content: '\e827';
504
+ }
505
+
506
+ akilli-editor [data-command=subheading]::before {
507
+ content: '\e828';
508
+ }
509
+
510
+ akilli-editor [data-command=subscript]::before {
511
+ content: '\e829';
512
+ }
513
+
514
+ akilli-editor [data-command=superscript]::before {
515
+ content: '\e82a';
516
+ }
517
+
518
+ akilli-editor [data-command=table]::before {
519
+ content: '\e82b';
520
+ }
521
+
522
+ akilli-editor [data-command=tablecolumn-add]::before {
523
+ content: '\e82c';
524
+ }
525
+
526
+ akilli-editor [data-command=tablerow-add]::before {
527
+ content: '\e82d';
528
+ }
529
+
530
+ akilli-editor [data-command=time]::before {
531
+ content: '\e82e';
532
+ }
533
+
534
+ akilli-editor [data-command=underline]::before {
535
+ content: '\e82f';
536
+ }
537
+
538
+ akilli-editor [data-command=unorderedlist]::before {
539
+ content: '\e830';
540
+ }
541
+
542
+ akilli-editor [data-command=variable]::before {
543
+ content: '\e831';
544
+ }
545
+
546
+ akilli-editor [data-command=video]::before {
547
+ content: '\e832';
548
+ }
Binary file
package/cite/Cite.js ADDED
@@ -0,0 +1,30 @@
1
+ import Base from '../base/Base.js';
2
+ import Key from '../base/Key.js';
3
+ import Plugin from '../base/Plugin.js';
4
+ import TagGroup from '../base/TagGroup.js';
5
+ import TagName from '../base/TagName.js';
6
+
7
+ export default class Cite extends Plugin {
8
+ /**
9
+ * @type {string}
10
+ */
11
+ static get name() {
12
+ return 'cite';
13
+ }
14
+
15
+ /**
16
+ * @type {Plugin[]}
17
+ */
18
+ static get dependencies() {
19
+ return [Base];
20
+ }
21
+
22
+ /**
23
+ * @return {void}
24
+ */
25
+ init() {
26
+ this._tag({ name: TagName.CITE, group: TagGroup.FORMAT });
27
+ this._command(TagName.CITE);
28
+ this._formatbar('Citation', Key.Z);
29
+ }
30
+ }
package/code/Code.js ADDED
@@ -0,0 +1,30 @@
1
+ import Base from '../base/Base.js';
2
+ import Key from '../base/Key.js';
3
+ import Plugin from '../base/Plugin.js';
4
+ import TagGroup from '../base/TagGroup.js';
5
+ import TagName from '../base/TagName.js';
6
+
7
+ export default class Code extends Plugin {
8
+ /**
9
+ * @type {string}
10
+ */
11
+ static get name() {
12
+ return 'code';
13
+ }
14
+
15
+ /**
16
+ * @type {Plugin[]}
17
+ */
18
+ static get dependencies() {
19
+ return [Base];
20
+ }
21
+
22
+ /**
23
+ * @return {void}
24
+ */
25
+ init() {
26
+ this._tag({ name: TagName.CODE, group: TagGroup.FORMAT });
27
+ this._command(TagName.CODE);
28
+ this._formatbar('Code', Key.C);
29
+ }
30
+ }
package/data/Data.js ADDED
@@ -0,0 +1,32 @@
1
+ import Base from '../base/Base.js';
2
+ import DataDialog from './DataDialog.js';
3
+ import Key from '../base/Key.js';
4
+ import Plugin from '../base/Plugin.js';
5
+ import TagGroup from '../base/TagGroup.js';
6
+ import TagName from '../base/TagName.js';
7
+
8
+ export default class Data extends Plugin {
9
+ /**
10
+ * @type {string}
11
+ */
12
+ static get name() {
13
+ return 'data';
14
+ }
15
+
16
+ /**
17
+ * @type {Plugin[]}
18
+ */
19
+ static get dependencies() {
20
+ return [Base];
21
+ }
22
+
23
+ /**
24
+ * @return {void}
25
+ */
26
+ init() {
27
+ this._tag({ name: TagName.DATA, group: TagGroup.FORMAT, attributes: ['value'] });
28
+ this.editor.dialogs.set(new DataDialog(this.editor, this.constructor.name));
29
+ this._command(TagName.DATA);
30
+ this._formatbar('Data', Key.J);
31
+ }
32
+ }
@@ -0,0 +1,13 @@
1
+ import Dialog from '../base/Dialog.js';
2
+
3
+ export default class DataDialog extends Dialog {
4
+ /**
5
+ * @protected
6
+ * @return {void}
7
+ */
8
+ _prepareForm() {
9
+ this.formCreator.addLegend(this._('Data')).addTextInput('value', this._('Machine-readable Value'), {
10
+ placeholder: this._('Insert value or leave empty to remove it'),
11
+ });
12
+ }
13
+ }
@@ -0,0 +1,32 @@
1
+ import Base from '../base/Base.js';
2
+ import DefinitionDialog from './DefinitionDialog.js';
3
+ import Key from '../base/Key.js';
4
+ import Plugin from '../base/Plugin.js';
5
+ import TagGroup from '../base/TagGroup.js';
6
+ import TagName from '../base/TagName.js';
7
+
8
+ export default class Definition extends Plugin {
9
+ /**
10
+ * @type {string}
11
+ */
12
+ static get name() {
13
+ return 'definition';
14
+ }
15
+
16
+ /**
17
+ * @type {Plugin[]}
18
+ */
19
+ static get dependencies() {
20
+ return [Base];
21
+ }
22
+
23
+ /**
24
+ * @return {void}
25
+ */
26
+ init() {
27
+ this._tag({ name: TagName.DFN, group: TagGroup.FORMAT, attributes: ['title'] });
28
+ this.editor.dialogs.set(new DefinitionDialog(this.editor, this.constructor.name));
29
+ this._command(TagName.DFN);
30
+ this._formatbar('Definition', Key.D);
31
+ }
32
+ }
@@ -0,0 +1,13 @@
1
+ import Dialog from '../base/Dialog.js';
2
+
3
+ export default class DefinitionDialog extends Dialog {
4
+ /**
5
+ * @protected
6
+ * @return {void}
7
+ */
8
+ _prepareForm() {
9
+ this.formCreator.addLegend(this._('Definition')).addTextInput('title', this._('Term'), {
10
+ placeholder: this._('Insert term or leave empty to remove it'),
11
+ });
12
+ }
13
+ }