@gmb/bitmark-parser-generator 5.36.0 → 5.38.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.
@@ -1263,6 +1263,7 @@ var import_superenum14 = require("@ncoderz/superenum");
1263
1263
  // src/model/enum/GroupKey.ts
1264
1264
  var import_superenum10 = require("@ncoderz/superenum");
1265
1265
  var groupKeys = {
1266
+ group_accessibilityDecorative: "group_accessibilityDecorative",
1266
1267
  group_standardAllBits: "group_standardAllBits",
1267
1268
  group_standardItemLead: "group_standardItemLead",
1268
1269
  group_standardItemLeadInstructionHint: "group_standardItemLeadInstructionHint",
@@ -1328,6 +1329,8 @@ var groupKeys = {
1328
1329
  // src/model/enum/PropertyKey.ts
1329
1330
  var import_superenum11 = require("@ncoderz/superenum");
1330
1331
  var propertyKeys = {
1332
+ property_accessibilityGroupTag: "@accessibilityGroupTag",
1333
+ property_accessibilityTag: "@accessibilityTag",
1331
1334
  property_action: "@action",
1332
1335
  property_activityType: "@activityType",
1333
1336
  property_additionalSolutions: "@additionalSolutions",
@@ -1615,6 +1618,8 @@ var propertyKeys = {
1615
1618
  property_trim: "@trim",
1616
1619
  property_unit: "@unit",
1617
1620
  property_unitAbbr: "@unitAbbr",
1621
+ property_unitAbbrPlural: "@unitAbbrPlural",
1622
+ property_unitPlural: "@unitPlural",
1618
1623
  property_vendorDashboardId: "@vendorDashboardId",
1619
1624
  property_vendorSurveyId: "@vendorSurveyId",
1620
1625
  property_vendorUrl: "@vendorUrl",
@@ -4428,12 +4433,22 @@ var CARDSETS = {
4428
4433
  },
4429
4434
  {
4430
4435
  key: ConfigKey.property_unit,
4431
- description: "Unit of measurement for the ingredient.",
4436
+ description: "Unit of measurement for the ingredient (singular).",
4437
+ format: TagFormat.plainText
4438
+ },
4439
+ {
4440
+ key: ConfigKey.property_unitPlural,
4441
+ description: "Unit of measurement for the ingredient (plural).",
4432
4442
  format: TagFormat.plainText
4433
4443
  },
4434
4444
  {
4435
4445
  key: ConfigKey.property_unitAbbr,
4436
- description: "Abbreviation for the unit of measurement.",
4446
+ description: "Abbreviation for the unit of measurement (singular).",
4447
+ format: TagFormat.plainText
4448
+ },
4449
+ {
4450
+ key: ConfigKey.property_unitAbbrPlural,
4451
+ description: "Abbreviation for the unit of measurement (plural).",
4437
4452
  format: TagFormat.plainText
4438
4453
  },
4439
4454
  {
@@ -4506,6 +4521,7 @@ var CARDSETS = {
4506
4521
  };
4507
4522
 
4508
4523
  // src/config/raw/groups.ts
4524
+ var ACCESSIBILITY_TAG_VALUES = ["complex", "functional", "decorative", "standard"];
4509
4525
  var GROUPS = {
4510
4526
  [ConfigKey.group_standardAllBits]: {
4511
4527
  name: "Standard",
@@ -4609,6 +4625,12 @@ var GROUPS = {
4609
4625
  description: "Translation source reference",
4610
4626
  format: TagFormat.plainText
4611
4627
  },
4628
+ {
4629
+ key: ConfigKey.property_isCollapsible,
4630
+ description: "If true, the bit is collapsible",
4631
+ format: TagFormat.boolean,
4632
+ nullable: true
4633
+ },
4612
4634
  {
4613
4635
  key: ConfigKey.property_spansPageBreak,
4614
4636
  description: "If true, the bit spans a page break",
@@ -4772,6 +4794,36 @@ var GROUPS = {
4772
4794
  }
4773
4795
  ]
4774
4796
  },
4797
+ {
4798
+ key: ConfigKey.property_accessibilityTag,
4799
+ description: "The accessibility classification(s) for the bit",
4800
+ format: TagFormat.enumeration,
4801
+ values: ACCESSIBILITY_TAG_VALUES,
4802
+ nullable: true,
4803
+ maxCount: Count.infinity
4804
+ },
4805
+ {
4806
+ key: ConfigKey.property_accessibilityGroupTag,
4807
+ jsonKey: "accessibilityGroupTag.name",
4808
+ // Entity-merge semantics, as for `@groupTag`: repeated
4809
+ // `[@accessibilityGroupTag: name]` occurrences with the same value fold
4810
+ // into one entry; chained `@accessibilityTag` children's arrays merge as sets.
4811
+ exportJsonKey: { accessibilityGroupTag: [{ "@id": "name", name: "$" }] },
4812
+ description: "The accessibility group tag(s) for the bit",
4813
+ format: TagFormat.plainText,
4814
+ maxCount: Count.infinity,
4815
+ chain: [
4816
+ {
4817
+ key: ConfigKey.property_accessibilityTag,
4818
+ exportJsonKey: { tags: ["$"] },
4819
+ description: "The accessibility classification(s) for the group",
4820
+ format: TagFormat.enumeration,
4821
+ values: ACCESSIBILITY_TAG_VALUES,
4822
+ nullable: true,
4823
+ maxCount: Count.infinity
4824
+ }
4825
+ ]
4826
+ },
4775
4827
  {
4776
4828
  key: ConfigKey.property_reviewTag,
4777
4829
  description: "The review tag(s) for the bit",
@@ -4902,6 +4954,37 @@ var GROUPS = {
4902
4954
  }
4903
4955
  ]
4904
4956
  },
4957
+ [ConfigKey.group_accessibilityDecorative]: {
4958
+ name: "Accessibility (decorative)",
4959
+ description: "Accessibility tags defaulting to a decorative image, for bits that are decorative by definition",
4960
+ type: GroupConfigType.standard,
4961
+ // Re-declares `@accessibilityGroupTag` (in full — tag hydration is last-wins
4962
+ // per config key, it does not merge) with the decorative defaults. The
4963
+ // standalone `@accessibilityTag` is deliberately NOT re-declared: the default
4964
+ // belongs to the group structure only.
4965
+ tags: [
4966
+ {
4967
+ key: ConfigKey.property_accessibilityGroupTag,
4968
+ jsonKey: "accessibilityGroupTag.name",
4969
+ exportJsonKey: { accessibilityGroupTag: [{ "@id": "name", name: "$" }] },
4970
+ description: "The accessibility group tag(s) for the bit",
4971
+ format: TagFormat.plainText,
4972
+ defaultValue: "image",
4973
+ maxCount: Count.infinity,
4974
+ chain: [
4975
+ {
4976
+ key: ConfigKey.property_accessibilityTag,
4977
+ exportJsonKey: { tags: ["$"] },
4978
+ description: "The accessibility classification(s) for the group",
4979
+ format: TagFormat.enumeration,
4980
+ values: ACCESSIBILITY_TAG_VALUES,
4981
+ defaultValue: "decorative",
4982
+ maxCount: Count.infinity
4983
+ }
4984
+ ]
4985
+ }
4986
+ ]
4987
+ },
4905
4988
  [ConfigKey.group_standardItemLead]: {
4906
4989
  type: GroupConfigType.standard,
4907
4990
  description: "Standard group for item, lead, page number, and margin number tags",
@@ -7662,13 +7745,31 @@ var BITS = {
7662
7745
  },
7663
7746
  [BitType2.smartStandardArticleNormativeCollapsible]: {
7664
7747
  since: "1.28.0",
7748
+ deprecated: "5.37.0",
7665
7749
  baseBitType: BitType2.smartStandardArticleNormative,
7666
- description: "Smart standard normative article bit that is collapsible"
7750
+ description: "Smart standard normative article bit that is collapsible",
7751
+ tags: [
7752
+ {
7753
+ key: ConfigKey.property_isCollapsible,
7754
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
7755
+ format: TagFormat.boolean,
7756
+ defaultValue: "true"
7757
+ }
7758
+ ]
7667
7759
  },
7668
7760
  [BitType2.smartStandardArticleNonNormativeCollapsible]: {
7669
7761
  since: "1.28.0",
7762
+ deprecated: "5.37.0",
7670
7763
  baseBitType: BitType2.smartStandardArticleNonNormative,
7671
- description: "Smart standard non-normative article bit that is collapsible"
7764
+ description: "Smart standard non-normative article bit that is collapsible",
7765
+ tags: [
7766
+ {
7767
+ key: ConfigKey.property_isCollapsible,
7768
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
7769
+ format: TagFormat.boolean,
7770
+ defaultValue: "true"
7771
+ }
7772
+ ]
7672
7773
  },
7673
7774
  [BitType2.statement]: {
7674
7775
  since: "1.3.0",
@@ -8790,7 +8891,7 @@ var BITS = {
8790
8891
  },
8791
8892
  {
8792
8893
  key: ConfigKey.property_isCollapsible,
8793
- description: "If true, the chapter is collapsible",
8894
+ description: "If true, the chapter is collapsible (always emitted; defaults false)",
8794
8895
  format: TagFormat.boolean,
8795
8896
  defaultValue: "false"
8796
8897
  }
@@ -9399,12 +9500,22 @@ var BITS = {
9399
9500
  chain: [
9400
9501
  {
9401
9502
  key: ConfigKey.property_unit,
9402
- description: "The unit of measurement for the ingredients",
9503
+ description: "The unit of measurement for the ingredients (singular)",
9504
+ format: TagFormat.plainText
9505
+ },
9506
+ {
9507
+ key: ConfigKey.property_unitPlural,
9508
+ description: "The unit of measurement for the ingredients (plural)",
9403
9509
  format: TagFormat.plainText
9404
9510
  },
9405
9511
  {
9406
9512
  key: ConfigKey.property_unitAbbr,
9407
- description: "The abbreviation for the unit of measurement",
9513
+ description: "The abbreviation for the unit of measurement (singular)",
9514
+ format: TagFormat.plainText
9515
+ },
9516
+ {
9517
+ key: ConfigKey.property_unitAbbrPlural,
9518
+ description: "The abbreviation for the unit of measurement (plural)",
9408
9519
  format: TagFormat.plainText
9409
9520
  },
9410
9521
  {
@@ -9683,13 +9794,31 @@ var BITS = {
9683
9794
  },
9684
9795
  [BitType2.smartStandardExampleNormativeCollapsible]: {
9685
9796
  since: "1.28.0",
9797
+ deprecated: "5.37.0",
9686
9798
  baseBitType: BitType2.smartStandardExampleNormative,
9687
- description: "Smart standard normative example collapsible bit, used to provide normative examples in smart standards that can be collapsed"
9799
+ description: "Smart standard normative example collapsible bit, used to provide normative examples in smart standards that can be collapsed",
9800
+ tags: [
9801
+ {
9802
+ key: ConfigKey.property_isCollapsible,
9803
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
9804
+ format: TagFormat.boolean,
9805
+ defaultValue: "true"
9806
+ }
9807
+ ]
9688
9808
  },
9689
9809
  [BitType2.smartStandardExampleNonNormativeCollapsible]: {
9690
9810
  since: "1.28.0",
9811
+ deprecated: "5.37.0",
9691
9812
  baseBitType: BitType2.smartStandardExampleNonNormative,
9692
- description: "Smart standard non-normative example collapsible bit, used to provide non-normative examples in smart standards that can be collapsed"
9813
+ description: "Smart standard non-normative example collapsible bit, used to provide non-normative examples in smart standards that can be collapsed",
9814
+ tags: [
9815
+ {
9816
+ key: ConfigKey.property_isCollapsible,
9817
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
9818
+ format: TagFormat.boolean,
9819
+ defaultValue: "true"
9820
+ }
9821
+ ]
9693
9822
  },
9694
9823
  [BitType2.authorContentBitGenerator]: {
9695
9824
  since: "4.2.0",
@@ -10025,8 +10154,17 @@ var BITS = {
10025
10154
  },
10026
10155
  [BitType2.smartStandardListCollapsible]: {
10027
10156
  since: "1.28.0",
10157
+ deprecated: "5.37.0",
10028
10158
  baseBitType: BitType2.smartStandardList,
10029
- description: "Smart standard list collapsible bit, used to create collapsible smart standard lists in articles or books"
10159
+ description: "Smart standard list collapsible bit, used to create collapsible smart standard lists in articles or books",
10160
+ tags: [
10161
+ {
10162
+ key: ConfigKey.property_isCollapsible,
10163
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
10164
+ format: TagFormat.boolean,
10165
+ defaultValue: "true"
10166
+ }
10167
+ ]
10030
10168
  },
10031
10169
  [BitType2.message]: {
10032
10170
  since: "1.3.0",
@@ -10080,13 +10218,31 @@ var BITS = {
10080
10218
  },
10081
10219
  [BitType2.smartStandardNoteNormativeCollapsible]: {
10082
10220
  since: "1.28.0",
10221
+ deprecated: "5.37.0",
10083
10222
  baseBitType: BitType2.smartStandardNoteNormative,
10084
- description: "Smart standard normative note collapsible bit, used to provide normative notes in smart standards that can be collapsed"
10223
+ description: "Smart standard normative note collapsible bit, used to provide normative notes in smart standards that can be collapsed",
10224
+ tags: [
10225
+ {
10226
+ key: ConfigKey.property_isCollapsible,
10227
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
10228
+ format: TagFormat.boolean,
10229
+ defaultValue: "true"
10230
+ }
10231
+ ]
10085
10232
  },
10086
10233
  [BitType2.smartStandardNoteNonNormativeCollapsible]: {
10087
10234
  since: "1.28.0",
10235
+ deprecated: "5.37.0",
10088
10236
  baseBitType: BitType2.smartStandardNoteNonNormative,
10089
- description: "Smart standard non-normative note collapsible bit, used to provide non-normative notes in smart standards that can be collapsed"
10237
+ description: "Smart standard non-normative note collapsible bit, used to provide non-normative notes in smart standards that can be collapsed",
10238
+ tags: [
10239
+ {
10240
+ key: ConfigKey.property_isCollapsible,
10241
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
10242
+ format: TagFormat.boolean,
10243
+ defaultValue: "true"
10244
+ }
10245
+ ]
10090
10246
  },
10091
10247
  [BitType2.noteAi]: {
10092
10248
  since: "1.3.0",
@@ -10147,7 +10303,9 @@ var BITS = {
10147
10303
  },
10148
10304
  [BitType2.printPageBreak]: {
10149
10305
  since: "5.4.0",
10150
- baseBitType: BitType2.separator,
10306
+ // Based on `article`, not `separator`: `separator` adds nothing over `article`,
10307
+ // and basing on it would inherit the decorative accessibility defaults.
10308
+ baseBitType: BitType2.article,
10151
10309
  description: "Print page break bit, used to create page breaks for printing in articles or books"
10152
10310
  },
10153
10311
  [BitType2.releaseNotesSummary]: {
@@ -10199,13 +10357,31 @@ var BITS = {
10199
10357
  },
10200
10358
  [BitType2.smartStandardRemarkNormativeCollapsible]: {
10201
10359
  since: "1.28.0",
10360
+ deprecated: "5.37.0",
10202
10361
  baseBitType: BitType2.smartStandardRemarkNormative,
10203
- description: "Smart standard normative remark collapsible bit, used to provide normative remarks in smart standards that can be collapsed"
10362
+ description: "Smart standard normative remark collapsible bit, used to provide normative remarks in smart standards that can be collapsed",
10363
+ tags: [
10364
+ {
10365
+ key: ConfigKey.property_isCollapsible,
10366
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
10367
+ format: TagFormat.boolean,
10368
+ defaultValue: "true"
10369
+ }
10370
+ ]
10204
10371
  },
10205
10372
  [BitType2.smartStandardRemarkNonNormativeCollapsible]: {
10206
10373
  since: "1.28.0",
10374
+ deprecated: "5.37.0",
10207
10375
  baseBitType: BitType2.smartStandardRemarkNonNormative,
10208
- description: "Smart standard non-normative remark collapsible bit, used to provide non-normative remarks in smart standards that can be collapsed"
10376
+ description: "Smart standard non-normative remark collapsible bit, used to provide non-normative remarks in smart standards that can be collapsed",
10377
+ tags: [
10378
+ {
10379
+ key: ConfigKey.property_isCollapsible,
10380
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
10381
+ format: TagFormat.boolean,
10382
+ defaultValue: "true"
10383
+ }
10384
+ ]
10209
10385
  },
10210
10386
  [BitType2.selfAssessment]: {
10211
10387
  since: "1.3.0",
@@ -10215,12 +10391,24 @@ var BITS = {
10215
10391
  [BitType2.separator]: {
10216
10392
  since: "1.4.15",
10217
10393
  baseBitType: BitType2.article,
10218
- description: "Separator bit, used to create visual separators in articles or books"
10394
+ description: "Separator bit, used to create visual separators in articles or books",
10395
+ tags: [
10396
+ {
10397
+ key: ConfigKey.group_accessibilityDecorative,
10398
+ description: "Accessibility tags, defaulting to a decorative image"
10399
+ }
10400
+ ]
10219
10401
  },
10220
10402
  [BitType2.separatorAlt]: {
10221
10403
  since: "1.16.0",
10222
10404
  baseBitType: BitType2.separator,
10223
- description: "Alternative separator bit, used to create visual separators in articles or books with alternative styling"
10405
+ description: "Alternative separator bit, used to create visual separators in articles or books with alternative styling",
10406
+ tags: [
10407
+ {
10408
+ key: ConfigKey.group_accessibilityDecorative,
10409
+ description: "Accessibility tags, defaulting to a decorative image"
10410
+ }
10411
+ ]
10224
10412
  },
10225
10413
  [BitType2.sticker]: {
10226
10414
  since: "1.5.28",
@@ -10276,53 +10464,143 @@ var BITS = {
10276
10464
  },
10277
10465
  [BitType2.collapsible]: {
10278
10466
  since: "1.21.0",
10467
+ deprecated: "5.37.0",
10279
10468
  baseBitType: BitType2.article,
10280
- description: "Collapsible bit, used to create collapsible sections in articles or books"
10469
+ description: "Collapsible bit, used to create collapsible sections in articles or books",
10470
+ tags: [
10471
+ {
10472
+ key: ConfigKey.property_isCollapsible,
10473
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
10474
+ format: TagFormat.boolean,
10475
+ defaultValue: "true"
10476
+ }
10477
+ ]
10281
10478
  },
10282
10479
  [BitType2.sideNoteCollapsible]: {
10283
10480
  since: "1.21.0",
10284
- baseBitType: BitType2.article,
10285
- description: "Side note collapsible bit, used to create collapsible side notes in articles or books"
10481
+ deprecated: "5.37.0",
10482
+ baseBitType: BitType2.sideNote,
10483
+ description: "Side note collapsible bit, used to create collapsible side notes in articles or books",
10484
+ tags: [
10485
+ {
10486
+ key: ConfigKey.property_isCollapsible,
10487
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
10488
+ format: TagFormat.boolean,
10489
+ defaultValue: "true"
10490
+ }
10491
+ ]
10286
10492
  },
10287
10493
  [BitType2.infoCollapsible]: {
10288
10494
  since: "1.21.0",
10289
- baseBitType: BitType2.article,
10290
- description: "Info collapsible bit, used to create collapsible informational sections in articles or books"
10495
+ deprecated: "5.37.0",
10496
+ baseBitType: BitType2.info,
10497
+ description: "Info collapsible bit, used to create collapsible informational sections in articles or books",
10498
+ tags: [
10499
+ {
10500
+ key: ConfigKey.property_isCollapsible,
10501
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
10502
+ format: TagFormat.boolean,
10503
+ defaultValue: "true"
10504
+ }
10505
+ ]
10291
10506
  },
10292
10507
  [BitType2.remarkCollapsible]: {
10293
10508
  since: "1.21.0",
10294
- baseBitType: BitType2.article,
10295
- description: "Remark collapsible bit, used to create collapsible remarks in articles or books"
10509
+ deprecated: "5.37.0",
10510
+ baseBitType: BitType2.remark,
10511
+ description: "Remark collapsible bit, used to create collapsible remarks in articles or books",
10512
+ tags: [
10513
+ {
10514
+ key: ConfigKey.property_isCollapsible,
10515
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
10516
+ format: TagFormat.boolean,
10517
+ defaultValue: "true"
10518
+ }
10519
+ ]
10296
10520
  },
10297
10521
  [BitType2.warningCollapsible]: {
10298
10522
  since: "1.21.0",
10299
- baseBitType: BitType2.article,
10300
- description: "Warning collapsible bit, used to create collapsible warnings in articles or books"
10523
+ deprecated: "5.37.0",
10524
+ baseBitType: BitType2.warning,
10525
+ description: "Warning collapsible bit, used to create collapsible warnings in articles or books",
10526
+ tags: [
10527
+ {
10528
+ key: ConfigKey.property_isCollapsible,
10529
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
10530
+ format: TagFormat.boolean,
10531
+ defaultValue: "true"
10532
+ }
10533
+ ]
10301
10534
  },
10302
10535
  [BitType2.dangerCollapsible]: {
10303
10536
  since: "1.21.0",
10304
- baseBitType: BitType2.article,
10305
- description: "Danger collapsible bit, used to create collapsible danger sections in articles or books"
10537
+ deprecated: "5.37.0",
10538
+ baseBitType: BitType2.danger,
10539
+ description: "Danger collapsible bit, used to create collapsible danger sections in articles or books",
10540
+ tags: [
10541
+ {
10542
+ key: ConfigKey.property_isCollapsible,
10543
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
10544
+ format: TagFormat.boolean,
10545
+ defaultValue: "true"
10546
+ }
10547
+ ]
10306
10548
  },
10307
10549
  [BitType2.noteCollapsible]: {
10308
10550
  since: "1.21.0",
10309
- baseBitType: BitType2.article,
10310
- description: "Note collapsible bit, used to create collapsible notes in articles or books"
10551
+ deprecated: "5.37.0",
10552
+ baseBitType: BitType2.note,
10553
+ description: "Note collapsible bit, used to create collapsible notes in articles or books",
10554
+ tags: [
10555
+ {
10556
+ key: ConfigKey.property_isCollapsible,
10557
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
10558
+ format: TagFormat.boolean,
10559
+ defaultValue: "true"
10560
+ }
10561
+ ]
10311
10562
  },
10312
10563
  [BitType2.exampleCollapsible]: {
10313
10564
  since: "1.21.0",
10314
- baseBitType: BitType2.article,
10315
- description: "Example collapsible bit, used to create collapsible examples in articles or books"
10565
+ deprecated: "5.37.0",
10566
+ baseBitType: BitType2.example,
10567
+ description: "Example collapsible bit, used to create collapsible examples in articles or books",
10568
+ tags: [
10569
+ {
10570
+ key: ConfigKey.property_isCollapsible,
10571
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
10572
+ format: TagFormat.boolean,
10573
+ defaultValue: "true"
10574
+ }
10575
+ ]
10316
10576
  },
10317
10577
  [BitType2.hintCollapsible]: {
10318
10578
  since: "1.21.0",
10319
- baseBitType: BitType2.article,
10320
- description: "Hint collapsible bit, used to create collapsible hints in articles or books"
10579
+ deprecated: "5.37.0",
10580
+ baseBitType: BitType2.hint,
10581
+ description: "Hint collapsible bit, used to create collapsible hints in articles or books",
10582
+ tags: [
10583
+ {
10584
+ key: ConfigKey.property_isCollapsible,
10585
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
10586
+ format: TagFormat.boolean,
10587
+ defaultValue: "true"
10588
+ }
10589
+ ]
10321
10590
  },
10322
10591
  [BitType2.bugCollapsible]: {
10323
10592
  since: "1.21.0",
10324
- baseBitType: BitType2.article,
10325
- description: "Bug collapsible bit, used to create collapsible bug reports in articles or books"
10593
+ deprecated: "5.37.0",
10594
+ baseBitType: BitType2.bug,
10595
+ description: "Bug collapsible bit, used to create collapsible bug reports in articles or books",
10596
+ tags: [
10597
+ {
10598
+ key: ConfigKey.property_isCollapsible,
10599
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
10600
+ format: TagFormat.boolean,
10601
+ defaultValue: "true"
10602
+ }
10603
+ ]
10326
10604
  },
10327
10605
  [BitType2.platformPath]: {
10328
10606
  since: "3.14.1",
@@ -10544,8 +10822,17 @@ var BITS = {
10544
10822
  },
10545
10823
  [BitType2.extractorPageCollapsible]: {
10546
10824
  since: "1.30.0",
10825
+ deprecated: "5.37.0",
10547
10826
  baseBitType: BitType2.extractorPage,
10548
- description: "Collapsible extractor page bit, used to extract pages from images with collapsible functionality"
10827
+ description: "Collapsible extractor page bit, used to extract pages from images with collapsible functionality",
10828
+ tags: [
10829
+ {
10830
+ key: ConfigKey.property_isCollapsible,
10831
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
10832
+ format: TagFormat.boolean,
10833
+ defaultValue: "true"
10834
+ }
10835
+ ]
10549
10836
  },
10550
10837
  [BitType2.extractorPageWithBlocks]: {
10551
10838
  since: "1.5.21",
@@ -10554,8 +10841,17 @@ var BITS = {
10554
10841
  },
10555
10842
  [BitType2.extractorPageWithBlocksCollapsible]: {
10556
10843
  since: "1.30.0",
10844
+ deprecated: "5.37.0",
10557
10845
  baseBitType: BitType2.extractorPageWithBlocks,
10558
- description: "Collapsible extractor page with blocks bit, used to extract pages with blocks from images with collapsible functionality"
10846
+ description: "Collapsible extractor page with blocks bit, used to extract pages with blocks from images with collapsible functionality",
10847
+ tags: [
10848
+ {
10849
+ key: ConfigKey.property_isCollapsible,
10850
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
10851
+ format: TagFormat.boolean,
10852
+ defaultValue: "true"
10853
+ }
10854
+ ]
10559
10855
  },
10560
10856
  [BitType2.extractorConfiguration]: {
10561
10857
  since: "1.7.1",
@@ -10595,8 +10891,17 @@ var BITS = {
10595
10891
  },
10596
10892
  [BitType2.extractorImageCollapsible]: {
10597
10893
  since: "4.3.0",
10894
+ deprecated: "5.37.0",
10598
10895
  baseBitType: BitType2.extractorImage,
10599
- description: "Collapsible extractor images bit, used for images extracted from PDFs"
10896
+ description: "Collapsible extractor images bit, used for images extracted from PDFs",
10897
+ tags: [
10898
+ {
10899
+ key: ConfigKey.property_isCollapsible,
10900
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
10901
+ format: TagFormat.boolean,
10902
+ defaultValue: "true"
10903
+ }
10904
+ ]
10600
10905
  },
10601
10906
  [BitType2.extractorBlueprint]: {
10602
10907
  since: "5.12.0",
@@ -10733,8 +11038,17 @@ var BITS = {
10733
11038
  },
10734
11039
  [BitType2.extractorPageNumberCollapsible]: {
10735
11040
  since: "1.30.0",
11041
+ deprecated: "5.37.0",
10736
11042
  baseBitType: BitType2.extractorPageNumber,
10737
- description: "Collapsible extractor page number bit, used to define page numbers in extractor pages with collapsible functionality"
11043
+ description: "Collapsible extractor page number bit, used to define page numbers in extractor pages with collapsible functionality",
11044
+ tags: [
11045
+ {
11046
+ key: ConfigKey.property_isCollapsible,
11047
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
11048
+ format: TagFormat.boolean,
11049
+ defaultValue: "true"
11050
+ }
11051
+ ]
10738
11052
  },
10739
11053
  [BitType2.extractorPageHeader]: {
10740
11054
  since: "1.5.21",
@@ -10743,8 +11057,17 @@ var BITS = {
10743
11057
  },
10744
11058
  [BitType2.extractorPageHeaderCollapsible]: {
10745
11059
  since: "1.30.0",
11060
+ deprecated: "5.37.0",
10746
11061
  baseBitType: BitType2.extractorPageHeader,
10747
- description: "Collapsible extractor page header bit, used to define headers in extractor pages with collapsible functionality"
11062
+ description: "Collapsible extractor page header bit, used to define headers in extractor pages with collapsible functionality",
11063
+ tags: [
11064
+ {
11065
+ key: ConfigKey.property_isCollapsible,
11066
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
11067
+ format: TagFormat.boolean,
11068
+ defaultValue: "true"
11069
+ }
11070
+ ]
10748
11071
  },
10749
11072
  [BitType2.extractorPageFooter]: {
10750
11073
  since: "1.5.21",
@@ -10753,8 +11076,17 @@ var BITS = {
10753
11076
  },
10754
11077
  [BitType2.extractorPageFooterCollapsible]: {
10755
11078
  since: "1.30.0",
11079
+ deprecated: "5.37.0",
10756
11080
  baseBitType: BitType2.extractorPageFooter,
10757
- description: "Collapsible extractor page footer bit, used to define footers in extractor pages with collapsible functionality"
11081
+ description: "Collapsible extractor page footer bit, used to define footers in extractor pages with collapsible functionality",
11082
+ tags: [
11083
+ {
11084
+ key: ConfigKey.property_isCollapsible,
11085
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
11086
+ format: TagFormat.boolean,
11087
+ defaultValue: "true"
11088
+ }
11089
+ ]
10758
11090
  },
10759
11091
  [BitType2.pageOpenBook]: {
10760
11092
  since: "1.5.10",
@@ -11044,8 +11376,17 @@ var BITS = {
11044
11376
  },
11045
11377
  [BitType2.definitionListCollapsible]: {
11046
11378
  since: "5.25.0",
11379
+ deprecated: "5.37.0",
11047
11380
  baseBitType: BitType2.definitionList,
11048
- description: "Collapsible definition list bit, used to create collapsible lists of definitions in articles or books"
11381
+ description: "Collapsible definition list bit, used to create collapsible lists of definitions in articles or books",
11382
+ tags: [
11383
+ {
11384
+ key: ConfigKey.property_isCollapsible,
11385
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
11386
+ format: TagFormat.boolean,
11387
+ defaultValue: "true"
11388
+ }
11389
+ ]
11049
11390
  },
11050
11391
  [BitType2.standardDefinitionListNormative]: {
11051
11392
  since: "5.24.0",
@@ -11269,13 +11610,31 @@ var BITS = {
11269
11610
  },
11270
11611
  [BitType2.smartStandardImageFigureNormativeCollapsible]: {
11271
11612
  since: "1.28.0",
11613
+ deprecated: "5.37.0",
11272
11614
  baseBitType: BitType2.smartStandardImageFigureNormative,
11273
- description: "Collapsible smart standard normative image figure bit, used to create collapsible smart standard normative image figures in articles or books"
11615
+ description: "Collapsible smart standard normative image figure bit, used to create collapsible smart standard normative image figures in articles or books",
11616
+ tags: [
11617
+ {
11618
+ key: ConfigKey.property_isCollapsible,
11619
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
11620
+ format: TagFormat.boolean,
11621
+ defaultValue: "true"
11622
+ }
11623
+ ]
11274
11624
  },
11275
11625
  [BitType2.smartStandardImageFigureNonNormativeCollapsible]: {
11276
11626
  since: "1.28.0",
11627
+ deprecated: "5.37.0",
11277
11628
  baseBitType: BitType2.smartStandardImageFigureNonNormative,
11278
- description: "Collapsible smart standard non-normative image figure bit, used to create collapsible smart standard non-normative image figures in articles or books"
11629
+ description: "Collapsible smart standard non-normative image figure bit, used to create collapsible smart standard non-normative image figures in articles or books",
11630
+ tags: [
11631
+ {
11632
+ key: ConfigKey.property_isCollapsible,
11633
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
11634
+ format: TagFormat.boolean,
11635
+ defaultValue: "true"
11636
+ }
11637
+ ]
11279
11638
  },
11280
11639
  [BitType2.imageLandscape]: {
11281
11640
  since: "1.3.0",
@@ -11285,7 +11644,13 @@ var BITS = {
11285
11644
  [BitType2.imageMood]: {
11286
11645
  since: "1.3.0",
11287
11646
  baseBitType: BitType2.image,
11288
- description: "Image mood bit, used to create mood images in articles or books"
11647
+ description: "Image mood bit, used to create mood images in articles or books",
11648
+ tags: [
11649
+ {
11650
+ key: ConfigKey.group_accessibilityDecorative,
11651
+ description: "Accessibility tags, defaulting to a decorative image"
11652
+ }
11653
+ ]
11289
11654
  },
11290
11655
  [BitType2.imagePortrait]: {
11291
11656
  since: "1.3.0",
@@ -11305,6 +11670,10 @@ var BITS = {
11305
11670
  {
11306
11671
  key: ConfigKey.group_imageNoZoom,
11307
11672
  description: "Image no zoom tags for images, used to define whether images should have zoom functionality"
11673
+ },
11674
+ {
11675
+ key: ConfigKey.group_accessibilityDecorative,
11676
+ description: "Accessibility tags, defaulting to a decorative image"
11308
11677
  }
11309
11678
  ],
11310
11679
  resourceAttachmentAllowed: false
@@ -11312,7 +11681,13 @@ var BITS = {
11312
11681
  [BitType2.imageSeparatorAlt]: {
11313
11682
  since: "1.16.0",
11314
11683
  baseBitType: BitType2.imageSeparator,
11315
- description: "Alternative image separator bit, used to create alternative separators in articles or books"
11684
+ description: "Alternative image separator bit, used to create alternative separators in articles or books",
11685
+ tags: [
11686
+ {
11687
+ key: ConfigKey.group_accessibilityDecorative,
11688
+ description: "Accessibility tags, defaulting to a decorative image"
11689
+ }
11690
+ ]
11316
11691
  },
11317
11692
  [BitType2.imageScreenshot]: {
11318
11693
  since: "1.3.0",
@@ -11487,43 +11862,115 @@ var BITS = {
11487
11862
  },
11488
11863
  [BitType2.smartStandardTableImageNormativeCollapsible]: {
11489
11864
  since: "1.28.0",
11865
+ deprecated: "5.37.0",
11490
11866
  baseBitType: BitType2.smartStandardTableImageNormative,
11491
- description: "Collapsible smart standard normative table image bit, used to create collapsible smart standard normative images in tables in articles or books"
11867
+ description: "Collapsible smart standard normative table image bit, used to create collapsible smart standard normative images in tables in articles or books",
11868
+ tags: [
11869
+ {
11870
+ key: ConfigKey.property_isCollapsible,
11871
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
11872
+ format: TagFormat.boolean,
11873
+ defaultValue: "true"
11874
+ }
11875
+ ]
11492
11876
  },
11493
11877
  [BitType2.smartStandardTableImageNonNormativeCollapsible]: {
11494
11878
  since: "1.28.0",
11879
+ deprecated: "5.37.0",
11495
11880
  baseBitType: BitType2.smartStandardTableImageNonNormative,
11496
- description: "Collapsible smart standard non-normative table image bit, used to create collapsible smart standard non-normative images in tables in articles or books"
11881
+ description: "Collapsible smart standard non-normative table image bit, used to create collapsible smart standard non-normative images in tables in articles or books",
11882
+ tags: [
11883
+ {
11884
+ key: ConfigKey.property_isCollapsible,
11885
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
11886
+ format: TagFormat.boolean,
11887
+ defaultValue: "true"
11888
+ }
11889
+ ]
11497
11890
  },
11498
11891
  [BitType2.smartStandardRemarkTableImageNormativeCollapsible]: {
11499
11892
  since: "1.28.0",
11893
+ deprecated: "5.37.0",
11500
11894
  baseBitType: BitType2.smartStandardRemarkTableImageNormative,
11501
- description: "Collapsible smart standard normative remark table image bit, used to create collapsible smart standard normative remark images in tables in articles or books"
11895
+ description: "Collapsible smart standard normative remark table image bit, used to create collapsible smart standard normative remark images in tables in articles or books",
11896
+ tags: [
11897
+ {
11898
+ key: ConfigKey.property_isCollapsible,
11899
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
11900
+ format: TagFormat.boolean,
11901
+ defaultValue: "true"
11902
+ }
11903
+ ]
11502
11904
  },
11503
11905
  [BitType2.smartStandardRemarkTableImageNonNormativeCollapsible]: {
11504
11906
  since: "1.28.0",
11907
+ deprecated: "5.37.0",
11505
11908
  baseBitType: BitType2.smartStandardRemarkTableImageNonNormative,
11506
- description: "Collapsible smart standard non-normative remark table image bit, used to create collapsible smart standard non-normative remark images in tables in articles or books"
11909
+ description: "Collapsible smart standard non-normative remark table image bit, used to create collapsible smart standard non-normative remark images in tables in articles or books",
11910
+ tags: [
11911
+ {
11912
+ key: ConfigKey.property_isCollapsible,
11913
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
11914
+ format: TagFormat.boolean,
11915
+ defaultValue: "true"
11916
+ }
11917
+ ]
11507
11918
  },
11508
11919
  [BitType2.smartStandardTableExtendedImageNormativeCollapsible]: {
11509
11920
  since: "1.28.0",
11921
+ deprecated: "5.37.0",
11510
11922
  baseBitType: BitType2.smartStandardTableExtendedImageNormative,
11511
- description: "Collapsible smart standard normative extended table image bit, used to create collapsible smart standard normative extended images in tables in articles or books"
11923
+ description: "Collapsible smart standard normative extended table image bit, used to create collapsible smart standard normative extended images in tables in articles or books",
11924
+ tags: [
11925
+ {
11926
+ key: ConfigKey.property_isCollapsible,
11927
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
11928
+ format: TagFormat.boolean,
11929
+ defaultValue: "true"
11930
+ }
11931
+ ]
11512
11932
  },
11513
11933
  [BitType2.smartStandardTableExtendedImageNonNormativeCollapsible]: {
11514
11934
  since: "1.28.0",
11935
+ deprecated: "5.37.0",
11515
11936
  baseBitType: BitType2.smartStandardTableExtendedImageNonNormative,
11516
- description: "Collapsible smart standard non-normative extended table image bit, used to create collapsible smart standard non-normative extended images in tables in articles or books"
11937
+ description: "Collapsible smart standard non-normative extended table image bit, used to create collapsible smart standard non-normative extended images in tables in articles or books",
11938
+ tags: [
11939
+ {
11940
+ key: ConfigKey.property_isCollapsible,
11941
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
11942
+ format: TagFormat.boolean,
11943
+ defaultValue: "true"
11944
+ }
11945
+ ]
11517
11946
  },
11518
11947
  [BitType2.smartStandardRemarkTableExtendedImageNormativeCollapsible]: {
11519
11948
  since: "1.28.0",
11949
+ deprecated: "5.37.0",
11520
11950
  baseBitType: BitType2.smartStandardRemarkTableExtendedImageNormative,
11521
- description: "Collapsible smart standard normative remark extended table image bit, used to create collapsible smart standard normative remark extended images in tables in articles or books"
11951
+ description: "Collapsible smart standard normative remark extended table image bit, used to create collapsible smart standard normative remark extended images in tables in articles or books",
11952
+ tags: [
11953
+ {
11954
+ key: ConfigKey.property_isCollapsible,
11955
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
11956
+ format: TagFormat.boolean,
11957
+ defaultValue: "true"
11958
+ }
11959
+ ]
11522
11960
  },
11523
11961
  [BitType2.smartStandardRemarkTableExtendedImageNonNormativeCollapsible]: {
11524
11962
  since: "1.28.0",
11963
+ deprecated: "5.37.0",
11525
11964
  baseBitType: BitType2.smartStandardRemarkTableExtendedImageNonNormative,
11526
- description: "Collapsible smart standard non-normative remark extended table image bit, used to create collapsible smart standard non-normative remark extended images in tables in articles or books"
11965
+ description: "Collapsible smart standard non-normative remark extended table image bit, used to create collapsible smart standard non-normative remark extended images in tables in articles or books",
11966
+ tags: [
11967
+ {
11968
+ key: ConfigKey.property_isCollapsible,
11969
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
11970
+ format: TagFormat.boolean,
11971
+ defaultValue: "true"
11972
+ }
11973
+ ]
11527
11974
  },
11528
11975
  [BitType2.imageLink]: {
11529
11976
  since: "1.3.0",
@@ -12004,8 +12451,17 @@ var BITS = {
12004
12451
  },
12005
12452
  [BitType2.smartStandardListItemCollapsible]: {
12006
12453
  since: "1.28.0",
12454
+ deprecated: "5.37.0",
12007
12455
  baseBitType: BitType2.smartStandardListItem,
12008
- description: "Collapsible smart standard list item bit, used to create collapsible smart standard list items in articles or books"
12456
+ description: "Collapsible smart standard list item bit, used to create collapsible smart standard list items in articles or books",
12457
+ tags: [
12458
+ {
12459
+ key: ConfigKey.property_isCollapsible,
12460
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
12461
+ format: TagFormat.boolean,
12462
+ defaultValue: "true"
12463
+ }
12464
+ ]
12009
12465
  },
12010
12466
  [BitType2.mark]: {
12011
12467
  since: "1.3.0",
@@ -12338,8 +12794,17 @@ var BITS = {
12338
12794
  },
12339
12795
  [BitType2.pageCollapsible]: {
12340
12796
  since: "1.30.0",
12797
+ deprecated: "5.37.0",
12341
12798
  baseBitType: BitType2.page,
12342
- description: "Collapsible page bit, used to create collapsible sections in pages"
12799
+ description: "Collapsible page bit, used to create collapsible sections in pages",
12800
+ tags: [
12801
+ {
12802
+ key: ConfigKey.property_isCollapsible,
12803
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
12804
+ format: TagFormat.boolean,
12805
+ defaultValue: "true"
12806
+ }
12807
+ ]
12343
12808
  },
12344
12809
  [BitType2.pageCoverImage]: {
12345
12810
  since: "1.22.0",
@@ -13314,43 +13779,115 @@ var BITS = {
13314
13779
  },
13315
13780
  [BitType2.smartStandardTableNormativeCollapsible]: {
13316
13781
  since: "1.28.0",
13782
+ deprecated: "5.37.0",
13317
13783
  baseBitType: BitType2.smartStandardTableNormative,
13318
- description: "Collapsible smart standard normative table bit, used to create collapsible smart standard normative tables in articles or books"
13784
+ description: "Collapsible smart standard normative table bit, used to create collapsible smart standard normative tables in articles or books",
13785
+ tags: [
13786
+ {
13787
+ key: ConfigKey.property_isCollapsible,
13788
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
13789
+ format: TagFormat.boolean,
13790
+ defaultValue: "true"
13791
+ }
13792
+ ]
13319
13793
  },
13320
13794
  [BitType2.smartStandardTableNonNormativeCollapsible]: {
13321
13795
  since: "1.28.0",
13796
+ deprecated: "5.37.0",
13322
13797
  baseBitType: BitType2.smartStandardTableNonNormative,
13323
- description: "Collapsible smart standard non-normative table bit, used to create collapsible smart standard non-normative tables in articles or books"
13798
+ description: "Collapsible smart standard non-normative table bit, used to create collapsible smart standard non-normative tables in articles or books",
13799
+ tags: [
13800
+ {
13801
+ key: ConfigKey.property_isCollapsible,
13802
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
13803
+ format: TagFormat.boolean,
13804
+ defaultValue: "true"
13805
+ }
13806
+ ]
13324
13807
  },
13325
13808
  [BitType2.smartStandardRemarkTableNormativeCollapsible]: {
13326
13809
  since: "1.28.0",
13810
+ deprecated: "5.37.0",
13327
13811
  baseBitType: BitType2.smartStandardRemarkTableNormative,
13328
- description: "Collapsible smart standard normative remark table bit, used to create collapsible smart standard normative remark tables in articles or books"
13812
+ description: "Collapsible smart standard normative remark table bit, used to create collapsible smart standard normative remark tables in articles or books",
13813
+ tags: [
13814
+ {
13815
+ key: ConfigKey.property_isCollapsible,
13816
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
13817
+ format: TagFormat.boolean,
13818
+ defaultValue: "true"
13819
+ }
13820
+ ]
13329
13821
  },
13330
13822
  [BitType2.smartStandardRemarkTableNonNormativeCollapsible]: {
13331
13823
  since: "1.28.0",
13824
+ deprecated: "5.37.0",
13332
13825
  baseBitType: BitType2.smartStandardRemarkTableNonNormative,
13333
- description: "Collapsible smart standard non-normative remark table bit, used to create collapsible smart standard non-normative remark tables in articles or books"
13826
+ description: "Collapsible smart standard non-normative remark table bit, used to create collapsible smart standard non-normative remark tables in articles or books",
13827
+ tags: [
13828
+ {
13829
+ key: ConfigKey.property_isCollapsible,
13830
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
13831
+ format: TagFormat.boolean,
13832
+ defaultValue: "true"
13833
+ }
13834
+ ]
13334
13835
  },
13335
13836
  [BitType2.smartStandardTableExtendedNormativeCollapsible]: {
13336
13837
  since: "1.28.0",
13838
+ deprecated: "5.37.0",
13337
13839
  baseBitType: BitType2.smartStandardTableExtendedNormative,
13338
- description: "Collapsible smart standard normative extended table bit, used to create collapsible smart standard normative extended tables in articles or books"
13840
+ description: "Collapsible smart standard normative extended table bit, used to create collapsible smart standard normative extended tables in articles or books",
13841
+ tags: [
13842
+ {
13843
+ key: ConfigKey.property_isCollapsible,
13844
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
13845
+ format: TagFormat.boolean,
13846
+ defaultValue: "true"
13847
+ }
13848
+ ]
13339
13849
  },
13340
13850
  [BitType2.smartStandardTableExtendedNonNormativeCollapsible]: {
13341
13851
  since: "1.28.0",
13852
+ deprecated: "5.37.0",
13342
13853
  baseBitType: BitType2.smartStandardTableExtendedNonNormative,
13343
- description: "Collapsible smart standard non-normative extended table bit, used to create collapsible smart standard non-normative extended tables in articles or books"
13854
+ description: "Collapsible smart standard non-normative extended table bit, used to create collapsible smart standard non-normative extended tables in articles or books",
13855
+ tags: [
13856
+ {
13857
+ key: ConfigKey.property_isCollapsible,
13858
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
13859
+ format: TagFormat.boolean,
13860
+ defaultValue: "true"
13861
+ }
13862
+ ]
13344
13863
  },
13345
13864
  [BitType2.smartStandardRemarkTableExtendedNormativeCollapsible]: {
13346
13865
  since: "1.28.0",
13866
+ deprecated: "5.37.0",
13347
13867
  baseBitType: BitType2.smartStandardRemarkTableExtendedNormative,
13348
- description: "Collapsible smart standard normative remark extended table bit, used to create collapsible smart standard normative remark extended tables in articles or books"
13868
+ description: "Collapsible smart standard normative remark extended table bit, used to create collapsible smart standard normative remark extended tables in articles or books",
13869
+ tags: [
13870
+ {
13871
+ key: ConfigKey.property_isCollapsible,
13872
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
13873
+ format: TagFormat.boolean,
13874
+ defaultValue: "true"
13875
+ }
13876
+ ]
13349
13877
  },
13350
13878
  [BitType2.smartStandardRemarkTableExtendedNonNormativeCollapsible]: {
13351
13879
  since: "1.28.0",
13880
+ deprecated: "5.37.0",
13352
13881
  baseBitType: BitType2.smartStandardRemarkTableExtendedNonNormative,
13353
- description: "Collapsible smart standard non-normative remark extended table bit, used to create collapsible smart standard non-normative remark extended tables in articles or books"
13882
+ description: "Collapsible smart standard non-normative remark extended table bit, used to create collapsible smart standard non-normative remark extended tables in articles or books",
13883
+ tags: [
13884
+ {
13885
+ key: ConfigKey.property_isCollapsible,
13886
+ description: "If true, the bit is collapsible (defaults true for this deprecated bit type)",
13887
+ format: TagFormat.boolean,
13888
+ defaultValue: "true"
13889
+ }
13890
+ ]
13354
13891
  },
13355
13892
  [BitType2.parameters]: {
13356
13893
  since: "1.18.0",
@@ -14062,11 +14599,13 @@ var BITS = {
14062
14599
  };
14063
14600
 
14064
14601
  // src/config/Config.ts
14602
+ var COLLAPSIBLE_BIT_TYPE_SUFFIX = "-collapsible";
14065
14603
  var Config = class {
14066
14604
  constructor() {
14067
14605
  __publicField(this, "bitLevelMin", 1);
14068
14606
  __publicField(this, "bitLevelMax", 7);
14069
14607
  __publicField(this, "bitCache", /* @__PURE__ */ new Map());
14608
+ __publicField(this, "migratedBitCache", /* @__PURE__ */ new Map());
14070
14609
  __publicField(this, "allResourcesCache");
14071
14610
  __publicField(this, "comboResourcesCache", /* @__PURE__ */ new Map());
14072
14611
  }
@@ -14082,6 +14621,29 @@ var Config = class {
14082
14621
  if (bitType?.startsWith("|")) bitType = bitType.substring(1);
14083
14622
  return (0, import_superenum16.Enum)(BitType2).fromValue(bitType) ?? BitType2._error;
14084
14623
  }
14624
+ /**
14625
+ * PLAN-017: Return the migration target for a deprecated `*-collapsible` bit type.
14626
+ *
14627
+ * Every `*-collapsible` bit type declares its non-collapsible cousin as its `baseBitType`, so the
14628
+ * target is read from the config rather than a hand-maintained table — a new `*-collapsible` bit
14629
+ * type is covered automatically.
14630
+ *
14631
+ * `BitType.collapsible` is the one exclusion: it has no non-collapsible cousin (its `baseBitType`
14632
+ * is `article`, which is not a migration target).
14633
+ *
14634
+ * @param bitType the bit type
14635
+ * @returns the bit type to migrate to, or undefined if the bit type does not migrate
14636
+ */
14637
+ getMigratedBitType(bitType) {
14638
+ const cached = this.migratedBitCache.get(bitType);
14639
+ if (cached !== void 0 || this.migratedBitCache.has(bitType)) return cached;
14640
+ let target;
14641
+ if (bitType !== BitType2.collapsible && bitType.endsWith(COLLAPSIBLE_BIT_TYPE_SUFFIX)) {
14642
+ target = BITS[bitType]?.baseBitType;
14643
+ }
14644
+ this.migratedBitCache.set(bitType, target);
14645
+ return target;
14646
+ }
14085
14647
  /**
14086
14648
  * Check if a bit type is and instance of the given root bit type.
14087
14649
  *
@@ -14404,7 +14966,7 @@ var instance2 = new Config();
14404
14966
  // src/generated/package_info.ts
14405
14967
  var PACKAGE_INFO = {
14406
14968
  "name": "@gmb/bitmark-parser-generator",
14407
- "version": "5.36.0",
14969
+ "version": "5.38.0",
14408
14970
  "author": "Get More Brain Ltd",
14409
14971
  "license": "ISC",
14410
14972
  "description": "A bitmark parser and generator using Peggy.js"
@@ -14758,6 +15320,10 @@ var NodeType = {
14758
15320
  // unknown
14759
15321
  __isDefaultExample: "__isDefaultExample",
14760
15322
  __typeAlias: "__typeAlias",
15323
+ accessibilityGroupTag: "accessibilityGroupTag",
15324
+ accessibilityGroupTagValue: "accessibilityGroupTagValue",
15325
+ accessibilityTag: "accessibilityTag",
15326
+ accessibilityTagValue: "accessibilityTagValue",
14761
15327
  action: "action",
14762
15328
  actionValue: "actionValue",
14763
15329
  activityType: "activityType",
@@ -15463,6 +16029,8 @@ var NodeType = {
15463
16029
  type: "type",
15464
16030
  unit: "unit",
15465
16031
  unitAbbr: "unitAbbr",
16032
+ unitAbbrPlural: "unitAbbrPlural",
16033
+ unitPlural: "unitPlural",
15466
16034
  url: "url",
15467
16035
  validationDate: "validationDate",
15468
16036
  validationDateValue: "validationDateValue",
@@ -27080,6 +27648,12 @@ var BaseBuilder = class {
27080
27648
  case TagFormat.plainText:
27081
27649
  if (instance6.asNumber(v) != null) v = `${v}`;
27082
27650
  return stringUtils.isString(v) ? stringUtils.trimmedString(v) : void 0;
27651
+ case TagFormat.enumeration: {
27652
+ if (instance6.asNumber(v) != null) v = `${v}`;
27653
+ const enumValue = stringUtils.isString(v) ? stringUtils.trimmedString(v) : void 0;
27654
+ if (enumValue == null || enumValue === "") return propertyConfig?.defaultValue ?? "";
27655
+ return enumValue;
27656
+ }
27083
27657
  case TagFormat.number:
27084
27658
  return instance6.asNumber(v);
27085
27659
  case TagFormat.boolean:
@@ -28638,8 +29212,18 @@ var Builder = class extends BaseBuilder {
28638
29212
  */
28639
29213
  buildBit(data, options) {
28640
29214
  data = structuredClone(data);
29215
+ const migratedBitType = instance2.getMigratedBitType(data.bitType);
29216
+ if (migratedBitType) {
29217
+ data.bitType = migratedBitType;
29218
+ data.isCollapsible = data.isCollapsible ?? true;
29219
+ }
28641
29220
  const bitType = data.bitType;
28642
29221
  const bitConfig = instance2.getBitConfig(bitType);
29222
+ const isCollapsibleDefaultsTrue = bitConfig.tags[ConfigKey.property_isCollapsible]?.defaultValue === "true";
29223
+ const accessibilityGroupTag = this.resolveAccessibilityGroupTag(
29224
+ bitConfig,
29225
+ data.accessibilityGroupTag
29226
+ );
28643
29227
  const deprecatedTextFormat = (0, import_superenum30.Enum)(DeprecatedTextFormat).fromValue(data.textFormat);
28644
29228
  let textFormat = (0, import_superenum30.Enum)(TextFormat2).fromValue(data.textFormat) ?? bitConfig.textFormatDefault;
28645
29229
  if (deprecatedTextFormat === DeprecatedTextFormat.bitmarkMinusMinus) {
@@ -28875,6 +29459,13 @@ var Builder = class extends BaseBuilder {
28875
29459
  slug: this.toAstProperty(bitType, ConfigKey.property_slug, data.slug, options),
28876
29460
  tag: this.toAstProperty(bitType, ConfigKey.property_tag, data.tag, options),
28877
29461
  groupTag: this.buildGroupTags(context, data.groupTag),
29462
+ accessibilityTag: this.toAstProperty(
29463
+ bitType,
29464
+ ConfigKey.property_accessibilityTag,
29465
+ data.accessibilityTag,
29466
+ options
29467
+ ),
29468
+ accessibilityGroupTag: this.buildGroupTags(context, accessibilityGroupTag),
28878
29469
  reviewTag: this.toAstProperty(bitType, ConfigKey.property_reviewTag, data.reviewTag, options),
28879
29470
  reviewerTag: this.toAstProperty(
28880
29471
  bitType,
@@ -29772,7 +30363,7 @@ var Builder = class extends BaseBuilder {
29772
30363
  isCollapsible: this.toAstProperty(
29773
30364
  bitType,
29774
30365
  ConfigKey.property_isCollapsible,
29775
- data.isCollapsible,
30366
+ data.isCollapsible ?? (isCollapsibleDefaultsTrue ? true : void 0),
29776
30367
  options
29777
30368
  ),
29778
30369
  anchor: data.anchor,
@@ -29927,6 +30518,26 @@ var Builder = class extends BaseBuilder {
29927
30518
  });
29928
30519
  return node;
29929
30520
  }
30521
+ /**
30522
+ * Resolve the accessibilityGroupTag data, materialising the bit type's default when absent.
30523
+ *
30524
+ * PLAN-019: `group_accessibilityDecorative` re-declares `@accessibilityGroupTag` with a
30525
+ * `defaultValue`, and its chained `@accessibilityTag` likewise. When the bit carries no
30526
+ * authored value, synthesize the default group so it reaches both generators. An authored
30527
+ * value always wins.
30528
+ *
30529
+ * @param bitConfig - the resolved config for the bit
30530
+ * @param data - authored data for the node, if any
30531
+ * @returns
30532
+ */
30533
+ resolveAccessibilityGroupTag(bitConfig, data) {
30534
+ if (data != null && (!Array.isArray(data) || data.length > 0)) return data;
30535
+ const groupConfig = bitConfig.tags[ConfigKey.property_accessibilityGroupTag];
30536
+ const name = groupConfig?.defaultValue;
30537
+ if (name == null) return data;
30538
+ const tag = groupConfig?.chain?.[ConfigKey.property_accessibilityTag]?.defaultValue;
30539
+ return [{ name, tags: tag != null ? [tag] : [] }];
30540
+ }
29930
30541
  /**
29931
30542
  * Build groupTag[] node
29932
30543
  *
@@ -30541,7 +31152,9 @@ var Builder = class extends BaseBuilder {
30541
31152
  ingredient: this.handleJsonText(context, TextLocation2.tag, data.ingredient),
30542
31153
  quantity: data.quantity ?? 0,
30543
31154
  unit: data.unit ?? "",
31155
+ unitPlural: data.unitPlural ?? "",
30544
31156
  unitAbbr: data.unitAbbr ?? "",
31157
+ unitAbbrPlural: data.unitAbbrPlural ?? "",
30545
31158
  decimalPlaces: data.decimalPlaces ?? 1,
30546
31159
  disableCalculation: data.disableCalculation ?? false,
30547
31160
  item: this.handleJsonText(context, TextLocation2.tag, data.item),
@@ -31138,11 +31751,22 @@ var Builder = class extends BaseBuilder {
31138
31751
  */
31139
31752
  buildServings(_context, data) {
31140
31753
  if (!data) return void 0;
31141
- const { servings, unit, unitAbbr, decimalPlaces, disableCalculation, hint } = data;
31754
+ const {
31755
+ servings,
31756
+ unit,
31757
+ unitPlural,
31758
+ unitAbbr,
31759
+ unitAbbrPlural,
31760
+ decimalPlaces,
31761
+ disableCalculation,
31762
+ hint
31763
+ } = data;
31142
31764
  const node = {
31143
31765
  servings: servings ?? 0,
31144
31766
  unit: unit ?? "",
31767
+ unitPlural: unitPlural ?? "",
31145
31768
  unitAbbr: unitAbbr ?? "",
31769
+ unitAbbrPlural: unitAbbrPlural ?? "",
31146
31770
  decimalPlaces: decimalPlaces ?? 1,
31147
31771
  disableCalculation: disableCalculation ?? false,
31148
31772
  hint: hint ?? ""
@@ -31996,6 +32620,29 @@ var BitmarkGenerator = class extends AstWalkerGenerator {
31996
32620
  }
31997
32621
  return false;
31998
32622
  }
32623
+ // bitmarkAst -> bits -> bitsValue -> accessibilityGroupTag
32624
+ enter_accessibilityGroupTag(node, route) {
32625
+ const accessibilityGroupTag = node.value;
32626
+ const parent = this.getParentNode(route);
32627
+ if (parent?.key !== NodeType.bitsValue) return true;
32628
+ for (const gt of accessibilityGroupTag) {
32629
+ const { name, tags: tags2 } = gt;
32630
+ this.writeProperty("accessibilityGroupTag", name, route, {
32631
+ format: TagFormat.plainText,
32632
+ writeEmpty: true
32633
+ });
32634
+ if (tags2 && tags2.length > 0) {
32635
+ for (const t of tags2) {
32636
+ this.writeProperty("accessibilityTag", t, route, {
32637
+ format: TagFormat.plainText,
32638
+ writeEmpty: true,
32639
+ forceChain: true
32640
+ });
32641
+ }
32642
+ }
32643
+ }
32644
+ return false;
32645
+ }
31999
32646
  // bitmarkAst -> bits -> bitsValue -> labelTrue / labelFalse
32000
32647
  leaf_labelTrue(node, route) {
32001
32648
  const value = node.value;
@@ -32079,7 +32726,16 @@ var BitmarkGenerator = class extends AstWalkerGenerator {
32079
32726
  const nodeValue = node.value;
32080
32727
  const parent = this.getParentNode(route);
32081
32728
  if (parent?.key !== NodeType.bitsValue) return true;
32082
- const { servings, unit, unitAbbr, decimalPlaces, disableCalculation, hint } = nodeValue;
32729
+ const {
32730
+ servings,
32731
+ unit,
32732
+ unitPlural,
32733
+ unitAbbr,
32734
+ unitAbbrPlural,
32735
+ decimalPlaces,
32736
+ disableCalculation,
32737
+ hint
32738
+ } = nodeValue;
32083
32739
  this.writeProperty("servings", servings, route, {
32084
32740
  format: TagFormat.plainText
32085
32741
  });
@@ -32089,12 +32745,24 @@ var BitmarkGenerator = class extends AstWalkerGenerator {
32089
32745
  forceChain: true
32090
32746
  });
32091
32747
  }
32748
+ if (unitPlural != null) {
32749
+ this.writeProperty("unitPlural", unitPlural, route, {
32750
+ format: TagFormat.plainText,
32751
+ forceChain: true
32752
+ });
32753
+ }
32092
32754
  if (unitAbbr != null) {
32093
32755
  this.writeProperty("unitAbbr", unitAbbr, route, {
32094
32756
  format: TagFormat.plainText,
32095
32757
  forceChain: true
32096
32758
  });
32097
32759
  }
32760
+ if (unitAbbrPlural != null) {
32761
+ this.writeProperty("unitAbbrPlural", unitAbbrPlural, route, {
32762
+ format: TagFormat.plainText,
32763
+ forceChain: true
32764
+ });
32765
+ }
32098
32766
  if (decimalPlaces != null) {
32099
32767
  this.writeProperty("decimalPlaces", decimalPlaces, route, {
32100
32768
  format: TagFormat.plainText,
@@ -32941,10 +33609,18 @@ var BitmarkGenerator = class extends AstWalkerGenerator {
32941
33609
  this.writeProperty("unit", ingredient.unit, route, {
32942
33610
  format: TagFormat.plainText
32943
33611
  });
33612
+ if (ingredient.unitPlural != null)
33613
+ this.writeProperty("unitPlural", ingredient.unitPlural, route, {
33614
+ format: TagFormat.plainText
33615
+ });
32944
33616
  if (ingredient.unitAbbr != null)
32945
33617
  this.writeProperty("unitAbbr", ingredient.unitAbbr, route, {
32946
33618
  format: TagFormat.plainText
32947
33619
  });
33620
+ if (ingredient.unitAbbrPlural != null)
33621
+ this.writeProperty("unitAbbrPlural", ingredient.unitAbbrPlural, route, {
33622
+ format: TagFormat.plainText
33623
+ });
32948
33624
  if (ingredient.decimalPlaces != null)
32949
33625
  this.writeProperty("decimalPlaces", ingredient.decimalPlaces, route, {
32950
33626
  format: TagFormat.plainText
@@ -34723,6 +35399,29 @@ var JsonGenerator = class extends AstWalkerGenerator {
34723
35399
  }
34724
35400
  return false;
34725
35401
  }
35402
+ // bitmarkAst -> bits -> bitsValue -> isCollapsible
35403
+ /**
35404
+ * `isCollapsible` is emitted only when explicitly set on the bit — an explicit
35405
+ * `true`/`false` in the source is emitted as-is, and an absent tag yields no
35406
+ * JSON key (the tag is nullable in the config: no default, unset when absent).
35407
+ *
35408
+ * Two exceptions always carry a value: chapter bits default to `false`
35409
+ * (`defaultValue: 'false'` in the bit config, applied in `cleanBitJson()`),
35410
+ * and the deprecated `*-collapsible` bit types default to `true` (materialised
35411
+ * into the AST by the Builder).
35412
+ *
35413
+ * Defining these handlers suppresses the generic property handlers that
35414
+ * `generatePropertyHandlers()` would otherwise install for this tag.
35415
+ */
35416
+ leaf_isCollapsible(node, route) {
35417
+ const parent = this.getParentNode(route);
35418
+ if (parent?.key !== NodeType.bitsValue) return false;
35419
+ if (node.value != null) this.bitJson.isCollapsible = node.value === true;
35420
+ return false;
35421
+ }
35422
+ enter_isCollapsible(node, route) {
35423
+ return this.leaf_isCollapsible(node, route);
35424
+ }
34726
35425
  // bitmarkAst -> bits -> bitsValue -> markConfig
34727
35426
  enter_markConfig(_node, _route) {
34728
35427
  return true;
@@ -38557,7 +39256,9 @@ function parseIngredients(_context, _bitType, cardSet) {
38557
39256
  title: titleArray,
38558
39257
  __instructionString,
38559
39258
  unit,
39259
+ unitPlural,
38560
39260
  unitAbbr,
39261
+ unitAbbrPlural,
38561
39262
  decimalPlaces,
38562
39263
  disableCalculation,
38563
39264
  cardBodyStr,
@@ -38587,7 +39288,9 @@ function parseIngredients(_context, _bitType, cardSet) {
38587
39288
  ingredient: cardBodyStr,
38588
39289
  quantity,
38589
39290
  unit: unit ?? instance3.EMPTY_STRING,
39291
+ unitPlural,
38590
39292
  unitAbbr: unitAbbr ?? instance3.EMPTY_STRING,
39293
+ unitAbbrPlural,
38591
39294
  decimalPlaces: decimalPlaces ?? 1,
38592
39295
  disableCalculation,
38593
39296
  ...tags2
@@ -39089,19 +39792,25 @@ function handleStandardStringExample(context, _content, example, target) {
39089
39792
  }
39090
39793
 
39091
39794
  // src/parser/bitmark/peg/contentProcessors/GroupTagChainContentProcessor.ts
39092
- function groupTagChainContentProcessor(context, _contentDepth, tagsConfig, content, target) {
39795
+ var GROUP_TAG = { groupKey: "groupTag", memberKey: "tag" };
39796
+ var ACCESSIBILITY_GROUP_TAG = {
39797
+ groupKey: "accessibilityGroupTag",
39798
+ memberKey: "accessibilityTag"
39799
+ };
39800
+ function groupTagChainContentProcessor(context, _contentDepth, tagsConfig, content, target, keys = GROUP_TAG) {
39093
39801
  const { value } = content;
39094
- if (context.DEBUG_CHAIN_CONTENT) context.debugPrint("groupTag content", content);
39802
+ const { groupKey, memberKey } = keys;
39803
+ if (context.DEBUG_CHAIN_CONTENT) context.debugPrint(`${groupKey} content`, content);
39095
39804
  const tags2 = context.bitContentProcessor(ContentDepth.Chain, tagsConfig, content.chain);
39096
- if (context.DEBUG_CHAIN_TAGS) context.debugPrint("groupTag TAGS", tags2);
39097
- const { tag } = tags2;
39805
+ if (context.DEBUG_CHAIN_TAGS) context.debugPrint(`${groupKey} TAGS`, tags2);
39806
+ const memberTags = tags2[memberKey];
39098
39807
  const name = stringUtils.trimmedString(value) ?? "";
39099
39808
  const node = {
39100
39809
  name,
39101
- tags: tag ?? []
39810
+ tags: memberTags ?? []
39102
39811
  };
39103
- if (!Array.isArray(target.groupTag)) target.groupTag = [];
39104
- target.groupTag.push(node);
39812
+ if (!Array.isArray(target[groupKey])) target[groupKey] = [];
39813
+ target[groupKey].push(node);
39105
39814
  }
39106
39815
 
39107
39816
  // src/parser/bitmark/peg/contentProcessors/ImageSourceChainContentProcessor.ts
@@ -39258,12 +39967,22 @@ function servingsChainContentProcessor(context, _contentDepth, tagsConfig, conte
39258
39967
  if (context.DEBUG_CHAIN_CONTENT) context.debugPrint("servings content", content);
39259
39968
  const tags2 = context.bitContentProcessor(ContentDepth.Chain, tagsConfig, content.chain);
39260
39969
  if (context.DEBUG_CHAIN_TAGS) context.debugPrint("servings TAGS", tags2);
39261
- const { unit, unitAbbr, decimalPlaces, disableCalculation, __hintString } = tags2;
39970
+ const {
39971
+ unit,
39972
+ unitPlural,
39973
+ unitAbbr,
39974
+ unitAbbrPlural,
39975
+ decimalPlaces,
39976
+ disableCalculation,
39977
+ __hintString
39978
+ } = tags2;
39262
39979
  const servings = instance6.asNumber(content.value) ?? 1;
39263
39980
  const node = {
39264
39981
  servings,
39265
39982
  unit,
39983
+ unitPlural,
39266
39984
  unitAbbr,
39985
+ unitAbbrPlural,
39267
39986
  decimalPlaces: decimalPlaces ?? 1,
39268
39987
  disableCalculation,
39269
39988
  hint: __hintString
@@ -39311,6 +40030,16 @@ function propertyContentProcessor(context, contentDepth, tagsConfig, content, ta
39311
40030
  } else if (configKey === ConfigKey.property_groupTag) {
39312
40031
  groupTagChainContentProcessor(context, contentDepth, propertyConfig.chain, content, target);
39313
40032
  return;
40033
+ } else if (configKey === ConfigKey.property_accessibilityGroupTag) {
40034
+ groupTagChainContentProcessor(
40035
+ context,
40036
+ contentDepth,
40037
+ propertyConfig.chain,
40038
+ content,
40039
+ target,
40040
+ ACCESSIBILITY_GROUP_TAG
40041
+ );
40042
+ return;
39314
40043
  } else if (configKey === ConfigKey.property_ratingLevelStart || configKey === ConfigKey.property_ratingLevelEnd) {
39315
40044
  ratingLevelChainContentProcessor(
39316
40045
  context,
@@ -39363,6 +40092,23 @@ function propertyContentProcessor(context, contentDepth, tagsConfig, content, ta
39363
40092
  location: TextLocation2.tag
39364
40093
  }
39365
40094
  );
40095
+ case TagFormat.enumeration: {
40096
+ const enumValue = instance3.unbreakscape(
40097
+ stringUtils.isString(v2) ? stringUtils.trimmedString(v2) : void 0,
40098
+ {
40099
+ format: TextFormat2.plainText,
40100
+ location: TextLocation2.tag
40101
+ }
40102
+ );
40103
+ if (enumValue == null || enumValue === "") return c.defaultValue ?? "";
40104
+ if (c.values && !c.values.includes(enumValue)) {
40105
+ context.addWarning(
40106
+ `Invalid value '${enumValue}' for property [@${tag}]. Valid values: ${c.values.join(" | ")}`,
40107
+ content
40108
+ );
40109
+ }
40110
+ return enumValue;
40111
+ }
39366
40112
  case TagFormat.number:
39367
40113
  return instance6.asNumber(
39368
40114
  instance3.unbreakscape(v2, {