@ckeditor/ckeditor5-html-support 39.0.1 → 40.0.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 (97) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +3 -3
  3. package/build/html-support.js +1 -1
  4. package/build/html-support.js.map +1 -0
  5. package/lang/translations/ar.po +1 -0
  6. package/lang/translations/bg.po +1 -0
  7. package/lang/translations/bn.po +1 -0
  8. package/lang/translations/ca.po +1 -0
  9. package/lang/translations/cs.po +1 -0
  10. package/lang/translations/da.po +1 -0
  11. package/lang/translations/de.po +1 -0
  12. package/lang/translations/el.po +1 -0
  13. package/lang/translations/en-au.po +1 -0
  14. package/lang/translations/en.po +1 -0
  15. package/lang/translations/es.po +1 -0
  16. package/lang/translations/et.po +1 -0
  17. package/lang/translations/fi.po +1 -0
  18. package/lang/translations/fr.po +1 -0
  19. package/lang/translations/gl.po +1 -0
  20. package/lang/translations/he.po +1 -0
  21. package/lang/translations/hi.po +1 -0
  22. package/lang/translations/hr.po +1 -0
  23. package/lang/translations/hu.po +1 -0
  24. package/lang/translations/id.po +1 -0
  25. package/lang/translations/it.po +1 -0
  26. package/lang/translations/ja.po +1 -0
  27. package/lang/translations/jv.po +1 -0
  28. package/lang/translations/ko.po +1 -0
  29. package/lang/translations/lt.po +1 -0
  30. package/lang/translations/lv.po +1 -0
  31. package/lang/translations/ms.po +1 -0
  32. package/lang/translations/nl.po +1 -0
  33. package/lang/translations/no.po +1 -0
  34. package/lang/translations/pl.po +1 -0
  35. package/lang/translations/pt-br.po +1 -0
  36. package/lang/translations/pt.po +1 -0
  37. package/lang/translations/ro.po +1 -0
  38. package/lang/translations/ru.po +1 -0
  39. package/lang/translations/sk.po +1 -0
  40. package/lang/translations/sr-latn.po +1 -0
  41. package/lang/translations/sr.po +1 -0
  42. package/lang/translations/sv.po +1 -0
  43. package/lang/translations/th.po +1 -0
  44. package/lang/translations/tr.po +1 -0
  45. package/lang/translations/ug.po +1 -0
  46. package/lang/translations/uk.po +1 -0
  47. package/lang/translations/ur.po +1 -0
  48. package/lang/translations/vi.po +1 -0
  49. package/lang/translations/zh-cn.po +1 -0
  50. package/lang/translations/zh.po +1 -0
  51. package/package.json +2 -6
  52. package/src/augmentation.d.ts +33 -33
  53. package/src/augmentation.js +5 -5
  54. package/src/converters.d.ts +60 -60
  55. package/src/converters.js +180 -180
  56. package/src/datafilter.d.ts +304 -304
  57. package/src/datafilter.js +720 -720
  58. package/src/dataschema.d.ts +183 -183
  59. package/src/dataschema.js +196 -196
  60. package/src/fullpage.d.ts +21 -21
  61. package/src/fullpage.js +80 -80
  62. package/src/generalhtmlsupport.d.ts +98 -98
  63. package/src/generalhtmlsupport.js +240 -240
  64. package/src/generalhtmlsupportconfig.d.ts +77 -77
  65. package/src/generalhtmlsupportconfig.js +5 -5
  66. package/src/htmlcomment.d.ts +71 -71
  67. package/src/htmlcomment.js +218 -218
  68. package/src/htmlpagedataprocessor.d.ts +22 -22
  69. package/src/htmlpagedataprocessor.js +67 -67
  70. package/src/index.d.ts +25 -25
  71. package/src/index.js +14 -14
  72. package/src/integrations/codeblock.d.ts +23 -23
  73. package/src/integrations/codeblock.js +101 -101
  74. package/src/integrations/customelement.d.ts +27 -27
  75. package/src/integrations/customelement.js +146 -146
  76. package/src/integrations/documentlist.d.ts +27 -27
  77. package/src/integrations/documentlist.js +178 -203
  78. package/src/integrations/dualcontent.d.ts +45 -45
  79. package/src/integrations/dualcontent.js +119 -119
  80. package/src/integrations/heading.d.ts +31 -31
  81. package/src/integrations/heading.js +60 -60
  82. package/src/integrations/image.d.ts +26 -26
  83. package/src/integrations/image.js +189 -189
  84. package/src/integrations/integrationutils.d.ts +15 -15
  85. package/src/integrations/integrationutils.js +21 -21
  86. package/src/integrations/mediaembed.d.ts +26 -26
  87. package/src/integrations/mediaembed.js +119 -119
  88. package/src/integrations/script.d.ts +26 -26
  89. package/src/integrations/script.js +59 -59
  90. package/src/integrations/style.d.ts +26 -26
  91. package/src/integrations/style.js +59 -59
  92. package/src/integrations/table.d.ts +23 -23
  93. package/src/integrations/table.js +163 -163
  94. package/src/schemadefinitions.d.ts +13 -13
  95. package/src/schemadefinitions.js +956 -956
  96. package/src/utils.d.ts +72 -72
  97. package/src/utils.js +139 -139
@@ -1,956 +1,956 @@
1
- /**
2
- * @license Copyright (c) 2003-2023, 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
- * @module html-support/schemadefinitions
7
- */
8
- // Skipped elements due to HTML deprecation:
9
- // * noframes (not sure if we should provide support for this element. CKE4 is not supporting frameset and frame,
10
- // but it will unpack <frameset><noframes>foobar</noframes></frameset> to <noframes>foobar</noframes>, so there
11
- // may be some content loss. Although using noframes as a standalone element seems invalid)
12
- // * keygen (this one is also empty)
13
- // * applet (support is limited mostly to old IE)
14
- // * basefont (this one is also empty)
15
- // * isindex (basically no support for modern browsers at all)
16
- //
17
- // Skipped elements due to lack empty element support:
18
- // * hr
19
- // * area
20
- // * br
21
- // * command
22
- // * map
23
- // * wbr
24
- // * colgroup -> col
25
- //
26
- // Skipped elements due to complexity:
27
- // * datalist with option elements used as a data source for input[list] element
28
- //
29
- // Skipped elements as they are handled as an object content:
30
- // * track
31
- // * source
32
- // * option
33
- // * param
34
- // * optgroup
35
- //
36
- // Skipped full page HTML elements:
37
- // * body
38
- // * html
39
- // * title
40
- // * head
41
- // * meta
42
- // * link
43
- // * etc...
44
- //
45
- // Skipped hidden elements:
46
- // noscript
47
- export default {
48
- block: [
49
- // Existing features.
50
- {
51
- model: 'codeBlock',
52
- view: 'pre'
53
- },
54
- {
55
- model: 'paragraph',
56
- view: 'p'
57
- },
58
- {
59
- model: 'blockQuote',
60
- view: 'blockquote'
61
- },
62
- {
63
- model: 'listItem',
64
- view: 'li'
65
- },
66
- {
67
- model: 'pageBreak',
68
- view: 'div'
69
- },
70
- {
71
- model: 'rawHtml',
72
- view: 'div'
73
- },
74
- {
75
- model: 'table',
76
- view: 'table'
77
- },
78
- {
79
- model: 'tableRow',
80
- view: 'tr'
81
- },
82
- {
83
- model: 'tableCell',
84
- view: 'td'
85
- },
86
- {
87
- model: 'tableCell',
88
- view: 'th'
89
- },
90
- {
91
- model: 'tableColumnGroup',
92
- view: 'colgroup'
93
- },
94
- {
95
- model: 'tableColumn',
96
- view: 'col'
97
- },
98
- {
99
- model: 'caption',
100
- view: 'caption'
101
- },
102
- {
103
- model: 'caption',
104
- view: 'figcaption'
105
- },
106
- {
107
- model: 'imageBlock',
108
- view: 'img'
109
- },
110
- {
111
- model: 'imageInline',
112
- view: 'img'
113
- },
114
- // Compatibility features.
115
- {
116
- model: 'htmlP',
117
- view: 'p',
118
- modelSchema: {
119
- inheritAllFrom: '$block'
120
- }
121
- },
122
- {
123
- model: 'htmlBlockquote',
124
- view: 'blockquote',
125
- modelSchema: {
126
- inheritAllFrom: '$container'
127
- }
128
- },
129
- {
130
- model: 'htmlTable',
131
- view: 'table',
132
- modelSchema: {
133
- allowWhere: '$block',
134
- isBlock: true
135
- }
136
- },
137
- {
138
- model: 'htmlTbody',
139
- view: 'tbody',
140
- modelSchema: {
141
- allowIn: 'htmlTable',
142
- isBlock: false
143
- }
144
- },
145
- {
146
- model: 'htmlThead',
147
- view: 'thead',
148
- modelSchema: {
149
- allowIn: 'htmlTable',
150
- isBlock: false
151
- }
152
- },
153
- {
154
- model: 'htmlTfoot',
155
- view: 'tfoot',
156
- modelSchema: {
157
- allowIn: 'htmlTable',
158
- isBlock: false
159
- }
160
- },
161
- {
162
- model: 'htmlCaption',
163
- view: 'caption',
164
- modelSchema: {
165
- allowIn: 'htmlTable',
166
- allowChildren: '$text',
167
- isBlock: false
168
- }
169
- },
170
- {
171
- model: 'htmlColgroup',
172
- view: 'colgroup',
173
- modelSchema: {
174
- allowIn: 'htmlTable',
175
- allowChildren: 'col',
176
- isBlock: false
177
- }
178
- },
179
- {
180
- model: 'htmlCol',
181
- view: 'col',
182
- modelSchema: {
183
- allowIn: 'htmlColgroup',
184
- isBlock: false
185
- }
186
- },
187
- {
188
- model: 'htmlTr',
189
- view: 'tr',
190
- modelSchema: {
191
- allowIn: ['htmlTable', 'htmlThead', 'htmlTbody'],
192
- isLimit: true
193
- }
194
- },
195
- // TODO can also include text.
196
- {
197
- model: 'htmlTd',
198
- view: 'td',
199
- modelSchema: {
200
- allowIn: 'htmlTr',
201
- allowContentOf: '$container',
202
- isLimit: true,
203
- isBlock: false
204
- }
205
- },
206
- // TODO can also include text.
207
- {
208
- model: 'htmlTh',
209
- view: 'th',
210
- modelSchema: {
211
- allowIn: 'htmlTr',
212
- allowContentOf: '$container',
213
- isLimit: true,
214
- isBlock: false
215
- }
216
- },
217
- // TODO can also include text.
218
- {
219
- model: 'htmlFigure',
220
- view: 'figure',
221
- modelSchema: {
222
- inheritAllFrom: '$container',
223
- isBlock: false
224
- }
225
- },
226
- // TODO can also include other block elements.
227
- {
228
- model: 'htmlFigcaption',
229
- view: 'figcaption',
230
- modelSchema: {
231
- allowIn: 'htmlFigure',
232
- allowChildren: '$text',
233
- isBlock: false
234
- }
235
- },
236
- // TODO can also include text.
237
- {
238
- model: 'htmlAddress',
239
- view: 'address',
240
- modelSchema: {
241
- inheritAllFrom: '$container',
242
- isBlock: false
243
- }
244
- },
245
- // TODO can also include text.
246
- {
247
- model: 'htmlAside',
248
- view: 'aside',
249
- modelSchema: {
250
- inheritAllFrom: '$container',
251
- isBlock: false
252
- }
253
- },
254
- // TODO can also include text.
255
- {
256
- model: 'htmlMain',
257
- view: 'main',
258
- modelSchema: {
259
- inheritAllFrom: '$container',
260
- isBlock: false
261
- }
262
- },
263
- // TODO can also include text.
264
- {
265
- model: 'htmlDetails',
266
- view: 'details',
267
- modelSchema: {
268
- inheritAllFrom: '$container',
269
- isBlock: false
270
- }
271
- },
272
- {
273
- model: 'htmlSummary',
274
- view: 'summary',
275
- modelSchema: {
276
- allowChildren: '$text',
277
- allowIn: 'htmlDetails',
278
- isBlock: false
279
- }
280
- },
281
- {
282
- model: 'htmlDiv',
283
- view: 'div',
284
- paragraphLikeModel: 'htmlDivParagraph',
285
- modelSchema: {
286
- inheritAllFrom: '$container'
287
- }
288
- },
289
- // TODO can also include text.
290
- {
291
- model: 'htmlFieldset',
292
- view: 'fieldset',
293
- modelSchema: {
294
- inheritAllFrom: '$container',
295
- isBlock: false
296
- }
297
- },
298
- // TODO can also include h1-h6.
299
- {
300
- model: 'htmlLegend',
301
- view: 'legend',
302
- modelSchema: {
303
- allowIn: 'htmlFieldset',
304
- allowChildren: '$text'
305
- }
306
- },
307
- // TODO can also include text.
308
- {
309
- model: 'htmlHeader',
310
- view: 'header',
311
- modelSchema: {
312
- inheritAllFrom: '$container',
313
- isBlock: false
314
- }
315
- },
316
- // TODO can also include text.
317
- {
318
- model: 'htmlFooter',
319
- view: 'footer',
320
- modelSchema: {
321
- inheritAllFrom: '$container',
322
- isBlock: false
323
- }
324
- },
325
- // TODO can also include text.
326
- {
327
- model: 'htmlForm',
328
- view: 'form',
329
- modelSchema: {
330
- inheritAllFrom: '$container',
331
- isBlock: true
332
- }
333
- },
334
- {
335
- model: 'htmlHgroup',
336
- view: 'hgroup',
337
- modelSchema: {
338
- allowChildren: [
339
- 'htmlH1',
340
- 'htmlH2',
341
- 'htmlH3',
342
- 'htmlH4',
343
- 'htmlH5',
344
- 'htmlH6'
345
- ],
346
- isBlock: false
347
- }
348
- },
349
- {
350
- model: 'htmlH1',
351
- view: 'h1',
352
- modelSchema: {
353
- inheritAllFrom: '$block'
354
- }
355
- },
356
- {
357
- model: 'htmlH2',
358
- view: 'h2',
359
- modelSchema: {
360
- inheritAllFrom: '$block'
361
- }
362
- },
363
- {
364
- model: 'htmlH3',
365
- view: 'h3',
366
- modelSchema: {
367
- inheritAllFrom: '$block'
368
- }
369
- },
370
- {
371
- model: 'htmlH4',
372
- view: 'h4',
373
- modelSchema: {
374
- inheritAllFrom: '$block'
375
- }
376
- },
377
- {
378
- model: 'htmlH5',
379
- view: 'h5',
380
- modelSchema: {
381
- inheritAllFrom: '$block'
382
- }
383
- },
384
- {
385
- model: 'htmlH6',
386
- view: 'h6',
387
- modelSchema: {
388
- inheritAllFrom: '$block'
389
- }
390
- },
391
- {
392
- model: '$htmlList',
393
- modelSchema: {
394
- allowWhere: '$container',
395
- allowChildren: ['$htmlList', 'htmlLi'],
396
- isBlock: false
397
- }
398
- },
399
- {
400
- model: 'htmlDir',
401
- view: 'dir',
402
- modelSchema: {
403
- inheritAllFrom: '$htmlList'
404
- }
405
- },
406
- {
407
- model: 'htmlMenu',
408
- view: 'menu',
409
- modelSchema: {
410
- inheritAllFrom: '$htmlList'
411
- }
412
- },
413
- {
414
- model: 'htmlUl',
415
- view: 'ul',
416
- modelSchema: {
417
- inheritAllFrom: '$htmlList'
418
- }
419
- },
420
- {
421
- model: 'htmlOl',
422
- view: 'ol',
423
- modelSchema: {
424
- inheritAllFrom: '$htmlList'
425
- }
426
- },
427
- // TODO can also include other block elements.
428
- {
429
- model: 'htmlLi',
430
- view: 'li',
431
- modelSchema: {
432
- allowIn: '$htmlList',
433
- allowChildren: '$text',
434
- isBlock: false
435
- }
436
- },
437
- {
438
- model: 'htmlPre',
439
- view: 'pre',
440
- modelSchema: {
441
- inheritAllFrom: '$block'
442
- }
443
- },
444
- {
445
- model: 'htmlArticle',
446
- view: 'article',
447
- modelSchema: {
448
- inheritAllFrom: '$container',
449
- isBlock: false
450
- }
451
- },
452
- {
453
- model: 'htmlSection',
454
- view: 'section',
455
- modelSchema: {
456
- inheritAllFrom: '$container',
457
- isBlock: false
458
- }
459
- },
460
- // TODO can also include text.
461
- {
462
- model: 'htmlNav',
463
- view: 'nav',
464
- modelSchema: {
465
- inheritAllFrom: '$container',
466
- isBlock: false
467
- }
468
- },
469
- {
470
- model: 'htmlDivDl',
471
- view: 'div',
472
- modelSchema: {
473
- allowChildren: ['htmlDt', 'htmlDd'],
474
- allowIn: 'htmlDl'
475
- }
476
- },
477
- {
478
- model: 'htmlDl',
479
- view: 'dl',
480
- modelSchema: {
481
- allowWhere: '$container',
482
- allowChildren: ['htmlDt', 'htmlDd', 'htmlDivDl'],
483
- isBlock: false
484
- }
485
- },
486
- {
487
- model: 'htmlDt',
488
- view: 'dt',
489
- modelSchema: {
490
- allowChildren: '$block',
491
- isBlock: false
492
- }
493
- },
494
- {
495
- model: 'htmlDd',
496
- view: 'dd',
497
- modelSchema: {
498
- allowChildren: '$block',
499
- isBlock: false
500
- }
501
- },
502
- {
503
- model: 'htmlCenter',
504
- view: 'center',
505
- modelSchema: {
506
- inheritAllFrom: '$container',
507
- isBlock: false
508
- }
509
- }
510
- ],
511
- inline: [
512
- // Existing features (attribute set on an existing model element).
513
- {
514
- model: 'htmlLiAttributes',
515
- view: 'li',
516
- appliesToBlock: true,
517
- coupledAttribute: 'listItemId'
518
- },
519
- {
520
- model: 'htmlOlAttributes',
521
- view: 'ol',
522
- appliesToBlock: true,
523
- coupledAttribute: 'listItemId'
524
- },
525
- {
526
- model: 'htmlUlAttributes',
527
- view: 'ul',
528
- appliesToBlock: true,
529
- coupledAttribute: 'listItemId'
530
- },
531
- {
532
- model: 'htmlFigureAttributes',
533
- view: 'figure',
534
- appliesToBlock: 'table'
535
- },
536
- {
537
- model: 'htmlTheadAttributes',
538
- view: 'thead',
539
- appliesToBlock: 'table'
540
- },
541
- {
542
- model: 'htmlTbodyAttributes',
543
- view: 'tbody',
544
- appliesToBlock: 'table'
545
- },
546
- {
547
- model: 'htmlFigureAttributes',
548
- view: 'figure',
549
- appliesToBlock: 'imageBlock'
550
- },
551
- // Compatibility features.
552
- {
553
- model: 'htmlAcronym',
554
- view: 'acronym',
555
- attributeProperties: {
556
- copyOnEnter: true,
557
- isFormatting: true
558
- }
559
- },
560
- {
561
- model: 'htmlTt',
562
- view: 'tt',
563
- attributeProperties: {
564
- copyOnEnter: true,
565
- isFormatting: true
566
- }
567
- },
568
- {
569
- model: 'htmlFont',
570
- view: 'font',
571
- attributeProperties: {
572
- copyOnEnter: true,
573
- isFormatting: true
574
- }
575
- },
576
- {
577
- model: 'htmlTime',
578
- view: 'time',
579
- attributeProperties: {
580
- copyOnEnter: true,
581
- isFormatting: true
582
- }
583
- },
584
- {
585
- model: 'htmlVar',
586
- view: 'var',
587
- attributeProperties: {
588
- copyOnEnter: true,
589
- isFormatting: true
590
- }
591
- },
592
- {
593
- model: 'htmlBig',
594
- view: 'big',
595
- attributeProperties: {
596
- copyOnEnter: true,
597
- isFormatting: true
598
- }
599
- },
600
- {
601
- model: 'htmlSmall',
602
- view: 'small',
603
- attributeProperties: {
604
- copyOnEnter: true,
605
- isFormatting: true
606
- }
607
- },
608
- {
609
- model: 'htmlSamp',
610
- view: 'samp',
611
- attributeProperties: {
612
- copyOnEnter: true,
613
- isFormatting: true
614
- }
615
- },
616
- {
617
- model: 'htmlQ',
618
- view: 'q',
619
- attributeProperties: {
620
- copyOnEnter: true,
621
- isFormatting: true
622
- }
623
- },
624
- {
625
- model: 'htmlOutput',
626
- view: 'output',
627
- attributeProperties: {
628
- copyOnEnter: true,
629
- isFormatting: true
630
- }
631
- },
632
- {
633
- model: 'htmlKbd',
634
- view: 'kbd',
635
- attributeProperties: {
636
- copyOnEnter: true,
637
- isFormatting: true
638
- }
639
- },
640
- {
641
- model: 'htmlBdi',
642
- view: 'bdi',
643
- attributeProperties: {
644
- copyOnEnter: true,
645
- isFormatting: true
646
- }
647
- },
648
- {
649
- model: 'htmlBdo',
650
- view: 'bdo',
651
- attributeProperties: {
652
- copyOnEnter: true,
653
- isFormatting: true
654
- }
655
- },
656
- {
657
- model: 'htmlAbbr',
658
- view: 'abbr',
659
- attributeProperties: {
660
- copyOnEnter: true,
661
- isFormatting: true
662
- }
663
- },
664
- {
665
- model: 'htmlA',
666
- view: 'a',
667
- priority: 5,
668
- coupledAttribute: 'linkHref',
669
- attributeProperties: {
670
- copyOnEnter: true
671
- }
672
- },
673
- {
674
- model: 'htmlStrong',
675
- view: 'strong',
676
- coupledAttribute: 'bold',
677
- attributeProperties: {
678
- copyOnEnter: true,
679
- isFormatting: true
680
- }
681
- },
682
- {
683
- model: 'htmlB',
684
- view: 'b',
685
- coupledAttribute: 'bold',
686
- attributeProperties: {
687
- copyOnEnter: true,
688
- isFormatting: true
689
- }
690
- },
691
- {
692
- model: 'htmlI',
693
- view: 'i',
694
- coupledAttribute: 'italic',
695
- attributeProperties: {
696
- copyOnEnter: true,
697
- isFormatting: true
698
- }
699
- },
700
- {
701
- model: 'htmlEm',
702
- view: 'em',
703
- coupledAttribute: 'italic',
704
- attributeProperties: {
705
- copyOnEnter: true,
706
- isFormatting: true
707
- }
708
- },
709
- {
710
- model: 'htmlS',
711
- view: 's',
712
- coupledAttribute: 'strikethrough',
713
- attributeProperties: {
714
- copyOnEnter: true,
715
- isFormatting: true
716
- }
717
- },
718
- // TODO According to HTML-spec can behave as div-like element, although CKE4 only handles it as an inline element.
719
- {
720
- model: 'htmlDel',
721
- view: 'del',
722
- coupledAttribute: 'strikethrough',
723
- attributeProperties: {
724
- copyOnEnter: true,
725
- isFormatting: true
726
- }
727
- },
728
- // TODO According to HTML-spec can behave as div-like element, although CKE4 only handles it as an inline element.
729
- {
730
- model: 'htmlIns',
731
- view: 'ins',
732
- attributeProperties: {
733
- copyOnEnter: true,
734
- isFormatting: true
735
- }
736
- },
737
- {
738
- model: 'htmlU',
739
- view: 'u',
740
- coupledAttribute: 'underline',
741
- attributeProperties: {
742
- copyOnEnter: true,
743
- isFormatting: true
744
- }
745
- },
746
- {
747
- model: 'htmlSub',
748
- view: 'sub',
749
- coupledAttribute: 'subscript',
750
- attributeProperties: {
751
- copyOnEnter: true,
752
- isFormatting: true
753
- }
754
- },
755
- {
756
- model: 'htmlSup',
757
- view: 'sup',
758
- coupledAttribute: 'superscript',
759
- attributeProperties: {
760
- copyOnEnter: true,
761
- isFormatting: true
762
- }
763
- },
764
- {
765
- model: 'htmlCode',
766
- view: 'code',
767
- coupledAttribute: 'code',
768
- attributeProperties: {
769
- copyOnEnter: true,
770
- isFormatting: true
771
- }
772
- },
773
- {
774
- model: 'htmlMark',
775
- view: 'mark',
776
- attributeProperties: {
777
- copyOnEnter: true,
778
- isFormatting: true
779
- }
780
- },
781
- {
782
- model: 'htmlSpan',
783
- view: 'span',
784
- attributeProperties: {
785
- copyOnEnter: true,
786
- isFormatting: true
787
- }
788
- },
789
- {
790
- model: 'htmlCite',
791
- view: 'cite',
792
- attributeProperties: {
793
- copyOnEnter: true,
794
- isFormatting: true
795
- }
796
- },
797
- {
798
- model: 'htmlLabel',
799
- view: 'label',
800
- attributeProperties: {
801
- copyOnEnter: true,
802
- isFormatting: true
803
- }
804
- },
805
- {
806
- model: 'htmlDfn',
807
- view: 'dfn',
808
- attributeProperties: {
809
- copyOnEnter: true,
810
- isFormatting: true
811
- }
812
- },
813
- // Objects.
814
- {
815
- model: 'htmlObject',
816
- view: 'object',
817
- isObject: true,
818
- modelSchema: {
819
- inheritAllFrom: '$inlineObject'
820
- }
821
- },
822
- {
823
- model: 'htmlIframe',
824
- view: 'iframe',
825
- isObject: true,
826
- modelSchema: {
827
- inheritAllFrom: '$inlineObject'
828
- }
829
- },
830
- {
831
- model: 'htmlInput',
832
- view: 'input',
833
- isObject: true,
834
- modelSchema: {
835
- inheritAllFrom: '$inlineObject'
836
- }
837
- },
838
- {
839
- model: 'htmlButton',
840
- view: 'button',
841
- isObject: true,
842
- modelSchema: {
843
- inheritAllFrom: '$inlineObject'
844
- }
845
- },
846
- {
847
- model: 'htmlTextarea',
848
- view: 'textarea',
849
- isObject: true,
850
- modelSchema: {
851
- inheritAllFrom: '$inlineObject'
852
- }
853
- },
854
- {
855
- model: 'htmlSelect',
856
- view: 'select',
857
- isObject: true,
858
- modelSchema: {
859
- inheritAllFrom: '$inlineObject'
860
- }
861
- },
862
- {
863
- model: 'htmlVideo',
864
- view: 'video',
865
- isObject: true,
866
- modelSchema: {
867
- inheritAllFrom: '$inlineObject'
868
- }
869
- },
870
- {
871
- model: 'htmlEmbed',
872
- view: 'embed',
873
- isObject: true,
874
- modelSchema: {
875
- inheritAllFrom: '$inlineObject'
876
- }
877
- },
878
- {
879
- model: 'htmlOembed',
880
- view: 'oembed',
881
- isObject: true,
882
- modelSchema: {
883
- inheritAllFrom: '$inlineObject'
884
- }
885
- },
886
- {
887
- model: 'htmlAudio',
888
- view: 'audio',
889
- isObject: true,
890
- modelSchema: {
891
- inheritAllFrom: '$inlineObject'
892
- }
893
- },
894
- {
895
- model: 'htmlImg',
896
- view: 'img',
897
- isObject: true,
898
- modelSchema: {
899
- inheritAllFrom: '$inlineObject'
900
- }
901
- },
902
- {
903
- model: 'htmlCanvas',
904
- view: 'canvas',
905
- isObject: true,
906
- modelSchema: {
907
- inheritAllFrom: '$inlineObject'
908
- }
909
- },
910
- // TODO it could be probably represented as non-object element, although it has graphical representation,
911
- // so probably makes more sense to keep it as an object.
912
- {
913
- model: 'htmlMeter',
914
- view: 'meter',
915
- isObject: true,
916
- modelSchema: {
917
- inheritAllFrom: '$inlineObject'
918
- }
919
- },
920
- // TODO it could be probably represented as non-object element, although it has graphical representation,
921
- // so probably makes more sense to keep it as an object.
922
- {
923
- model: 'htmlProgress',
924
- view: 'progress',
925
- isObject: true,
926
- modelSchema: {
927
- inheritAllFrom: '$inlineObject'
928
- }
929
- },
930
- {
931
- model: 'htmlScript',
932
- view: 'script',
933
- modelSchema: {
934
- allowWhere: ['$text', '$block'],
935
- isInline: true
936
- }
937
- },
938
- {
939
- model: 'htmlStyle',
940
- view: 'style',
941
- modelSchema: {
942
- allowWhere: ['$text', '$block'],
943
- isInline: true
944
- }
945
- },
946
- {
947
- model: 'htmlCustomElement',
948
- view: '$customElement',
949
- modelSchema: {
950
- allowWhere: ['$text', '$block'],
951
- allowAttributesOf: '$inlineObject',
952
- isInline: true
953
- }
954
- }
955
- ]
956
- };
1
+ /**
2
+ * @license Copyright (c) 2003-2023, 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
+ * @module html-support/schemadefinitions
7
+ */
8
+ // Skipped elements due to HTML deprecation:
9
+ // * noframes (not sure if we should provide support for this element. CKE4 is not supporting frameset and frame,
10
+ // but it will unpack <frameset><noframes>foobar</noframes></frameset> to <noframes>foobar</noframes>, so there
11
+ // may be some content loss. Although using noframes as a standalone element seems invalid)
12
+ // * keygen (this one is also empty)
13
+ // * applet (support is limited mostly to old IE)
14
+ // * basefont (this one is also empty)
15
+ // * isindex (basically no support for modern browsers at all)
16
+ //
17
+ // Skipped elements due to lack empty element support:
18
+ // * hr
19
+ // * area
20
+ // * br
21
+ // * command
22
+ // * map
23
+ // * wbr
24
+ // * colgroup -> col
25
+ //
26
+ // Skipped elements due to complexity:
27
+ // * datalist with option elements used as a data source for input[list] element
28
+ //
29
+ // Skipped elements as they are handled as an object content:
30
+ // * track
31
+ // * source
32
+ // * option
33
+ // * param
34
+ // * optgroup
35
+ //
36
+ // Skipped full page HTML elements:
37
+ // * body
38
+ // * html
39
+ // * title
40
+ // * head
41
+ // * meta
42
+ // * link
43
+ // * etc...
44
+ //
45
+ // Skipped hidden elements:
46
+ // noscript
47
+ export default {
48
+ block: [
49
+ // Existing features.
50
+ {
51
+ model: 'codeBlock',
52
+ view: 'pre'
53
+ },
54
+ {
55
+ model: 'paragraph',
56
+ view: 'p'
57
+ },
58
+ {
59
+ model: 'blockQuote',
60
+ view: 'blockquote'
61
+ },
62
+ {
63
+ model: 'listItem',
64
+ view: 'li'
65
+ },
66
+ {
67
+ model: 'pageBreak',
68
+ view: 'div'
69
+ },
70
+ {
71
+ model: 'rawHtml',
72
+ view: 'div'
73
+ },
74
+ {
75
+ model: 'table',
76
+ view: 'table'
77
+ },
78
+ {
79
+ model: 'tableRow',
80
+ view: 'tr'
81
+ },
82
+ {
83
+ model: 'tableCell',
84
+ view: 'td'
85
+ },
86
+ {
87
+ model: 'tableCell',
88
+ view: 'th'
89
+ },
90
+ {
91
+ model: 'tableColumnGroup',
92
+ view: 'colgroup'
93
+ },
94
+ {
95
+ model: 'tableColumn',
96
+ view: 'col'
97
+ },
98
+ {
99
+ model: 'caption',
100
+ view: 'caption'
101
+ },
102
+ {
103
+ model: 'caption',
104
+ view: 'figcaption'
105
+ },
106
+ {
107
+ model: 'imageBlock',
108
+ view: 'img'
109
+ },
110
+ {
111
+ model: 'imageInline',
112
+ view: 'img'
113
+ },
114
+ // Compatibility features.
115
+ {
116
+ model: 'htmlP',
117
+ view: 'p',
118
+ modelSchema: {
119
+ inheritAllFrom: '$block'
120
+ }
121
+ },
122
+ {
123
+ model: 'htmlBlockquote',
124
+ view: 'blockquote',
125
+ modelSchema: {
126
+ inheritAllFrom: '$container'
127
+ }
128
+ },
129
+ {
130
+ model: 'htmlTable',
131
+ view: 'table',
132
+ modelSchema: {
133
+ allowWhere: '$block',
134
+ isBlock: true
135
+ }
136
+ },
137
+ {
138
+ model: 'htmlTbody',
139
+ view: 'tbody',
140
+ modelSchema: {
141
+ allowIn: 'htmlTable',
142
+ isBlock: false
143
+ }
144
+ },
145
+ {
146
+ model: 'htmlThead',
147
+ view: 'thead',
148
+ modelSchema: {
149
+ allowIn: 'htmlTable',
150
+ isBlock: false
151
+ }
152
+ },
153
+ {
154
+ model: 'htmlTfoot',
155
+ view: 'tfoot',
156
+ modelSchema: {
157
+ allowIn: 'htmlTable',
158
+ isBlock: false
159
+ }
160
+ },
161
+ {
162
+ model: 'htmlCaption',
163
+ view: 'caption',
164
+ modelSchema: {
165
+ allowIn: 'htmlTable',
166
+ allowChildren: '$text',
167
+ isBlock: false
168
+ }
169
+ },
170
+ {
171
+ model: 'htmlColgroup',
172
+ view: 'colgroup',
173
+ modelSchema: {
174
+ allowIn: 'htmlTable',
175
+ allowChildren: 'col',
176
+ isBlock: false
177
+ }
178
+ },
179
+ {
180
+ model: 'htmlCol',
181
+ view: 'col',
182
+ modelSchema: {
183
+ allowIn: 'htmlColgroup',
184
+ isBlock: false
185
+ }
186
+ },
187
+ {
188
+ model: 'htmlTr',
189
+ view: 'tr',
190
+ modelSchema: {
191
+ allowIn: ['htmlTable', 'htmlThead', 'htmlTbody'],
192
+ isLimit: true
193
+ }
194
+ },
195
+ // TODO can also include text.
196
+ {
197
+ model: 'htmlTd',
198
+ view: 'td',
199
+ modelSchema: {
200
+ allowIn: 'htmlTr',
201
+ allowContentOf: '$container',
202
+ isLimit: true,
203
+ isBlock: false
204
+ }
205
+ },
206
+ // TODO can also include text.
207
+ {
208
+ model: 'htmlTh',
209
+ view: 'th',
210
+ modelSchema: {
211
+ allowIn: 'htmlTr',
212
+ allowContentOf: '$container',
213
+ isLimit: true,
214
+ isBlock: false
215
+ }
216
+ },
217
+ // TODO can also include text.
218
+ {
219
+ model: 'htmlFigure',
220
+ view: 'figure',
221
+ modelSchema: {
222
+ inheritAllFrom: '$container',
223
+ isBlock: false
224
+ }
225
+ },
226
+ // TODO can also include other block elements.
227
+ {
228
+ model: 'htmlFigcaption',
229
+ view: 'figcaption',
230
+ modelSchema: {
231
+ allowIn: 'htmlFigure',
232
+ allowChildren: '$text',
233
+ isBlock: false
234
+ }
235
+ },
236
+ // TODO can also include text.
237
+ {
238
+ model: 'htmlAddress',
239
+ view: 'address',
240
+ modelSchema: {
241
+ inheritAllFrom: '$container',
242
+ isBlock: false
243
+ }
244
+ },
245
+ // TODO can also include text.
246
+ {
247
+ model: 'htmlAside',
248
+ view: 'aside',
249
+ modelSchema: {
250
+ inheritAllFrom: '$container',
251
+ isBlock: false
252
+ }
253
+ },
254
+ // TODO can also include text.
255
+ {
256
+ model: 'htmlMain',
257
+ view: 'main',
258
+ modelSchema: {
259
+ inheritAllFrom: '$container',
260
+ isBlock: false
261
+ }
262
+ },
263
+ // TODO can also include text.
264
+ {
265
+ model: 'htmlDetails',
266
+ view: 'details',
267
+ modelSchema: {
268
+ inheritAllFrom: '$container',
269
+ isBlock: false
270
+ }
271
+ },
272
+ {
273
+ model: 'htmlSummary',
274
+ view: 'summary',
275
+ modelSchema: {
276
+ allowChildren: '$text',
277
+ allowIn: 'htmlDetails',
278
+ isBlock: false
279
+ }
280
+ },
281
+ {
282
+ model: 'htmlDiv',
283
+ view: 'div',
284
+ paragraphLikeModel: 'htmlDivParagraph',
285
+ modelSchema: {
286
+ inheritAllFrom: '$container'
287
+ }
288
+ },
289
+ // TODO can also include text.
290
+ {
291
+ model: 'htmlFieldset',
292
+ view: 'fieldset',
293
+ modelSchema: {
294
+ inheritAllFrom: '$container',
295
+ isBlock: false
296
+ }
297
+ },
298
+ // TODO can also include h1-h6.
299
+ {
300
+ model: 'htmlLegend',
301
+ view: 'legend',
302
+ modelSchema: {
303
+ allowIn: 'htmlFieldset',
304
+ allowChildren: '$text'
305
+ }
306
+ },
307
+ // TODO can also include text.
308
+ {
309
+ model: 'htmlHeader',
310
+ view: 'header',
311
+ modelSchema: {
312
+ inheritAllFrom: '$container',
313
+ isBlock: false
314
+ }
315
+ },
316
+ // TODO can also include text.
317
+ {
318
+ model: 'htmlFooter',
319
+ view: 'footer',
320
+ modelSchema: {
321
+ inheritAllFrom: '$container',
322
+ isBlock: false
323
+ }
324
+ },
325
+ // TODO can also include text.
326
+ {
327
+ model: 'htmlForm',
328
+ view: 'form',
329
+ modelSchema: {
330
+ inheritAllFrom: '$container',
331
+ isBlock: true
332
+ }
333
+ },
334
+ {
335
+ model: 'htmlHgroup',
336
+ view: 'hgroup',
337
+ modelSchema: {
338
+ allowChildren: [
339
+ 'htmlH1',
340
+ 'htmlH2',
341
+ 'htmlH3',
342
+ 'htmlH4',
343
+ 'htmlH5',
344
+ 'htmlH6'
345
+ ],
346
+ isBlock: false
347
+ }
348
+ },
349
+ {
350
+ model: 'htmlH1',
351
+ view: 'h1',
352
+ modelSchema: {
353
+ inheritAllFrom: '$block'
354
+ }
355
+ },
356
+ {
357
+ model: 'htmlH2',
358
+ view: 'h2',
359
+ modelSchema: {
360
+ inheritAllFrom: '$block'
361
+ }
362
+ },
363
+ {
364
+ model: 'htmlH3',
365
+ view: 'h3',
366
+ modelSchema: {
367
+ inheritAllFrom: '$block'
368
+ }
369
+ },
370
+ {
371
+ model: 'htmlH4',
372
+ view: 'h4',
373
+ modelSchema: {
374
+ inheritAllFrom: '$block'
375
+ }
376
+ },
377
+ {
378
+ model: 'htmlH5',
379
+ view: 'h5',
380
+ modelSchema: {
381
+ inheritAllFrom: '$block'
382
+ }
383
+ },
384
+ {
385
+ model: 'htmlH6',
386
+ view: 'h6',
387
+ modelSchema: {
388
+ inheritAllFrom: '$block'
389
+ }
390
+ },
391
+ {
392
+ model: '$htmlList',
393
+ modelSchema: {
394
+ allowWhere: '$container',
395
+ allowChildren: ['$htmlList', 'htmlLi'],
396
+ isBlock: false
397
+ }
398
+ },
399
+ {
400
+ model: 'htmlDir',
401
+ view: 'dir',
402
+ modelSchema: {
403
+ inheritAllFrom: '$htmlList'
404
+ }
405
+ },
406
+ {
407
+ model: 'htmlMenu',
408
+ view: 'menu',
409
+ modelSchema: {
410
+ inheritAllFrom: '$htmlList'
411
+ }
412
+ },
413
+ {
414
+ model: 'htmlUl',
415
+ view: 'ul',
416
+ modelSchema: {
417
+ inheritAllFrom: '$htmlList'
418
+ }
419
+ },
420
+ {
421
+ model: 'htmlOl',
422
+ view: 'ol',
423
+ modelSchema: {
424
+ inheritAllFrom: '$htmlList'
425
+ }
426
+ },
427
+ // TODO can also include other block elements.
428
+ {
429
+ model: 'htmlLi',
430
+ view: 'li',
431
+ modelSchema: {
432
+ allowIn: '$htmlList',
433
+ allowChildren: '$text',
434
+ isBlock: false
435
+ }
436
+ },
437
+ {
438
+ model: 'htmlPre',
439
+ view: 'pre',
440
+ modelSchema: {
441
+ inheritAllFrom: '$block'
442
+ }
443
+ },
444
+ {
445
+ model: 'htmlArticle',
446
+ view: 'article',
447
+ modelSchema: {
448
+ inheritAllFrom: '$container',
449
+ isBlock: false
450
+ }
451
+ },
452
+ {
453
+ model: 'htmlSection',
454
+ view: 'section',
455
+ modelSchema: {
456
+ inheritAllFrom: '$container',
457
+ isBlock: false
458
+ }
459
+ },
460
+ // TODO can also include text.
461
+ {
462
+ model: 'htmlNav',
463
+ view: 'nav',
464
+ modelSchema: {
465
+ inheritAllFrom: '$container',
466
+ isBlock: false
467
+ }
468
+ },
469
+ {
470
+ model: 'htmlDivDl',
471
+ view: 'div',
472
+ modelSchema: {
473
+ allowChildren: ['htmlDt', 'htmlDd'],
474
+ allowIn: 'htmlDl'
475
+ }
476
+ },
477
+ {
478
+ model: 'htmlDl',
479
+ view: 'dl',
480
+ modelSchema: {
481
+ allowWhere: '$container',
482
+ allowChildren: ['htmlDt', 'htmlDd', 'htmlDivDl'],
483
+ isBlock: false
484
+ }
485
+ },
486
+ {
487
+ model: 'htmlDt',
488
+ view: 'dt',
489
+ modelSchema: {
490
+ allowChildren: '$block',
491
+ isBlock: false
492
+ }
493
+ },
494
+ {
495
+ model: 'htmlDd',
496
+ view: 'dd',
497
+ modelSchema: {
498
+ allowChildren: '$block',
499
+ isBlock: false
500
+ }
501
+ },
502
+ {
503
+ model: 'htmlCenter',
504
+ view: 'center',
505
+ modelSchema: {
506
+ inheritAllFrom: '$container',
507
+ isBlock: false
508
+ }
509
+ }
510
+ ],
511
+ inline: [
512
+ // Existing features (attribute set on an existing model element).
513
+ {
514
+ model: 'htmlLiAttributes',
515
+ view: 'li',
516
+ appliesToBlock: true,
517
+ coupledAttribute: 'listItemId'
518
+ },
519
+ {
520
+ model: 'htmlOlAttributes',
521
+ view: 'ol',
522
+ appliesToBlock: true,
523
+ coupledAttribute: 'listItemId'
524
+ },
525
+ {
526
+ model: 'htmlUlAttributes',
527
+ view: 'ul',
528
+ appliesToBlock: true,
529
+ coupledAttribute: 'listItemId'
530
+ },
531
+ {
532
+ model: 'htmlFigureAttributes',
533
+ view: 'figure',
534
+ appliesToBlock: 'table'
535
+ },
536
+ {
537
+ model: 'htmlTheadAttributes',
538
+ view: 'thead',
539
+ appliesToBlock: 'table'
540
+ },
541
+ {
542
+ model: 'htmlTbodyAttributes',
543
+ view: 'tbody',
544
+ appliesToBlock: 'table'
545
+ },
546
+ {
547
+ model: 'htmlFigureAttributes',
548
+ view: 'figure',
549
+ appliesToBlock: 'imageBlock'
550
+ },
551
+ // Compatibility features.
552
+ {
553
+ model: 'htmlAcronym',
554
+ view: 'acronym',
555
+ attributeProperties: {
556
+ copyOnEnter: true,
557
+ isFormatting: true
558
+ }
559
+ },
560
+ {
561
+ model: 'htmlTt',
562
+ view: 'tt',
563
+ attributeProperties: {
564
+ copyOnEnter: true,
565
+ isFormatting: true
566
+ }
567
+ },
568
+ {
569
+ model: 'htmlFont',
570
+ view: 'font',
571
+ attributeProperties: {
572
+ copyOnEnter: true,
573
+ isFormatting: true
574
+ }
575
+ },
576
+ {
577
+ model: 'htmlTime',
578
+ view: 'time',
579
+ attributeProperties: {
580
+ copyOnEnter: true,
581
+ isFormatting: true
582
+ }
583
+ },
584
+ {
585
+ model: 'htmlVar',
586
+ view: 'var',
587
+ attributeProperties: {
588
+ copyOnEnter: true,
589
+ isFormatting: true
590
+ }
591
+ },
592
+ {
593
+ model: 'htmlBig',
594
+ view: 'big',
595
+ attributeProperties: {
596
+ copyOnEnter: true,
597
+ isFormatting: true
598
+ }
599
+ },
600
+ {
601
+ model: 'htmlSmall',
602
+ view: 'small',
603
+ attributeProperties: {
604
+ copyOnEnter: true,
605
+ isFormatting: true
606
+ }
607
+ },
608
+ {
609
+ model: 'htmlSamp',
610
+ view: 'samp',
611
+ attributeProperties: {
612
+ copyOnEnter: true,
613
+ isFormatting: true
614
+ }
615
+ },
616
+ {
617
+ model: 'htmlQ',
618
+ view: 'q',
619
+ attributeProperties: {
620
+ copyOnEnter: true,
621
+ isFormatting: true
622
+ }
623
+ },
624
+ {
625
+ model: 'htmlOutput',
626
+ view: 'output',
627
+ attributeProperties: {
628
+ copyOnEnter: true,
629
+ isFormatting: true
630
+ }
631
+ },
632
+ {
633
+ model: 'htmlKbd',
634
+ view: 'kbd',
635
+ attributeProperties: {
636
+ copyOnEnter: true,
637
+ isFormatting: true
638
+ }
639
+ },
640
+ {
641
+ model: 'htmlBdi',
642
+ view: 'bdi',
643
+ attributeProperties: {
644
+ copyOnEnter: true,
645
+ isFormatting: true
646
+ }
647
+ },
648
+ {
649
+ model: 'htmlBdo',
650
+ view: 'bdo',
651
+ attributeProperties: {
652
+ copyOnEnter: true,
653
+ isFormatting: true
654
+ }
655
+ },
656
+ {
657
+ model: 'htmlAbbr',
658
+ view: 'abbr',
659
+ attributeProperties: {
660
+ copyOnEnter: true,
661
+ isFormatting: true
662
+ }
663
+ },
664
+ {
665
+ model: 'htmlA',
666
+ view: 'a',
667
+ priority: 5,
668
+ coupledAttribute: 'linkHref',
669
+ attributeProperties: {
670
+ copyOnEnter: true
671
+ }
672
+ },
673
+ {
674
+ model: 'htmlStrong',
675
+ view: 'strong',
676
+ coupledAttribute: 'bold',
677
+ attributeProperties: {
678
+ copyOnEnter: true,
679
+ isFormatting: true
680
+ }
681
+ },
682
+ {
683
+ model: 'htmlB',
684
+ view: 'b',
685
+ coupledAttribute: 'bold',
686
+ attributeProperties: {
687
+ copyOnEnter: true,
688
+ isFormatting: true
689
+ }
690
+ },
691
+ {
692
+ model: 'htmlI',
693
+ view: 'i',
694
+ coupledAttribute: 'italic',
695
+ attributeProperties: {
696
+ copyOnEnter: true,
697
+ isFormatting: true
698
+ }
699
+ },
700
+ {
701
+ model: 'htmlEm',
702
+ view: 'em',
703
+ coupledAttribute: 'italic',
704
+ attributeProperties: {
705
+ copyOnEnter: true,
706
+ isFormatting: true
707
+ }
708
+ },
709
+ {
710
+ model: 'htmlS',
711
+ view: 's',
712
+ coupledAttribute: 'strikethrough',
713
+ attributeProperties: {
714
+ copyOnEnter: true,
715
+ isFormatting: true
716
+ }
717
+ },
718
+ // TODO According to HTML-spec can behave as div-like element, although CKE4 only handles it as an inline element.
719
+ {
720
+ model: 'htmlDel',
721
+ view: 'del',
722
+ coupledAttribute: 'strikethrough',
723
+ attributeProperties: {
724
+ copyOnEnter: true,
725
+ isFormatting: true
726
+ }
727
+ },
728
+ // TODO According to HTML-spec can behave as div-like element, although CKE4 only handles it as an inline element.
729
+ {
730
+ model: 'htmlIns',
731
+ view: 'ins',
732
+ attributeProperties: {
733
+ copyOnEnter: true,
734
+ isFormatting: true
735
+ }
736
+ },
737
+ {
738
+ model: 'htmlU',
739
+ view: 'u',
740
+ coupledAttribute: 'underline',
741
+ attributeProperties: {
742
+ copyOnEnter: true,
743
+ isFormatting: true
744
+ }
745
+ },
746
+ {
747
+ model: 'htmlSub',
748
+ view: 'sub',
749
+ coupledAttribute: 'subscript',
750
+ attributeProperties: {
751
+ copyOnEnter: true,
752
+ isFormatting: true
753
+ }
754
+ },
755
+ {
756
+ model: 'htmlSup',
757
+ view: 'sup',
758
+ coupledAttribute: 'superscript',
759
+ attributeProperties: {
760
+ copyOnEnter: true,
761
+ isFormatting: true
762
+ }
763
+ },
764
+ {
765
+ model: 'htmlCode',
766
+ view: 'code',
767
+ coupledAttribute: 'code',
768
+ attributeProperties: {
769
+ copyOnEnter: true,
770
+ isFormatting: true
771
+ }
772
+ },
773
+ {
774
+ model: 'htmlMark',
775
+ view: 'mark',
776
+ attributeProperties: {
777
+ copyOnEnter: true,
778
+ isFormatting: true
779
+ }
780
+ },
781
+ {
782
+ model: 'htmlSpan',
783
+ view: 'span',
784
+ attributeProperties: {
785
+ copyOnEnter: true,
786
+ isFormatting: true
787
+ }
788
+ },
789
+ {
790
+ model: 'htmlCite',
791
+ view: 'cite',
792
+ attributeProperties: {
793
+ copyOnEnter: true,
794
+ isFormatting: true
795
+ }
796
+ },
797
+ {
798
+ model: 'htmlLabel',
799
+ view: 'label',
800
+ attributeProperties: {
801
+ copyOnEnter: true,
802
+ isFormatting: true
803
+ }
804
+ },
805
+ {
806
+ model: 'htmlDfn',
807
+ view: 'dfn',
808
+ attributeProperties: {
809
+ copyOnEnter: true,
810
+ isFormatting: true
811
+ }
812
+ },
813
+ // Objects.
814
+ {
815
+ model: 'htmlObject',
816
+ view: 'object',
817
+ isObject: true,
818
+ modelSchema: {
819
+ inheritAllFrom: '$inlineObject'
820
+ }
821
+ },
822
+ {
823
+ model: 'htmlIframe',
824
+ view: 'iframe',
825
+ isObject: true,
826
+ modelSchema: {
827
+ inheritAllFrom: '$inlineObject'
828
+ }
829
+ },
830
+ {
831
+ model: 'htmlInput',
832
+ view: 'input',
833
+ isObject: true,
834
+ modelSchema: {
835
+ inheritAllFrom: '$inlineObject'
836
+ }
837
+ },
838
+ {
839
+ model: 'htmlButton',
840
+ view: 'button',
841
+ isObject: true,
842
+ modelSchema: {
843
+ inheritAllFrom: '$inlineObject'
844
+ }
845
+ },
846
+ {
847
+ model: 'htmlTextarea',
848
+ view: 'textarea',
849
+ isObject: true,
850
+ modelSchema: {
851
+ inheritAllFrom: '$inlineObject'
852
+ }
853
+ },
854
+ {
855
+ model: 'htmlSelect',
856
+ view: 'select',
857
+ isObject: true,
858
+ modelSchema: {
859
+ inheritAllFrom: '$inlineObject'
860
+ }
861
+ },
862
+ {
863
+ model: 'htmlVideo',
864
+ view: 'video',
865
+ isObject: true,
866
+ modelSchema: {
867
+ inheritAllFrom: '$inlineObject'
868
+ }
869
+ },
870
+ {
871
+ model: 'htmlEmbed',
872
+ view: 'embed',
873
+ isObject: true,
874
+ modelSchema: {
875
+ inheritAllFrom: '$inlineObject'
876
+ }
877
+ },
878
+ {
879
+ model: 'htmlOembed',
880
+ view: 'oembed',
881
+ isObject: true,
882
+ modelSchema: {
883
+ inheritAllFrom: '$inlineObject'
884
+ }
885
+ },
886
+ {
887
+ model: 'htmlAudio',
888
+ view: 'audio',
889
+ isObject: true,
890
+ modelSchema: {
891
+ inheritAllFrom: '$inlineObject'
892
+ }
893
+ },
894
+ {
895
+ model: 'htmlImg',
896
+ view: 'img',
897
+ isObject: true,
898
+ modelSchema: {
899
+ inheritAllFrom: '$inlineObject'
900
+ }
901
+ },
902
+ {
903
+ model: 'htmlCanvas',
904
+ view: 'canvas',
905
+ isObject: true,
906
+ modelSchema: {
907
+ inheritAllFrom: '$inlineObject'
908
+ }
909
+ },
910
+ // TODO it could be probably represented as non-object element, although it has graphical representation,
911
+ // so probably makes more sense to keep it as an object.
912
+ {
913
+ model: 'htmlMeter',
914
+ view: 'meter',
915
+ isObject: true,
916
+ modelSchema: {
917
+ inheritAllFrom: '$inlineObject'
918
+ }
919
+ },
920
+ // TODO it could be probably represented as non-object element, although it has graphical representation,
921
+ // so probably makes more sense to keep it as an object.
922
+ {
923
+ model: 'htmlProgress',
924
+ view: 'progress',
925
+ isObject: true,
926
+ modelSchema: {
927
+ inheritAllFrom: '$inlineObject'
928
+ }
929
+ },
930
+ {
931
+ model: 'htmlScript',
932
+ view: 'script',
933
+ modelSchema: {
934
+ allowWhere: ['$text', '$block'],
935
+ isInline: true
936
+ }
937
+ },
938
+ {
939
+ model: 'htmlStyle',
940
+ view: 'style',
941
+ modelSchema: {
942
+ allowWhere: ['$text', '$block'],
943
+ isInline: true
944
+ }
945
+ },
946
+ {
947
+ model: 'htmlCustomElement',
948
+ view: '$customElement',
949
+ modelSchema: {
950
+ allowWhere: ['$text', '$block'],
951
+ allowAttributesOf: '$inlineObject',
952
+ isInline: true
953
+ }
954
+ }
955
+ ]
956
+ };