pro-editor-schema 0.1.15 → 0.1.17

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.
package/dist/index.mjs CHANGED
@@ -5,6 +5,7 @@ var createSchema = ({
5
5
  tag,
6
6
  requiredAttributes,
7
7
  optionalAttributes,
8
+ defaultChildTagName,
8
9
  allowedChildTagNames
9
10
  }) => {
10
11
  return {
@@ -13,6 +14,7 @@ var createSchema = ({
13
14
  tag,
14
15
  requiredAttributes,
15
16
  optionalAttributes,
17
+ defaultChildTagName,
16
18
  allowedChildTagNames: new Set(allowedChildTagNames)
17
19
  };
18
20
  };
@@ -75,6 +77,8 @@ var COMMENT_TAG = "COMMENT";
75
77
  var QUERY_TAG = "QUERY";
76
78
  var CONTENT_TAG = "CONTENT";
77
79
  var REPLY_TAG = "REPLY";
80
+
81
+ // src/schema/shared/allowedAtomsChildren.ts
78
82
  var ATOM_TAGS_ALLOWED_CHILDREN = [
79
83
  { tagName: B_TAG, required: false },
80
84
  { tagName: I_TAG, required: false },
@@ -115,6 +119,8 @@ var FOOTNOTE_LINK_TAG = "FOOTNOTE1";
115
119
  var INLINEEQUATION_TAG = "INLINEEQUATION";
116
120
  var LINK_TAG = "LINK1";
117
121
  var URI_TAG = "URI";
122
+
123
+ // src/schema/shared/allowedInlineChildren.ts
118
124
  var INLINE_ELEMENT_TAGS_ALLOWED_CHILDREN = [
119
125
  { tagName: FOOTNOTE_LINK_TAG, required: false },
120
126
  { tagName: INLINEEQUATION_TAG, required: false },
@@ -321,24 +327,24 @@ var REPLY_SCHEMA = createSchema({
321
327
  });
322
328
 
323
329
  // src/schema/elementSchemas/atoms/index.ts
324
- var ATOM_SCHEMAS = [
325
- B_SCHEMA,
326
- I_SCHEMA,
327
- U_SCHEMA,
328
- SC_SCHEMA,
329
- EMPHASIS_SCHEMA,
330
- STRIKE_SCHEMA,
331
- SUB_SCHEMA,
332
- SUP_SCHEMA,
333
- HIGHLIGHTMARK_SCHEMA,
334
- COMMENT_QUERY_SECTION_SCHEMA,
335
- INSERTION_SCHEMA,
336
- DELETION_SCHEMA,
337
- CONTENT_SCHEMA,
338
- COMMENT_SCHEMA,
339
- QUERY_SCHEMA,
340
- REPLY_SCHEMA
341
- ];
330
+ var ATOM_SCHEMAS = {
331
+ b: B_SCHEMA,
332
+ i: I_SCHEMA,
333
+ u: U_SCHEMA,
334
+ sc: SC_SCHEMA,
335
+ emphasis: EMPHASIS_SCHEMA,
336
+ strike: STRIKE_SCHEMA,
337
+ sub: SUB_SCHEMA,
338
+ sup: SUP_SCHEMA,
339
+ highlightmark: HIGHLIGHTMARK_SCHEMA,
340
+ commentQuerySection: COMMENT_QUERY_SECTION_SCHEMA,
341
+ insertion: INSERTION_SCHEMA,
342
+ deletion: DELETION_SCHEMA,
343
+ content: CONTENT_SCHEMA,
344
+ comment: COMMENT_SCHEMA,
345
+ query: QUERY_SCHEMA,
346
+ reply: REPLY_SCHEMA
347
+ };
342
348
 
343
349
  // src/schema/elementSchemas/elements/elementsTags.ts
344
350
  var PARA_TAG = "PARA";
@@ -349,7 +355,6 @@ var OLINK_TAG = "OLINK";
349
355
  var FIRSTNAME_TAG = "FIRSTNAME";
350
356
  var SURNAME_TAG = "SURNAME";
351
357
  var HONORIFIC_TAG = "HONORIFIC";
352
- var POSTNOMINALS_TAG = "POSTNOMINALS";
353
358
  var ORGNAME_TAG = "ORGNAME";
354
359
  var EMAIL_TAG = "EMAIL";
355
360
  var ORG_TAG = "ORG";
@@ -390,59 +395,6 @@ var TBLFN_TAG = "TBLFN";
390
395
  var TBLSOURCE_TAG = "TBLSOURCE";
391
396
  var TAG_TAG = "TAG";
392
397
  var PUNC_TAG = "PUNC";
393
- var ELEMENT_TAGS = [
394
- PARA_TAG,
395
- TITLE_TAG,
396
- FOOTNOTE_TAG,
397
- FOOTNOTE_NUMBER_TAG,
398
- OLINK_TAG,
399
- FIRSTNAME_TAG,
400
- SURNAME_TAG,
401
- HONORIFIC_TAG,
402
- POSTNOMINALS_TAG,
403
- ORGNAME_TAG,
404
- EMAIL_TAG,
405
- ORG_TAG,
406
- DEGREES_TAG,
407
- DIALOGUE_TAG,
408
- LINE_TAG,
409
- SPEAKER_TAG,
410
- EQUATION_TAG,
411
- FIGURE_TAG,
412
- IMG_TAG,
413
- ALTTEXT_TAG,
414
- IMAGEOBJECT_TAG,
415
- MEDIAOBJECT_TAG,
416
- LABEL_TAG,
417
- CAPTION_TAG,
418
- FIGSOURCE_TAG,
419
- FIGNOTE_TAG,
420
- INFORMALFIGURE_TAG,
421
- KEYWORDSET_TAG,
422
- KEYWORD_TAG,
423
- LI_TAG,
424
- OL_TAG,
425
- UL_TAG,
426
- TOKEN_TAG,
427
- LRH_TAG,
428
- RRH_TAG,
429
- SOURCE_TAG,
430
- SUBTITLE_TAG,
431
- TABLE_TAG,
432
- TGROUP_TAG,
433
- HTML_TABLE_TAG,
434
- THEAD_TAG,
435
- TBODY_TAG,
436
- TR_TAG,
437
- TD_TAG,
438
- TP_TAG,
439
- TBLFN_TAG,
440
- TBLSOURCE_TAG,
441
- TAG_TAG,
442
- PUNC_TAG
443
- ];
444
-
445
- // src/schema/elementSchemas/groupElements/groupElementsTags.ts
446
398
  var SECTION_TAG = "SECTION1";
447
399
  var ABSTRACT_TAG = "ABSTRACT1";
448
400
  var AFFILIATION_TAG = "AFFILIATION";
@@ -456,26 +408,11 @@ var CHAPTER_TAG = "CHAPTER";
456
408
  var EPIGRAPH_TAG = "EPIGRAPH";
457
409
  var INFO_TAG = "INFO1";
458
410
  var POEM_TAG = "POEM";
459
- var GROUP_ELEMENTS_TAGS = [
460
- SECTION_TAG,
461
- ABSTRACT_TAG,
462
- AFFILIATION_TAG,
463
- APPENDIX_TAG,
464
- AUTHORGROUP_TAG,
465
- AUTHOR_TAG,
466
- PERSONNAME_TAG,
467
- BLOCKQUOTE_TAG,
468
- SIDEBAR_TAG,
469
- CHAPTER_TAG,
470
- EPIGRAPH_TAG,
471
- INFO_TAG,
472
- POEM_TAG
473
- ];
474
411
 
475
412
  // src/schema/elementSchemas/elements/authors/authorgroup.ts
476
413
  var AUTHORGROUP_SCHEMA = createSchema({
477
414
  code: "authorgroup",
478
- kind: "group",
415
+ kind: "element",
479
416
  tag: AUTHORGROUP_TAG,
480
417
  requiredAttributes: [...ID_ATTRS],
481
418
  optionalAttributes: [],
@@ -488,7 +425,7 @@ var AUTHORGROUP_SCHEMA = createSchema({
488
425
  // src/schema/elementSchemas/elements/authors/author.ts
489
426
  var AUTHOR_SCHEMA = createSchema({
490
427
  code: "author",
491
- kind: "group",
428
+ kind: "element",
492
429
  tag: AUTHOR_TAG,
493
430
  requiredAttributes: [...ID_ATTRS],
494
431
  optionalAttributes: [],
@@ -515,7 +452,7 @@ var OLINK_SCHEMA = createSchema({
515
452
  // src/schema/elementSchemas/elements/authors/personname.ts
516
453
  var PERSONNAME_SCHEMA = createSchema({
517
454
  code: "personname",
518
- kind: "group",
455
+ kind: "element",
519
456
  tag: PERSONNAME_TAG,
520
457
  requiredAttributes: [...ID_ATTRS],
521
458
  optionalAttributes: [],
@@ -589,7 +526,7 @@ var ORG_SCHEMA = createSchema({
589
526
  // src/schema/elementSchemas/elements/authors/affiliation.ts
590
527
  var AFFILIATION_SCHEMA = createSchema({
591
528
  code: "affiliation",
592
- kind: "group",
529
+ kind: "element",
593
530
  tag: AFFILIATION_TAG,
594
531
  requiredAttributes: [...ID_ATTRS],
595
532
  optionalAttributes: [],
@@ -641,7 +578,7 @@ var SPEAKER_SCHEMA = createSchema({
641
578
  // src/schema/elementSchemas/elements/dialogue/dialogue.ts
642
579
  var DIALOGUE_SCHEMA = createSchema({
643
580
  code: "dialogue",
644
- kind: "group",
581
+ kind: "element",
645
582
  tag: DIALOGUE_TAG,
646
583
  requiredAttributes: [...ID_ATTRS],
647
584
  optionalAttributes: [
@@ -692,7 +629,7 @@ var IMG_SCHEMA = createSchema({
692
629
  // src/schema/elementSchemas/elements/figure/alttext.ts
693
630
  var ALTTEXT_SCHEMA = createSchema({
694
631
  code: "alttext",
695
- kind: "group",
632
+ kind: "element",
696
633
  tag: ALTTEXT_TAG,
697
634
  requiredAttributes: [],
698
635
  optionalAttributes: [],
@@ -702,7 +639,7 @@ var ALTTEXT_SCHEMA = createSchema({
702
639
  // src/schema/elementSchemas/elements/figure/imageobject.ts
703
640
  var IMAGEOBJECT_SCHEMA = createSchema({
704
641
  code: "imageobject",
705
- kind: "group",
642
+ kind: "element",
706
643
  tag: IMAGEOBJECT_TAG,
707
644
  requiredAttributes: [...ID_ATTRS],
708
645
  optionalAttributes: [],
@@ -715,7 +652,7 @@ var IMAGEOBJECT_SCHEMA = createSchema({
715
652
  // src/schema/elementSchemas/elements/figure/mediaobject.ts
716
653
  var MEDIAOBJECT_SCHEMA = createSchema({
717
654
  code: "mediaobject",
718
- kind: "group",
655
+ kind: "element",
719
656
  tag: MEDIAOBJECT_TAG,
720
657
  requiredAttributes: [...ID_ATTRS],
721
658
  optionalAttributes: [...TRACK_CHANGES_ATTRS],
@@ -725,7 +662,7 @@ var MEDIAOBJECT_SCHEMA = createSchema({
725
662
  // src/schema/elementSchemas/elements/figure/caption1.ts
726
663
  var CAPTION_SCHEMA = createSchema({
727
664
  code: "caption1",
728
- kind: "group",
665
+ kind: "element",
729
666
  tag: CAPTION_TAG,
730
667
  requiredAttributes: [...ID_ATTRS],
731
668
  optionalAttributes: [],
@@ -761,7 +698,7 @@ var FIGNOTE_SCHEMA = createSchema({
761
698
  // src/schema/elementSchemas/elements/figure/figure.ts
762
699
  var FIGURE_SCHEMA = createSchema({
763
700
  code: "figure1",
764
- kind: "group",
701
+ kind: "element",
765
702
  tag: FIGURE_TAG,
766
703
  requiredAttributes: [...ID_ATTRS, "xmlid"],
767
704
  optionalAttributes: [
@@ -827,7 +764,7 @@ var INFORMALFIGURE_SCHEMA = createSchema({
827
764
  // src/schema/elementSchemas/elements/keywords/keywordset.ts
828
765
  var KEYWORDSET_SCHEMA = createSchema({
829
766
  code: "keywordset",
830
- kind: "group",
767
+ kind: "element",
831
768
  tag: KEYWORDSET_TAG,
832
769
  requiredAttributes: [
833
770
  ...ID_ATTRS,
@@ -865,63 +802,6 @@ var PUNC_SCHEMA = createSchema({
865
802
  allowedChildTagNames: [...ATOM_TAGS_ALLOWED_CHILDREN]
866
803
  });
867
804
 
868
- // src/schema/elementSchemas/inlineElements/footnoteLink.ts
869
- var FOOTNOTE_LINK_SCHEMA = createSchema({
870
- code: "footnote1",
871
- kind: "inline",
872
- tag: FOOTNOTE_LINK_TAG,
873
- requiredAttributes: [...ID_ATTRS],
874
- optionalAttributes: ["linkend"],
875
- allowedChildTagNames: [{ tagName: SUP_TAG, required: true }]
876
- });
877
-
878
- // src/schema/elementSchemas/inlineElements/inlineequation.ts
879
- var INLINEEQUATION_SCHEMA = createSchema({
880
- code: "inlineequation",
881
- kind: "inline",
882
- tag: INLINEEQUATION_TAG,
883
- requiredAttributes: [...ID_ATTRS],
884
- optionalAttributes: ["linkend"],
885
- allowedChildTagNames: []
886
- });
887
-
888
- // src/schema/elementSchemas/inlineElements/link.ts
889
- var LINK_SCHEMA = createSchema({
890
- code: "link",
891
- kind: "inline",
892
- tag: LINK_TAG,
893
- requiredAttributes: [
894
- ...ID_ATTRS,
895
- "linkend",
896
- "data-target-id",
897
- {
898
- name: "role",
899
- values: ["table", "figure", "equation", "footnote", "bibr"],
900
- defaultValue: ""
901
- }
902
- ],
903
- optionalAttributes: [],
904
- allowedChildTagNames: [...ATOM_TAGS_ALLOWED_CHILDREN]
905
- });
906
-
907
- // src/schema/elementSchemas/inlineElements/uri.ts
908
- var URI_SCHEMA = createSchema({
909
- code: "uri",
910
- kind: "inline",
911
- tag: URI_TAG,
912
- requiredAttributes: [...ID_ATTRS],
913
- optionalAttributes: ["linkend"],
914
- allowedChildTagNames: [...ATOM_TAGS_ALLOWED_CHILDREN]
915
- });
916
-
917
- // src/schema/elementSchemas/inlineElements/index.ts
918
- var INLINE_ELEMENT_SCHEMAS = [
919
- URI_SCHEMA,
920
- FOOTNOTE_LINK_SCHEMA,
921
- LINK_SCHEMA,
922
- INLINEEQUATION_SCHEMA
923
- ];
924
-
925
805
  // src/schema/elementSchemas/elements/label.ts
926
806
  var LABEL_SCHEMA = createSchema({
927
807
  code: "label1",
@@ -987,7 +867,7 @@ var LI_SCHEMA = createSchema({
987
867
  // src/schema/elementSchemas/elements/list/ol.ts
988
868
  var OL_SCHEMA = createSchema({
989
869
  code: "ol",
990
- kind: "group",
870
+ kind: "element",
991
871
  tag: OL_TAG,
992
872
  requiredAttributes: [...ID_ATTRS],
993
873
  optionalAttributes: [
@@ -1024,7 +904,7 @@ var OL_SCHEMA = createSchema({
1024
904
  // src/schema/elementSchemas/elements/list/ul.ts
1025
905
  var UL_SCHEMA = createSchema({
1026
906
  code: "ul",
1027
- kind: "group",
907
+ kind: "element",
1028
908
  tag: UL_TAG,
1029
909
  requiredAttributes: [...ID_ATTRS],
1030
910
  optionalAttributes: [
@@ -1167,7 +1047,7 @@ var TP_SCHEMA = createSchema({
1167
1047
  // src/schema/elementSchemas/elements/table/td.ts
1168
1048
  var TD_SCHEMA = createSchema({
1169
1049
  code: "td",
1170
- kind: "group",
1050
+ kind: "element",
1171
1051
  tag: TD_TAG,
1172
1052
  requiredAttributes: [...ID_ATTRS],
1173
1053
  optionalAttributes: [...TRACK_CHANGES_ATTRS, "data-cell-width"],
@@ -1181,7 +1061,7 @@ var TD_SCHEMA = createSchema({
1181
1061
  // src/schema/elementSchemas/elements/table/tr.ts
1182
1062
  var TR_SCHEMA = createSchema({
1183
1063
  code: "tr",
1184
- kind: "group",
1064
+ kind: "element",
1185
1065
  tag: TR_TAG,
1186
1066
  requiredAttributes: [],
1187
1067
  optionalAttributes: [...LAYOUT_ATTRIBUTES, ...ID_ATTRS, "width"],
@@ -1201,7 +1081,7 @@ var THEAD_SCHEMA = createSchema({
1201
1081
  // src/schema/elementSchemas/elements/table/tbody.ts
1202
1082
  var TBODY_SCHEMA = createSchema({
1203
1083
  code: "tbody",
1204
- kind: "group",
1084
+ kind: "element",
1205
1085
  tag: TBODY_TAG,
1206
1086
  requiredAttributes: [],
1207
1087
  optionalAttributes: [...ID_ATTRS],
@@ -1211,7 +1091,7 @@ var TBODY_SCHEMA = createSchema({
1211
1091
  // src/schema/elementSchemas/elements/table/htmlTable.ts
1212
1092
  var HTML_TABLE_SCHEMA = createSchema({
1213
1093
  code: "table",
1214
- kind: "group",
1094
+ kind: "element",
1215
1095
  tag: HTML_TABLE_TAG,
1216
1096
  requiredAttributes: [],
1217
1097
  optionalAttributes: [...ID_ATTRS],
@@ -1224,7 +1104,7 @@ var HTML_TABLE_SCHEMA = createSchema({
1224
1104
  // src/schema/elementSchemas/elements/table/tgroup.ts
1225
1105
  var TGROUP_SCHEMA = createSchema({
1226
1106
  code: "tgroup",
1227
- kind: "group",
1107
+ kind: "element",
1228
1108
  tag: TGROUP_TAG,
1229
1109
  requiredAttributes: [...ID_ATTRS, "cols"],
1230
1110
  optionalAttributes: [],
@@ -1257,7 +1137,7 @@ var TBLSOURCE_SCHEMA = createSchema({
1257
1137
  // src/schema/elementSchemas/elements/table/table1.ts
1258
1138
  var TABLE_SCHEMA = createSchema({
1259
1139
  code: "table1",
1260
- kind: "group",
1140
+ kind: "element",
1261
1141
  tag: TABLE_TAG,
1262
1142
  requiredAttributes: [...ID_ATTRS, "xmlid", "role"],
1263
1143
  optionalAttributes: [
@@ -1301,62 +1181,10 @@ var TITLE_SCHEMA = createSchema({
1301
1181
  allowedChildTagNames: [...ATOM_TAGS_ALLOWED_CHILDREN]
1302
1182
  });
1303
1183
 
1304
- // src/schema/elementSchemas/elements/index.ts
1305
- var ELEMENT_SCHEMAS = [
1306
- PARA_SCHEMA,
1307
- TITLE_SCHEMA,
1308
- FOOTNOTE_SCHEMA,
1309
- FOOTNOTE_NUMBER_SCHEMA,
1310
- OLINK_SCHEMA,
1311
- FIRSTNAME_SCHEMA,
1312
- SURNAME_SCHEMA,
1313
- HONORIFIC_SCHEMA,
1314
- ORGNAME_SCHEMA,
1315
- EMAIL_SCHEMA,
1316
- ORG_SCHEMA,
1317
- DEGREES_SCHEMA,
1318
- DIALOGUE_SCHEMA,
1319
- LINE_SCHEMA,
1320
- SPEAKER_SCHEMA,
1321
- EQUATION_SCHEMA,
1322
- IMG_SCHEMA,
1323
- ALTTEXT_SCHEMA,
1324
- IMAGEOBJECT_SCHEMA,
1325
- MEDIAOBJECT_SCHEMA,
1326
- CAPTION_SCHEMA,
1327
- FIGSOURCE_SCHEMA,
1328
- FIGNOTE_SCHEMA,
1329
- FIGURE_SCHEMA,
1330
- INFORMALFIGURE_SCHEMA,
1331
- KEYWORDSET_SCHEMA,
1332
- KEYWORD_SCHEMA,
1333
- PUNC_SCHEMA,
1334
- LABEL_SCHEMA,
1335
- LI_SCHEMA,
1336
- OL_SCHEMA,
1337
- UL_SCHEMA,
1338
- TOKEN_SCHEMA,
1339
- TAG_SCHEMA,
1340
- LRH_SCHEMA,
1341
- RRH_SCHEMA,
1342
- SOURCE_SCHEMA,
1343
- SUBTITLE_SCHEMA,
1344
- TABLE_SCHEMA,
1345
- TGROUP_SCHEMA,
1346
- HTML_TABLE_SCHEMA,
1347
- THEAD_SCHEMA,
1348
- TBODY_SCHEMA,
1349
- TR_SCHEMA,
1350
- TD_SCHEMA,
1351
- TP_SCHEMA,
1352
- TBLFN_SCHEMA,
1353
- TBLSOURCE_SCHEMA
1354
- ];
1355
-
1356
- // src/schema/elementSchemas/groupElements/abstract.ts
1184
+ // src/schema/elementSchemas/elements/abstract.ts
1357
1185
  var ABSTRACT_SCHEMA = createSchema({
1358
1186
  code: "abstract1",
1359
- kind: "group",
1187
+ kind: "element",
1360
1188
  tag: ABSTRACT_TAG,
1361
1189
  requiredAttributes: [
1362
1190
  ...ID_ATTRS,
@@ -1374,6 +1202,7 @@ var ABSTRACT_SCHEMA = createSchema({
1374
1202
  defaultValue: "blurb"
1375
1203
  }
1376
1204
  ],
1205
+ defaultChildTagName: PARA_TAG,
1377
1206
  allowedChildTagNames: [
1378
1207
  { tagName: PARA_TAG, required: false },
1379
1208
  { tagName: TITLE_TAG, required: false },
@@ -1382,13 +1211,14 @@ var ABSTRACT_SCHEMA = createSchema({
1382
1211
  ]
1383
1212
  });
1384
1213
 
1385
- // src/schema/elementSchemas/groupElements/appendix.ts
1214
+ // src/schema/elementSchemas/elements/appendix.ts
1386
1215
  var APPENDIX_SCHEMA = createSchema({
1387
1216
  code: "appendix",
1388
- kind: "group",
1217
+ kind: "element",
1389
1218
  tag: APPENDIX_TAG,
1390
1219
  requiredAttributes: [...ID_ATTRS, "id", "xmlid"],
1391
1220
  optionalAttributes: [...TRACK_CHANGES_ATTRS],
1221
+ defaultChildTagName: PARA_TAG,
1392
1222
  allowedChildTagNames: [
1393
1223
  { tagName: PARA_TAG, required: false },
1394
1224
  { tagName: TITLE_TAG, required: false },
@@ -1396,10 +1226,10 @@ var APPENDIX_SCHEMA = createSchema({
1396
1226
  ]
1397
1227
  });
1398
1228
 
1399
- // src/schema/elementSchemas/groupElements/blockquote.ts
1229
+ // src/schema/elementSchemas/elements/blockquote.ts
1400
1230
  var BLOCKQUOTE_SCHEMA = createSchema({
1401
1231
  code: "blockquote",
1402
- kind: "group",
1232
+ kind: "element",
1403
1233
  tag: BLOCKQUOTE_TAG,
1404
1234
  requiredAttributes: [...ID_ATTRS],
1405
1235
  optionalAttributes: [
@@ -1413,6 +1243,7 @@ var BLOCKQUOTE_SCHEMA = createSchema({
1413
1243
  defaultValue: "add-element"
1414
1244
  }
1415
1245
  ],
1246
+ defaultChildTagName: PARA_TAG,
1416
1247
  allowedChildTagNames: [
1417
1248
  { tagName: PARA_TAG, required: false },
1418
1249
  { tagName: UL_TAG, required: false },
@@ -1422,10 +1253,10 @@ var BLOCKQUOTE_SCHEMA = createSchema({
1422
1253
  ]
1423
1254
  });
1424
1255
 
1425
- // src/schema/elementSchemas/groupElements/box.ts
1256
+ // src/schema/elementSchemas/elements/box.ts
1426
1257
  var BOX_SCHEMA = createSchema({
1427
1258
  code: "sidebar",
1428
- kind: "group",
1259
+ kind: "element",
1429
1260
  tag: SIDEBAR_TAG,
1430
1261
  requiredAttributes: [
1431
1262
  ...ID_ATTRS,
@@ -1444,16 +1275,17 @@ var BOX_SCHEMA = createSchema({
1444
1275
  defaultValue: "add-element"
1445
1276
  }
1446
1277
  ],
1278
+ defaultChildTagName: PARA_TAG,
1447
1279
  allowedChildTagNames: [
1448
1280
  { tagName: PARA_TAG, required: false },
1449
1281
  { tagName: TITLE_TAG, required: false }
1450
1282
  ]
1451
1283
  });
1452
1284
 
1453
- // src/schema/elementSchemas/groupElements/chapter.ts
1285
+ // src/schema/elementSchemas/elements/chapter.ts
1454
1286
  var CHAPTER_SCHEMA = createSchema({
1455
1287
  code: "chapter",
1456
- kind: "group",
1288
+ kind: "element",
1457
1289
  tag: CHAPTER_TAG,
1458
1290
  requiredAttributes: [...ID_ATTRS, "xmlid"],
1459
1291
  optionalAttributes: [
@@ -1463,6 +1295,7 @@ var CHAPTER_SCHEMA = createSchema({
1463
1295
  "data-paragraph-numbering-elements",
1464
1296
  "data-paragraph-numbering-chapters"
1465
1297
  ],
1298
+ defaultChildTagName: PARA_TAG,
1466
1299
  allowedChildTagNames: [
1467
1300
  { tagName: LRH_TAG, required: false },
1468
1301
  { tagName: RRH_TAG, required: false },
@@ -1484,10 +1317,10 @@ var CHAPTER_SCHEMA = createSchema({
1484
1317
  ]
1485
1318
  });
1486
1319
 
1487
- // src/schema/elementSchemas/groupElements/epigraph.ts
1320
+ // src/schema/elementSchemas/elements/epigraph.ts
1488
1321
  var EPIGRAPH_SCHEMA = createSchema({
1489
1322
  code: "epigraph",
1490
- kind: "group",
1323
+ kind: "element",
1491
1324
  tag: EPIGRAPH_TAG,
1492
1325
  requiredAttributes: [...ID_ATTRS],
1493
1326
  optionalAttributes: [
@@ -1499,13 +1332,14 @@ var EPIGRAPH_SCHEMA = createSchema({
1499
1332
  defaultValue: "add-element"
1500
1333
  }
1501
1334
  ],
1335
+ defaultChildTagName: PARA_TAG,
1502
1336
  allowedChildTagNames: [{ tagName: PARA_TAG, required: false }]
1503
1337
  });
1504
1338
 
1505
- // src/schema/elementSchemas/groupElements/footnoteSection.ts
1339
+ // src/schema/elementSchemas/elements/footnoteSection.ts
1506
1340
  var FOOTNOTE_SECTION_SCHEMA = createSchema({
1507
1341
  code: "footnoteSection",
1508
- kind: "group",
1342
+ kind: "element",
1509
1343
  tag: SECTION_TAG,
1510
1344
  requiredAttributes: [
1511
1345
  ...ID_ATTRS,
@@ -1516,16 +1350,17 @@ var FOOTNOTE_SECTION_SCHEMA = createSchema({
1516
1350
  }
1517
1351
  ],
1518
1352
  optionalAttributes: [...TRACK_CHANGES_ATTRS],
1353
+ defaultChildTagName: PARA_TAG,
1519
1354
  allowedChildTagNames: [
1520
1355
  { tagName: FOOTNOTE_TAG, required: true },
1521
1356
  { tagName: TITLE_TAG, required: true }
1522
1357
  ]
1523
1358
  });
1524
1359
 
1525
- // src/schema/elementSchemas/groupElements/heading.ts
1360
+ // src/schema/elementSchemas/elements/heading.ts
1526
1361
  var HEADING_SCHEMA = createSchema({
1527
1362
  code: "heading",
1528
- kind: "group",
1363
+ kind: "element",
1529
1364
  tag: SECTION_TAG,
1530
1365
  requiredAttributes: [
1531
1366
  ...ID_ATTRS,
@@ -1537,6 +1372,7 @@ var HEADING_SCHEMA = createSchema({
1537
1372
  }
1538
1373
  ],
1539
1374
  optionalAttributes: [...TRACK_CHANGES_ATTRS],
1375
+ defaultChildTagName: PARA_TAG,
1540
1376
  allowedChildTagNames: [
1541
1377
  { tagName: TITLE_TAG, required: false },
1542
1378
  { tagName: LABEL_TAG, required: false },
@@ -1557,64 +1393,168 @@ var HEADING_SCHEMA = createSchema({
1557
1393
  ]
1558
1394
  });
1559
1395
 
1560
- // src/schema/elementSchemas/groupElements/info.ts
1396
+ // src/schema/elementSchemas/elements/info.ts
1561
1397
  var INFO_SCHEMA = createSchema({
1562
1398
  code: "info1",
1563
- kind: "group",
1399
+ kind: "element",
1564
1400
  tag: INFO_TAG,
1565
1401
  requiredAttributes: [...ID_ATTRS],
1566
1402
  optionalAttributes: [],
1403
+ defaultChildTagName: SUBTITLE_TAG,
1567
1404
  allowedChildTagNames: [
1568
- { tagName: AUTHORGROUP_TAG, required: false },
1569
1405
  { tagName: LABEL_TAG, required: true },
1570
1406
  { tagName: TITLE_TAG, required: true },
1571
1407
  { tagName: SUBTITLE_TAG, required: false },
1572
1408
  { tagName: ABSTRACT_TAG, required: false },
1573
- { tagName: KEYWORDSET_TAG, required: false }
1409
+ { tagName: KEYWORDSET_TAG, required: false },
1410
+ { tagName: AUTHORGROUP_TAG, required: false }
1574
1411
  ]
1575
1412
  });
1576
1413
 
1577
- // src/schema/elementSchemas/groupElements/poem.ts
1414
+ // src/schema/elementSchemas/elements/poem.ts
1578
1415
  var POEM_SCHEMA = createSchema({
1579
1416
  code: "poem",
1580
- kind: "group",
1417
+ kind: "element",
1581
1418
  tag: POEM_TAG,
1582
1419
  requiredAttributes: [...ID_ATTRS],
1583
1420
  optionalAttributes: [...TRACK_CHANGES_ATTRS, "role"],
1421
+ defaultChildTagName: LINE_TAG,
1584
1422
  allowedChildTagNames: [
1585
1423
  { tagName: LINE_TAG, required: false },
1586
1424
  { tagName: SOURCE_TAG, required: false }
1587
1425
  ]
1588
1426
  });
1589
1427
 
1590
- // src/schema/elementSchemas/groupElements/index.ts
1591
- var GROUP_ELEMENT_SCHEMAS = [
1592
- HEADING_SCHEMA,
1593
- FOOTNOTE_SECTION_SCHEMA,
1594
- CHAPTER_SCHEMA,
1595
- INFO_SCHEMA,
1596
- ABSTRACT_SCHEMA,
1597
- EPIGRAPH_SCHEMA,
1598
- POEM_SCHEMA,
1599
- BLOCKQUOTE_SCHEMA,
1600
- BOX_SCHEMA,
1601
- APPENDIX_SCHEMA,
1602
- AUTHORGROUP_SCHEMA,
1603
- AUTHOR_SCHEMA,
1604
- PERSONNAME_SCHEMA,
1605
- AFFILIATION_SCHEMA
1606
- ];
1428
+ // src/schema/elementSchemas/elements/index.ts
1429
+ var ELEMENT_SCHEMAS = {
1430
+ para: PARA_SCHEMA,
1431
+ title1: TITLE_SCHEMA,
1432
+ footnote: FOOTNOTE_SCHEMA,
1433
+ footnoteno: FOOTNOTE_NUMBER_SCHEMA,
1434
+ olink: OLINK_SCHEMA,
1435
+ firstname: FIRSTNAME_SCHEMA,
1436
+ surname: SURNAME_SCHEMA,
1437
+ honorific: HONORIFIC_SCHEMA,
1438
+ orgname: ORGNAME_SCHEMA,
1439
+ email: EMAIL_SCHEMA,
1440
+ org: ORG_SCHEMA,
1441
+ degrees: DEGREES_SCHEMA,
1442
+ dialogue: DIALOGUE_SCHEMA,
1443
+ line: LINE_SCHEMA,
1444
+ speaker: SPEAKER_SCHEMA,
1445
+ equation: EQUATION_SCHEMA,
1446
+ img: IMG_SCHEMA,
1447
+ alttext: ALTTEXT_SCHEMA,
1448
+ imageobject: IMAGEOBJECT_SCHEMA,
1449
+ mediaobject: MEDIAOBJECT_SCHEMA,
1450
+ caption1: CAPTION_SCHEMA,
1451
+ figsource: FIGSOURCE_SCHEMA,
1452
+ fignote: FIGNOTE_SCHEMA,
1453
+ figure1: FIGURE_SCHEMA,
1454
+ informalfigure: INFORMALFIGURE_SCHEMA,
1455
+ keywordset: KEYWORDSET_SCHEMA,
1456
+ keyword: KEYWORD_SCHEMA,
1457
+ punc: PUNC_SCHEMA,
1458
+ label1: LABEL_SCHEMA,
1459
+ li: LI_SCHEMA,
1460
+ ol: OL_SCHEMA,
1461
+ ul: UL_SCHEMA,
1462
+ token: TOKEN_SCHEMA,
1463
+ tag: TAG_SCHEMA,
1464
+ lrh: LRH_SCHEMA,
1465
+ rrh: RRH_SCHEMA,
1466
+ source1: SOURCE_SCHEMA,
1467
+ subtitle1: SUBTITLE_SCHEMA,
1468
+ table1: TABLE_SCHEMA,
1469
+ tgroup: TGROUP_SCHEMA,
1470
+ table: HTML_TABLE_SCHEMA,
1471
+ thead: THEAD_SCHEMA,
1472
+ tbody: TBODY_SCHEMA,
1473
+ tr: TR_SCHEMA,
1474
+ td: TD_SCHEMA,
1475
+ tp: TP_SCHEMA,
1476
+ tblfn: TBLFN_SCHEMA,
1477
+ tblsource: TBLSOURCE_SCHEMA,
1478
+ heading: HEADING_SCHEMA,
1479
+ footnoteSection: FOOTNOTE_SECTION_SCHEMA,
1480
+ chapter: CHAPTER_SCHEMA,
1481
+ info1: INFO_SCHEMA,
1482
+ abstract1: ABSTRACT_SCHEMA,
1483
+ epigraph: EPIGRAPH_SCHEMA,
1484
+ poem: POEM_SCHEMA,
1485
+ blockquote: BLOCKQUOTE_SCHEMA,
1486
+ sidebar: BOX_SCHEMA,
1487
+ appendix: APPENDIX_SCHEMA,
1488
+ authorgroup: AUTHORGROUP_SCHEMA,
1489
+ author: AUTHOR_SCHEMA,
1490
+ personname: PERSONNAME_SCHEMA,
1491
+ affiliation: AFFILIATION_SCHEMA
1492
+ };
1493
+
1494
+ // src/schema/elementSchemas/inlineElements/footnoteLink.ts
1495
+ var FOOTNOTE_LINK_SCHEMA = createSchema({
1496
+ code: "footnote1",
1497
+ kind: "inline",
1498
+ tag: FOOTNOTE_LINK_TAG,
1499
+ requiredAttributes: [...ID_ATTRS],
1500
+ optionalAttributes: ["linkend"],
1501
+ defaultChildTagName: SUP_TAG,
1502
+ allowedChildTagNames: [{ tagName: SUP_TAG, required: true }]
1503
+ });
1504
+
1505
+ // src/schema/elementSchemas/inlineElements/inlineequation.ts
1506
+ var INLINEEQUATION_SCHEMA = createSchema({
1507
+ code: "inlineequation",
1508
+ kind: "inline",
1509
+ tag: INLINEEQUATION_TAG,
1510
+ requiredAttributes: [...ID_ATTRS],
1511
+ optionalAttributes: ["linkend"],
1512
+ allowedChildTagNames: []
1513
+ });
1514
+
1515
+ // src/schema/elementSchemas/inlineElements/link.ts
1516
+ var LINK_SCHEMA = createSchema({
1517
+ code: "link",
1518
+ kind: "inline",
1519
+ tag: LINK_TAG,
1520
+ requiredAttributes: [
1521
+ ...ID_ATTRS,
1522
+ "linkend",
1523
+ "data-target-id",
1524
+ {
1525
+ name: "role",
1526
+ values: ["table", "figure", "equation", "footnote", "bibr"],
1527
+ defaultValue: ""
1528
+ }
1529
+ ],
1530
+ optionalAttributes: [],
1531
+ allowedChildTagNames: [...ATOM_TAGS_ALLOWED_CHILDREN]
1532
+ });
1533
+
1534
+ // src/schema/elementSchemas/inlineElements/uri.ts
1535
+ var URI_SCHEMA = createSchema({
1536
+ code: "uri",
1537
+ kind: "inline",
1538
+ tag: URI_TAG,
1539
+ requiredAttributes: [...ID_ATTRS],
1540
+ optionalAttributes: ["linkend"],
1541
+ allowedChildTagNames: [...ATOM_TAGS_ALLOWED_CHILDREN]
1542
+ });
1543
+
1544
+ // src/schema/elementSchemas/inlineElements/index.ts
1545
+ var INLINE_ELEMENT_SCHEMAS = {
1546
+ uri: URI_SCHEMA,
1547
+ footnote1: FOOTNOTE_LINK_SCHEMA,
1548
+ link: LINK_SCHEMA,
1549
+ inlineequation: INLINEEQUATION_SCHEMA
1550
+ };
1607
1551
 
1608
1552
  // src/schema/schemas.ts
1609
- var SCHEMAS = [
1553
+ var SCHEMAS = {
1610
1554
  ...ATOM_SCHEMAS,
1611
1555
  ...ELEMENT_SCHEMAS,
1612
- ...GROUP_ELEMENT_SCHEMAS,
1613
1556
  ...INLINE_ELEMENT_SCHEMAS
1614
- ];
1615
- var SCHEMA_MAP = new Map(
1616
- SCHEMAS.map((schema) => [schema.code, schema])
1617
- );
1557
+ };
1618
1558
 
1619
1559
  // src/schema/shared/ignoredElements.ts
1620
1560
  var IGNORED_ELEMENT_SELECTORS = [
@@ -1641,14 +1581,14 @@ var IGNORED_ATTRIBUTES = [
1641
1581
  "dir",
1642
1582
  "hidden"
1643
1583
  ];
1644
- var IGNORED_ATTRIBUTES_STARTS_WITH = ["er-"];
1584
+ var IGNORED_ATTRIBUTES_STARTS_WITH = ["er-", "er_"];
1645
1585
 
1646
1586
  // src/schema/utils/utils.ts
1647
1587
  var isIgnoredAttribute = (attribute) => IGNORED_ATTRIBUTES.includes(attribute) || IGNORED_ATTRIBUTES_STARTS_WITH.some(
1648
1588
  (startsWith) => attribute.startsWith(startsWith)
1649
1589
  );
1650
1590
  var isIgnoredElement = (element) => IGNORED_ELEMENT_SELECTORS.some((selector) => element.matches(selector));
1651
- var findSchemaByCode = (code) => SCHEMA_MAP.get(code);
1591
+ var findSchemaByCode = (code) => SCHEMAS[code];
1652
1592
  var findSchemaByElement = (element) => {
1653
1593
  const isInsertion = element.classList.contains("ins");
1654
1594
  const isDeletion = element.classList.contains("del");
@@ -1671,7 +1611,7 @@ var findSchemaByElement = (element) => {
1671
1611
  return findSchemaByCode("footnoteSection");
1672
1612
  }
1673
1613
  }
1674
- const candidates = [...SCHEMA_MAP.values()].filter(
1614
+ const candidates = Object.values(SCHEMAS).filter(
1675
1615
  (schema) => schema.tag === element.tagName.toUpperCase()
1676
1616
  );
1677
1617
  if (candidates.length > 0) {
@@ -1692,9 +1632,13 @@ var findAttributeDefinitionByName = (definitions, name) => {
1692
1632
 
1693
1633
  // src/schema/utils/createElement.ts
1694
1634
  var createElement = ({
1695
- schema,
1635
+ schemaCode,
1696
1636
  attributes
1697
1637
  }) => {
1638
+ const schema = findSchemaByCode(schemaCode);
1639
+ if (!schema) {
1640
+ throw new Error(`Schema not found for code: ${schemaCode}`);
1641
+ }
1698
1642
  const element = document.createElement(schema.tag.toLowerCase());
1699
1643
  for (const [name, value] of Object.entries(attributes)) {
1700
1644
  if (value === void 0) {
@@ -1713,7 +1657,7 @@ var generateValidationIssueId = () => {
1713
1657
  return `${Date.now()}-${Math.random().toString(36).slice(2)}`;
1714
1658
  };
1715
1659
 
1716
- // src/validation/addValidationIssue.ts
1660
+ // src/validation/utils/addValidationIssue.ts
1717
1661
  var createValidationIssue = (issue) => ({
1718
1662
  id: generateValidationIssueId(),
1719
1663
  ...issue
@@ -1722,6 +1666,11 @@ var addValidationIssue = (errors, issue) => {
1722
1666
  errors.push(createValidationIssue(issue));
1723
1667
  };
1724
1668
 
1669
+ // src/validation/utils/getStore.ts
1670
+ var getStore = (element) => {
1671
+ return element.getAttribute("store") || "";
1672
+ };
1673
+
1725
1674
  // src/validation/utils/retrieveTextIgnoringNodesWithSelector.ts
1726
1675
  var retrieveTextIgnoringNodesWithSelector = (element, selector = ".del") => {
1727
1676
  const clonedElement = element.cloneNode(true);
@@ -1743,10 +1692,6 @@ var extractFootnoteNumber = (footnote) => {
1743
1692
  };
1744
1693
  var validateFootnoteCue = (footnoteElement, root) => {
1745
1694
  const errors = [];
1746
- const store = footnoteElement.getAttribute("store");
1747
- if (!store) {
1748
- return errors;
1749
- }
1750
1695
  const linkend = footnoteElement.getAttribute("xmlid") || "";
1751
1696
  const footnoteNumber = footnoteElement.querySelector(
1752
1697
  FOOTNOTE_NUMBER_SCHEMA.tag
@@ -1759,7 +1704,7 @@ var validateFootnoteCue = (footnoteElement, root) => {
1759
1704
  }
1760
1705
  if (!footnoteNumber) {
1761
1706
  addValidationIssue(errors, {
1762
- store,
1707
+ store: getStore(footnoteElement),
1763
1708
  title: "Footnote number missing",
1764
1709
  kind: "missing",
1765
1710
  description: "The footnote number is missing. Please add it to the footnote.",
@@ -1768,7 +1713,7 @@ var validateFootnoteCue = (footnoteElement, root) => {
1768
1713
  }
1769
1714
  const label = extractFootnoteNumber(footnoteNumber);
1770
1715
  addValidationIssue(errors, {
1771
- store,
1716
+ store: getStore(footnoteElement),
1772
1717
  title: "Unreferenced footnote",
1773
1718
  kind: "unlinked",
1774
1719
  description: `The footnote ${label} is not referenced to any footnote cue in this chapter. Please reference it in the chapter.`,
@@ -1782,7 +1727,6 @@ var validateConsecutiveFootnotes = (root) => {
1782
1727
  return [];
1783
1728
  }
1784
1729
  for (const [index, footnote] of footnotes.entries()) {
1785
- const store = footnote.getAttribute("store") || "";
1786
1730
  const expectedNumber = index + 1;
1787
1731
  const footnoteNumberElement = footnote.querySelector(
1788
1732
  FOOTNOTE_NUMBER_SCHEMA.tag
@@ -1796,7 +1740,7 @@ var validateConsecutiveFootnotes = (root) => {
1796
1740
  }
1797
1741
  return [
1798
1742
  createValidationIssue({
1799
- store,
1743
+ store: getStore(footnote),
1800
1744
  title: "Non-consecutive footnote numbers",
1801
1745
  kind: "missing",
1802
1746
  description: "Footnote numbers must be consecutive. Please reorder the footnotes.",
@@ -1814,7 +1758,6 @@ var validateConsecutiveFootnoteCues = (root) => {
1814
1758
  return [];
1815
1759
  }
1816
1760
  for (const [index, footnoteLink] of footnoteLinks.entries()) {
1817
- const store = footnoteLink.getAttribute("store") || "";
1818
1761
  const expectedNumber = index + 1;
1819
1762
  const label = extractFootnoteNumber(footnoteLink);
1820
1763
  if (label === expectedNumber) {
@@ -1822,7 +1765,7 @@ var validateConsecutiveFootnoteCues = (root) => {
1822
1765
  }
1823
1766
  return [
1824
1767
  createValidationIssue({
1825
- store,
1768
+ store: getStore(footnoteLink),
1826
1769
  title: "Non-consecutive footnote cues",
1827
1770
  kind: "missing",
1828
1771
  description: "Footnote cues must be consecutive. Please reorder the footnote cues.",
@@ -1832,40 +1775,24 @@ var validateConsecutiveFootnoteCues = (root) => {
1832
1775
  }
1833
1776
  return [];
1834
1777
  };
1835
- var validateFootnotes = (root) => {
1836
- const errors = [];
1837
- for (const footnote of root.querySelectorAll(FOOTNOTE_SCHEMA.tag)) {
1838
- errors.push(...validateFootnoteCue(footnote, root));
1839
- }
1840
- errors.push(...validateConsecutiveFootnotes(root));
1841
- errors.push(...validateConsecutiveFootnoteCues(root));
1842
- return errors;
1843
- };
1844
1778
 
1845
1779
  // src/validation/validateLinkend.ts
1846
- var findElementInCurrentChapter = (root, linkend) => {
1847
- return !!root.querySelector(`[xmlid='${CSS.escape(linkend)}']`);
1848
- };
1849
- var findElementInReferenceChapters = (linkend, referenceChapterLinkends) => {
1850
- return referenceChapterLinkends.includes(linkend);
1780
+ var findElementLinkedTo = (linkend, elementsLinkedTo) => {
1781
+ return elementsLinkedTo.includes(linkend);
1851
1782
  };
1852
- var validateLinkend = (linkElement, root, referenceChapterLinkends = []) => {
1853
- const store = linkElement.getAttribute("store");
1854
- if (!store) {
1855
- return [];
1856
- }
1783
+ var validateLinkend = (linkElement, elementsLinkedTo) => {
1857
1784
  const linkend = linkElement.getAttribute("linkend");
1858
1785
  if (!linkend) {
1859
1786
  return [];
1860
1787
  }
1861
1788
  const isLinkFootnoteCue = linkElement.tagName.toUpperCase() === FOOTNOTE_LINK_SCHEMA.tag;
1862
1789
  if (isLinkFootnoteCue) {
1863
- if (findElementInCurrentChapter(root, linkend)) {
1790
+ if (findElementLinkedTo(linkend, elementsLinkedTo)) {
1864
1791
  return [];
1865
1792
  }
1866
1793
  return [
1867
1794
  createValidationIssue({
1868
- store,
1795
+ store: getStore(linkElement),
1869
1796
  title: "Unlinked footnote cue",
1870
1797
  kind: "unlinked",
1871
1798
  description: "This footnote cue is not referenced to any footnote in this chapter. Please link it again manually.",
@@ -1873,12 +1800,12 @@ var validateLinkend = (linkElement, root, referenceChapterLinkends = []) => {
1873
1800
  })
1874
1801
  ];
1875
1802
  }
1876
- if (findElementInCurrentChapter(root, linkend) || findElementInReferenceChapters(linkend, referenceChapterLinkends)) {
1803
+ if (findElementLinkedTo(linkend, elementsLinkedTo)) {
1877
1804
  return [];
1878
1805
  }
1879
1806
  return [
1880
1807
  createValidationIssue({
1881
- store,
1808
+ store: getStore(linkElement),
1882
1809
  title: "Unlinked element",
1883
1810
  kind: "unlinked",
1884
1811
  description: "This link is not referenced to any element in the current chapter or reference chapters. Please link it again manually.",
@@ -1886,15 +1813,6 @@ var validateLinkend = (linkElement, root, referenceChapterLinkends = []) => {
1886
1813
  })
1887
1814
  ];
1888
1815
  };
1889
- var validateLinkends = (root, referenceChapterLinkends = []) => {
1890
- const errors = [];
1891
- for (const linkElement of root.querySelectorAll("[linkend]")) {
1892
- errors.push(
1893
- ...validateLinkend(linkElement, root, referenceChapterLinkends)
1894
- );
1895
- }
1896
- return errors;
1897
- };
1898
1816
 
1899
1817
  // src/validation/validateAttributes.ts
1900
1818
  var validateAttributes = (element, schema) => {
@@ -1907,7 +1825,7 @@ var validateAttributes = (element, schema) => {
1907
1825
  const name = getAttributeName(attribute);
1908
1826
  if (!element.hasAttribute(name)) {
1909
1827
  addValidationIssue(errors, {
1910
- store: element.id,
1828
+ store: getStore(element),
1911
1829
  title: `Missing required attribute "${name}"`,
1912
1830
  level: "warning",
1913
1831
  kind: "missing",
@@ -1955,7 +1873,7 @@ var validateElementAgainstSchema = (element, schema) => {
1955
1873
  const errors = [];
1956
1874
  if (element.tagName.toUpperCase() !== schema.tag) {
1957
1875
  addValidationIssue(errors, {
1958
- store: element.id,
1876
+ store: getStore(element),
1959
1877
  title: `Expected ${schema.tag}, got ${element.tagName}`,
1960
1878
  level: "warning",
1961
1879
  kind: "forbidden",
@@ -1964,7 +1882,7 @@ var validateElementAgainstSchema = (element, schema) => {
1964
1882
  }
1965
1883
  if (schema.code === "insertion" && !element.classList.contains("ins")) {
1966
1884
  addValidationIssue(errors, {
1967
- store: element.id,
1885
+ store: getStore(element),
1968
1886
  title: 'Missing class "ins" for insertion element',
1969
1887
  level: "warning",
1970
1888
  kind: "missing",
@@ -1973,7 +1891,7 @@ var validateElementAgainstSchema = (element, schema) => {
1973
1891
  }
1974
1892
  if (schema.code === "deletion" && !element.classList.contains("del")) {
1975
1893
  addValidationIssue(errors, {
1976
- store: element.id,
1894
+ store: getStore(element),
1977
1895
  title: 'Missing class "del" for deletion element',
1978
1896
  level: "warning",
1979
1897
  kind: "missing",
@@ -1982,7 +1900,7 @@ var validateElementAgainstSchema = (element, schema) => {
1982
1900
  }
1983
1901
  if (schema.code === "commentQuerySection" && !element.classList.contains("cmtQurySection")) {
1984
1902
  addValidationIssue(errors, {
1985
- store: element.id,
1903
+ store: getStore(element),
1986
1904
  title: 'Missing class "cmtQurySection" for comment query section',
1987
1905
  level: "warning",
1988
1906
  kind: "missing",
@@ -2006,7 +1924,7 @@ var validateChildren = (element, schema) => {
2006
1924
  );
2007
1925
  if (!allowedChild) {
2008
1926
  addValidationIssue(errors, {
2009
- store: child.id,
1927
+ store: getStore(child),
2010
1928
  title: `Forbidden child element ${child.tagName}`,
2011
1929
  level: "warning",
2012
1930
  kind: "forbidden",
@@ -2017,7 +1935,7 @@ var validateChildren = (element, schema) => {
2017
1935
  const childSchema = findSchemaByElement(child);
2018
1936
  if (!childSchema) {
2019
1937
  addValidationIssue(errors, {
2020
- store: child.id,
1938
+ store: getStore(child),
2021
1939
  title: `No schema found for child element ${child.tagName}`,
2022
1940
  level: "warning",
2023
1941
  kind: "missing",
@@ -2036,7 +1954,7 @@ var validateChildren = (element, schema) => {
2036
1954
  );
2037
1955
  if (!hasChild) {
2038
1956
  addValidationIssue(errors, {
2039
- store: element.id,
1957
+ store: getStore(element),
2040
1958
  title: `Missing required child element ${allowedChild.tagName}`,
2041
1959
  level: "warning",
2042
1960
  kind: "missing",
@@ -2046,7 +1964,7 @@ var validateChildren = (element, schema) => {
2046
1964
  }
2047
1965
  if (schema.allowedChildTagNames.size === 0 && childElements.length > 0) {
2048
1966
  addValidationIssue(errors, {
2049
- store: element.id,
1967
+ store: getStore(element),
2050
1968
  title: "Leaf element cannot contain child elements",
2051
1969
  level: "warning",
2052
1970
  kind: "forbidden",
@@ -2056,7 +1974,7 @@ var validateChildren = (element, schema) => {
2056
1974
  return errors;
2057
1975
  };
2058
1976
 
2059
- // src/validation/validateXml.ts
1977
+ // src/validation/utils/getLinkableRoles.ts
2060
1978
  var getLinkableRoles = () => {
2061
1979
  const linkRoleDefinition = findAttributeDefinitionByName(
2062
1980
  LINK_SCHEMA.requiredAttributes,
@@ -2070,220 +1988,78 @@ var getLinkableRoles = () => {
2070
1988
  }
2071
1989
  return [];
2072
1990
  };
2073
- var validateElement = (element, root, referenceChapterLinkends) => {
1991
+
1992
+ // src/validation/validateXml.ts
1993
+ var validateElement = (element, root, elementsLinkedTo, shouldValidateAgainstSchema = false) => {
2074
1994
  if (isIgnoredElement(element)) {
2075
1995
  return [];
2076
1996
  }
2077
1997
  const errors = [];
2078
1998
  const schema = findSchemaByElement(element);
2079
1999
  if (schema) {
2080
- errors.push(...validateElementAgainstSchema(element, schema));
2000
+ if (shouldValidateAgainstSchema) {
2001
+ errors.push(...validateElementAgainstSchema(element, schema));
2002
+ }
2081
2003
  const role = element.getAttribute("role") || "";
2082
2004
  const linkableRoles = getLinkableRoles();
2083
2005
  if (schema.tag === LINK_SCHEMA.tag && linkableRoles.includes(role) || schema.tag === FOOTNOTE_LINK_SCHEMA.tag) {
2084
- errors.push(...validateLinkend(element, root, referenceChapterLinkends));
2006
+ errors.push(...validateLinkend(element, elementsLinkedTo));
2085
2007
  }
2086
2008
  if (schema.tag === FOOTNOTE_SCHEMA.tag) {
2087
2009
  errors.push(...validateFootnoteCue(element, root));
2088
2010
  }
2089
2011
  }
2090
2012
  for (const child of Array.from(element.children)) {
2091
- errors.push(...validateElement(child, root, referenceChapterLinkends));
2013
+ errors.push(...validateElement(child, root, elementsLinkedTo));
2092
2014
  }
2093
2015
  return errors;
2094
2016
  };
2095
- var validateXml = (xml, referenceChapterLinkends) => {
2017
+ var validateXml = (xml, elementsLinkedTo, shouldValidateAgainstSchema) => {
2096
2018
  const errors = [];
2097
2019
  errors.push(...validateConsecutiveFootnotes(xml));
2098
2020
  errors.push(...validateConsecutiveFootnoteCues(xml));
2099
2021
  for (const child of Array.from(xml.children)) {
2100
- errors.push(...validateElement(child, xml, referenceChapterLinkends));
2022
+ errors.push(
2023
+ ...validateElement(
2024
+ child,
2025
+ xml,
2026
+ elementsLinkedTo,
2027
+ shouldValidateAgainstSchema
2028
+ )
2029
+ );
2101
2030
  }
2102
2031
  return errors;
2103
2032
  };
2104
2033
  export {
2105
- ABSTRACT_SCHEMA,
2106
- ABSTRACT_TAG,
2107
- AFFILIATION_SCHEMA,
2108
- AFFILIATION_TAG,
2109
2034
  ALIGNMENT_ATTRIBUTE,
2110
- ALTTEXT_SCHEMA,
2111
- ALTTEXT_TAG,
2112
- APPENDIX_SCHEMA,
2113
- APPENDIX_TAG,
2114
2035
  ATOM_SCHEMAS,
2115
- AUTHORGROUP_SCHEMA,
2116
- AUTHORGROUP_TAG,
2117
- AUTHOR_SCHEMA,
2118
- AUTHOR_TAG,
2119
- BLOCKQUOTE_SCHEMA,
2120
- BLOCKQUOTE_TAG,
2121
- BOX_SCHEMA,
2122
- B_SCHEMA,
2123
- CAPTION_SCHEMA,
2124
- CAPTION_TAG,
2125
- CHAPTER_SCHEMA,
2126
- CHAPTER_TAG,
2127
- COMMENT_QUERY_SECTION_SCHEMA,
2128
- COMMENT_SCHEMA,
2129
- CONTENT_SCHEMA,
2130
- DEGREES_SCHEMA,
2131
- DEGREES_TAG,
2132
- DELETION_SCHEMA,
2133
- DIALOGUE_SCHEMA,
2134
- DIALOGUE_TAG,
2135
2036
  ELEMENT_SCHEMAS,
2136
- ELEMENT_TAGS,
2137
2037
  ELE_ID_ATTRIBUTE,
2138
- EMAIL_SCHEMA,
2139
- EMAIL_TAG,
2140
- EMPHASIS_SCHEMA,
2141
- EPIGRAPH_SCHEMA,
2142
- EPIGRAPH_TAG,
2143
- EQUATION_SCHEMA,
2144
- EQUATION_TAG,
2145
- FIGNOTE_SCHEMA,
2146
- FIGNOTE_TAG,
2147
- FIGSOURCE_SCHEMA,
2148
- FIGSOURCE_TAG,
2149
2038
  FIGURE_PLACEMENT_ATTRIBUTE,
2150
- FIGURE_SCHEMA,
2151
- FIGURE_TAG,
2152
- FIRSTNAME_SCHEMA,
2153
- FIRSTNAME_TAG,
2154
- FOOTNOTE_LINK_SCHEMA,
2155
- FOOTNOTE_LINK_TAG,
2156
- FOOTNOTE_NUMBER_SCHEMA,
2157
- FOOTNOTE_NUMBER_TAG,
2158
- FOOTNOTE_SCHEMA,
2159
- FOOTNOTE_SECTION_SCHEMA,
2160
- FOOTNOTE_TAG,
2161
- GROUP_ELEMENTS_TAGS,
2162
- GROUP_ELEMENT_SCHEMAS,
2163
- HEADING_SCHEMA,
2164
- HIGHLIGHTMARK_SCHEMA,
2165
- HONORIFIC_SCHEMA,
2166
- HONORIFIC_TAG,
2167
- HTML_TABLE_SCHEMA,
2168
- HTML_TABLE_TAG,
2169
2039
  ID_ATTRS,
2170
2040
  IGNORED_ATTRIBUTES,
2171
2041
  IGNORED_ATTRIBUTES_STARTS_WITH,
2172
2042
  IGNORED_ELEMENT_SELECTORS,
2173
- IMAGEOBJECT_SCHEMA,
2174
- IMAGEOBJECT_TAG,
2175
- IMG_SCHEMA,
2176
- IMG_TAG,
2177
2043
  INDENT_TYPE_ATTRIBUTE,
2178
- INFORMALFIGURE_SCHEMA,
2179
- INFORMALFIGURE_TAG,
2180
- INFO_SCHEMA,
2181
- INFO_TAG,
2182
- INLINEEQUATION_SCHEMA,
2183
- INLINEEQUATION_TAG,
2184
2044
  INLINE_ELEMENT_SCHEMAS,
2185
- INLINE_ELEMENT_TAGS_ALLOWED_CHILDREN,
2186
- INSERTION_SCHEMA,
2187
- I_SCHEMA,
2188
- KEYWORDSET_SCHEMA,
2189
- KEYWORDSET_TAG,
2190
- KEYWORD_SCHEMA,
2191
- KEYWORD_TAG,
2192
- LABEL_SCHEMA,
2193
- LABEL_TAG,
2194
2045
  LAYOUT_ATTRIBUTES,
2195
2046
  LAYOUT_CELL_WIDTH,
2196
2047
  LAYOUT_USER_ATTRIBUTE,
2197
2048
  LEFT_INDENT_ATTRIBUTE,
2198
- LINE_SCHEMA,
2199
- LINE_TAG,
2200
- LINK_SCHEMA,
2201
- LINK_TAG,
2202
- LI_SCHEMA,
2203
- LI_TAG,
2204
- LRH_SCHEMA,
2205
- LRH_TAG,
2206
- MEDIAOBJECT_SCHEMA,
2207
- MEDIAOBJECT_TAG,
2208
- OLINK_SCHEMA,
2209
- OLINK_TAG,
2210
- OL_SCHEMA,
2211
- OL_TAG,
2212
- ORGNAME_SCHEMA,
2213
- ORGNAME_TAG,
2214
- ORG_SCHEMA,
2215
- ORG_TAG,
2216
2049
  ORIENTATION_ATTRIBUTE,
2217
- PARA_SCHEMA,
2218
- PARA_TAG,
2219
- PERSONNAME_SCHEMA,
2220
- PERSONNAME_TAG,
2221
2050
  PLACEMENT_ATTRIBUTE,
2222
- POEM_SCHEMA,
2223
- POEM_TAG,
2224
- POSTNOMINALS_TAG,
2225
- PUNC_SCHEMA,
2226
- PUNC_TAG,
2227
- QUERY_SCHEMA,
2228
- REPLY_SCHEMA,
2229
2051
  RIGHT_INDENT_ATTRIBUTE,
2230
- RRH_SCHEMA,
2231
- RRH_TAG,
2232
2052
  SCHEMAS,
2233
- SCHEMA_MAP,
2234
- SC_SCHEMA,
2235
- SECTION_TAG,
2236
- SIDEBAR_TAG,
2237
- SOURCE_SCHEMA,
2238
- SOURCE_TAG,
2239
2053
  SPACE_ABOVE_ATTRIBUTE,
2240
2054
  SPACE_BELOW_ATTRIBUTE,
2241
- SPEAKER_SCHEMA,
2242
- SPEAKER_TAG,
2243
2055
  SPECIAL_INDENT_ATTRIBUTE,
2244
2056
  STORE_ATTRIBUTE,
2245
- STRIKE_SCHEMA,
2246
2057
  STYLE_NAME_ATTRIBUTE,
2247
- SUBTITLE_SCHEMA,
2248
- SUBTITLE_TAG,
2249
- SUB_SCHEMA,
2250
- SUP_SCHEMA,
2251
- SURNAME_SCHEMA,
2252
- SURNAME_TAG,
2253
- TABLE_SCHEMA,
2254
- TABLE_TAG,
2255
- TAG_SCHEMA,
2256
- TAG_TAG,
2257
- TBLFN_SCHEMA,
2258
- TBLFN_TAG,
2259
- TBLSOURCE_SCHEMA,
2260
- TBLSOURCE_TAG,
2261
- TBODY_SCHEMA,
2262
- TBODY_TAG,
2263
- TD_SCHEMA,
2264
- TD_TAG,
2265
- TGROUP_SCHEMA,
2266
- TGROUP_TAG,
2267
- THEAD_SCHEMA,
2268
- THEAD_TAG,
2269
- TITLE_SCHEMA,
2270
- TITLE_TAG,
2271
- TOKEN_SCHEMA,
2272
- TOKEN_TAG,
2273
- TP_SCHEMA,
2274
- TP_TAG,
2275
2058
  TRACK_CHANGES_ATTRS,
2276
2059
  TRACK_CHANGES_ATTR_DATA_DATE,
2277
2060
  TRACK_CHANGES_ATTR_DATA_TIME,
2278
2061
  TRACK_CHANGES_ATTR_DATA_USERID,
2279
2062
  TRACK_CHANGES_ATTR_DATA_USERNAME,
2280
- TR_SCHEMA,
2281
- TR_TAG,
2282
- UL_SCHEMA,
2283
- UL_TAG,
2284
- URI_SCHEMA,
2285
- URI_TAG,
2286
- U_SCHEMA,
2287
2063
  createElement,
2288
2064
  findAttributeDefinitionByName,
2289
2065
  findSchemaByCode,
@@ -2292,14 +2068,5 @@ export {
2292
2068
  isAttributeRestricted,
2293
2069
  isIgnoredAttribute,
2294
2070
  isIgnoredElement,
2295
- validateAttributes,
2296
- validateConsecutiveFootnoteCues,
2297
- validateConsecutiveFootnotes,
2298
- validateElement,
2299
- validateElementAgainstSchema,
2300
- validateFootnoteCue,
2301
- validateFootnotes,
2302
- validateLinkend,
2303
- validateLinkends,
2304
2071
  validateXml
2305
2072
  };