@orbat-mapper/control-measures 0.2.0-alpha.10 → 0.2.0-alpha.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dist/{index-D3uCYKe3.d.mts → index-CsJcNxFQ.d.mts} +335 -69
  2. package/dist/index.d.mts +2 -2
  3. package/dist/index.mjs +1 -1
  4. package/dist/preview/index.d.mts +65 -10
  5. package/dist/preview/index.mjs +129 -18
  6. package/dist/{renderControlMeasure-BblcXXLp.mjs → renderControlMeasure-DHQO01PA.mjs} +1531 -615
  7. package/media/airborne-attack.svg +1 -1
  8. package/media/ambush.svg +1 -1
  9. package/media/antitank-ditch-completed.svg +1 -1
  10. package/media/antitank-ditch-under-construction.svg +1 -1
  11. package/media/antitank-wall.svg +1 -1
  12. package/media/area-of-operations.svg +1 -0
  13. package/media/assembly-area.svg +1 -0
  14. package/media/attack-by-fire.svg +1 -1
  15. package/media/attack-helicopter.svg +1 -1
  16. package/media/battle-handover-line.svg +1 -0
  17. package/media/battle-position.svg +1 -1
  18. package/media/block-arrow.svg +1 -1
  19. package/media/block-mission-task.svg +1 -1
  20. package/media/block.svg +1 -1
  21. package/media/boundary.svg +1 -1
  22. package/media/breach.svg +1 -1
  23. package/media/bypass.svg +1 -1
  24. package/media/canalize.svg +1 -1
  25. package/media/circle.svg +1 -1
  26. package/media/classic-arrow.svg +1 -1
  27. package/media/clear.svg +1 -1
  28. package/media/delay.svg +1 -1
  29. package/media/disrupt.svg +1 -1
  30. package/media/encirclement.svg +1 -1
  31. package/media/engineer-work-line.svg +1 -0
  32. package/media/final-protective-fire-left.svg +1 -1
  33. package/media/final-protective-fire-right.svg +1 -1
  34. package/media/fix.svg +1 -1
  35. package/media/flot.svg +1 -1
  36. package/media/fortified-area.svg +1 -1
  37. package/media/fortified-line.svg +1 -1
  38. package/media/generic-c2-line.svg +1 -0
  39. package/media/handover-line.svg +1 -0
  40. package/media/isolate.svg +1 -1
  41. package/media/joint-tactical-action-area.svg +1 -0
  42. package/media/landing-zone.svg +1 -0
  43. package/media/light-line.svg +1 -0
  44. package/media/line.svg +1 -1
  45. package/media/main-attack.svg +1 -1
  46. package/media/obstacle-bypass-difficult.svg +1 -1
  47. package/media/obstacle-bypass-easy.svg +1 -1
  48. package/media/obstacle-bypass-impossible.svg +1 -1
  49. package/media/phase-line.svg +1 -0
  50. package/media/pickup-zone.svg +1 -0
  51. package/media/polygon.svg +1 -1
  52. package/media/principal-direction-of-fire.svg +1 -1
  53. package/media/rectangle.svg +1 -1
  54. package/media/search-area.svg +1 -1
  55. package/media/strong-point.svg +1 -1
  56. package/media/support-by-fire.svg +1 -1
  57. package/media/supporting-attack.svg +1 -1
  58. package/media/turn.svg +1 -1
  59. package/package.json +1 -1
@@ -145,6 +145,18 @@ type FriendlyKey = `${FriendlyName}${Suffix}`;
145
145
  * this is resolved to canonical form.
146
146
  */
147
147
  type TextAmplifiers = Partial<Record<TextAmplifierKey | FriendlyKey, string>>;
148
+ /**
149
+ * Stable key for a non-amplifier generated label. The renderer assigns these
150
+ * from the label's part and per-part label ordinal when a generator has not
151
+ * supplied a doctrinal field key. Generators that can change a label's order
152
+ * should supply an explicit `labelPlacementKey` instead.
153
+ */
154
+ type GeneratedLabelKey = `label:${string}`;
155
+ /**
156
+ * User-adjusted anchor positions for doctrinal and generated text labels,
157
+ * keyed by a canonical `TextAmplifierKey` or a synthesized `GeneratedLabelKey`.
158
+ */
159
+ type AmplifierPlacements = Record<string, Position | undefined>;
148
160
  /** Amplifier values resolved to canonical doctrinal keys, as generators receive them. */
149
161
  type CanonicalTextAmplifiers = Readonly<Partial<Record<TextAmplifierKey, string>>>;
150
162
  /**
@@ -206,6 +218,14 @@ interface TextParamDescriptor extends BaseParamDescriptor {
206
218
  type: "text";
207
219
  placeholder?: string;
208
220
  maxLength?: number;
221
+ /**
222
+ * The doctrinal Table L-II field this free-text option renders (e.g.
223
+ * `phaseLineName` renders field `T`) — lets metadata-driven UIs (e.g. a
224
+ * label-placement preview) substitute a `<T>`-style placeholder for the
225
+ * option, the same way a `TextAmplifierDescriptor` does for a real
226
+ * amplifier field.
227
+ */
228
+ field?: TextAmplifierField;
209
229
  }
210
230
  type ParamDescriptor = NumberParamDescriptor | BooleanParamDescriptor | ColorParamDescriptor | TextParamDescriptor | EnumParamDescriptor;
211
231
  /** Editor-facing description of one text amplifier field a measure accepts. */
@@ -375,19 +395,6 @@ interface BoundaryOptions {
375
395
  * lock the T/AS text size to the glyph height.
376
396
  */
377
397
  metersPerPixel?: number;
378
- /**
379
- * Map zoom captured at draw-commit (`capturesLabelSize`). Forwarded onto the
380
- * T/AS labels as `textSizeZoom` so a ground-anchored boundary's text scales
381
- * with zoom like its meter-baked echelon glyph (maplibre).
382
- */
383
- labelSizeZoom?: number;
384
- /**
385
- * Map resolution (meters-per-pixel) captured at draw-commit
386
- * (`capturesLabelSize`). Forwarded onto the T/AS labels as `textSizeResolution`
387
- * so a ground-anchored boundary's text scales with zoom (OpenLayers), and used
388
- * as the reference resolution that sizes the text to the glyph height.
389
- */
390
- labelSizeResolution?: number;
391
398
  /**
392
399
  * Number of label groups (echelon + designators), spaced evenly by cumulative
393
400
  * arc length along the whole boundary. `1` places a single group at the
@@ -467,20 +474,56 @@ declare const project: (lon: number, lat: number) => Point2D;
467
474
  */
468
475
  declare const unproject: (x: number, y: number) => Position;
469
476
  //#endregion
477
+ //#region src/internal/sketch.d.ts
478
+ /**
479
+ * Shared `smooth`/`smoothResolution` option pair for free n-point polyline
480
+ * measures (draw rule Line1): curves the rendered path through the control
481
+ * points via a centripetal Catmull-Rom spline. The spline preserves the
482
+ * endpoints, so the line still meets its drawn anchors, and is a no-op for
483
+ * fewer than three control points (a single segment cannot be smoothed).
484
+ */
485
+ interface SmoothLineOptions {
486
+ /**
487
+ * Round the line's corners by curving the path through the control points
488
+ * (centripetal Catmull-Rom spline). The spline preserves the endpoints, so
489
+ * the line still meets its drawn anchors.
490
+ * @default false
491
+ */
492
+ smooth?: boolean;
493
+ /**
494
+ * Number of samples per segment when `smooth` is enabled. Higher values
495
+ * yield a denser, smoother curve.
496
+ * @default (varies per measure)
497
+ */
498
+ smoothResolution?: number;
499
+ }
500
+ //#endregion
470
501
  //#region src/internal/line-labels.d.ts
471
- /** Captured label-size inputs (draw/edit time), as forwarded on generator options. */
502
+ /**
503
+ * Label sizing per the size-anchor model (ADR-0020, ADR-0028): the presence of
504
+ * `labelSizePixels` marks the labels screen-anchored; `labelSize` alone is
505
+ * ground-anchored. Carrying both behaves screen-anchored (pixels win),
506
+ * matching the geometry options' precedence.
507
+ */
472
508
  interface LabelSizeOptions {
509
+ /** Text height in projected meters — ground-anchored label size (ADR-0028). */
510
+ labelSize?: number;
511
+ /** Text height in CSS pixels — screen-anchored label size (ADR-0028). */
473
512
  labelSizePixels?: number;
474
- labelSizeZoom?: number;
475
- labelSizeResolution?: number;
513
+ /**
514
+ * Meters-per-pixel at the current view. Stamped by the host when the labels
515
+ * are screen-anchored; resolves `labelSizePixels` to the projected-meter
516
+ * height that meter-denominated placement (offsets, gaps, row pitch) needs.
517
+ */
518
+ metersPerPixel?: number;
476
519
  }
477
520
  /** Shared placement options for the fixed-end-label line measures. */
478
521
  interface LineLabelOptions extends LabelSizeOptions {
479
522
  /**
480
523
  * Extra clearance between the line and its labels, as a ratio of the
481
- * label's resolved text height (`labelSizePixels × labelSizeResolution`),
482
- * like Boundary's `labelPadding`. Negative values clamp to 0. Only
483
- * effective when a live label size is captured — the no-size fallback
524
+ * label's resolved text height (`labelSize`, or `labelSizePixels ×
525
+ * metersPerPixel`), like Boundary's `labelPadding`. Negative values clamp
526
+ * to 0. Only effective when a label size resolves — the no-size fallback
484
527
  * offset is a fixed meter value, unaffected by this ratio.
485
528
  * @default 0
486
529
  */
@@ -489,7 +532,7 @@ interface LineLabelOptions extends LabelSizeOptions {
489
532
  //#endregion
490
533
  //#region src/generators/cm11-command-control-lines/light-line.d.ts
491
534
  /** Configuration options for the Light line control measure. */
492
- interface LightLineOptions extends LineLabelOptions {
535
+ interface LightLineOptions extends LineLabelOptions, SmoothLineOptions {
493
536
  /**
494
537
  * Optional phase line naming: renders `PL <name>` just beyond each end of
495
538
  * the line, additive to the fixed "LL" labels. Empty or whitespace-only
@@ -516,7 +559,7 @@ declare function createLightLine(positions: Position[], options?: LightLineOptio
516
559
  //#endregion
517
560
  //#region src/generators/cm11-command-control-lines/engineer-work-line.d.ts
518
561
  /** Configuration options for the Engineer work line control measure. */
519
- interface EngineerWorkLineOptions extends LineLabelOptions {
562
+ interface EngineerWorkLineOptions extends LineLabelOptions, SmoothLineOptions {
520
563
  /**
521
564
  * Optional phase line naming: renders `PL <name>` just beyond each end of
522
565
  * the line, additive to the fixed "EWL" labels. Empty or whitespace-only
@@ -547,7 +590,7 @@ declare function createEngineerWorkLine(positions: Position[], options?: Enginee
547
590
  //#endregion
548
591
  //#region src/generators/cm11-command-control-lines/generic-c2-line.d.ts
549
592
  /** Configuration options for the Generic command and control line. */
550
- interface GenericC2LineOptions extends LineLabelOptions {
593
+ interface GenericC2LineOptions extends LineLabelOptions, SmoothLineOptions {
551
594
  /**
552
595
  * Optional phase line naming: renders `PL <name>` just beyond each end of
553
596
  * the line, additive to the H/T/W/W1 amplifier labels. Empty or
@@ -825,6 +868,16 @@ declare const DEFAULT_ENCIRCLEMENT_OPTIONS: EncirclementOptions;
825
868
  */
826
869
  declare function createEncirclement(positions: Position[], options?: EncirclementOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
827
870
  //#endregion
871
+ //#region src/generators/cm15-maneuver-areas/area.d.ts
872
+ /** Configuration options for the Area control measure. */
873
+ type AreaOptions = LabeledAreaOptions;
874
+ /**
875
+ * Creates an Area control measure: a closed area through `positions` labeled
876
+ * at its center with an un-prefixed `T` (Field T) plus an `N` (Field N) ENY
877
+ * marker, per {@link labeledAreaFeatures}.
878
+ */
879
+ declare function createArea(positions: Position[], options?: AreaOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
880
+ //#endregion
828
881
  //#region src/generators/cm15-maneuver-areas/assemblyArea.d.ts
829
882
  /** Configuration options for the Assembly area control measure. */
830
883
  type AssemblyAreaOptions = LabeledAreaOptions;
@@ -850,6 +903,46 @@ declare const DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS: JointTacticalActionAre
850
903
  */
851
904
  declare function createJointTacticalActionArea(positions: Position[], options?: JointTacticalActionAreaOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
852
905
  //#endregion
906
+ //#region src/generators/cm15-maneuver-areas/submarineActionArea.d.ts
907
+ /** Configuration options for the Submarine action area control measure. */
908
+ type SubmarineActionAreaOptions = LabeledAreaOptions;
909
+ /**
910
+ * Creates a Submarine action area control measure: a closed area through
911
+ * `positions` labeled at its center with "SAA -"-prefixed `T` (Field T) plus
912
+ * `W`/`W1`/`N` amplifier rows, per {@link labeledAreaFeatures}.
913
+ */
914
+ declare function createSubmarineActionArea(positions: Position[], options?: SubmarineActionAreaOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
915
+ //#endregion
916
+ //#region src/generators/cm15-maneuver-areas/submarineGeneratedActionArea.d.ts
917
+ /** Configuration options for the Submarine-generated action area control measure. */
918
+ type SubmarineGeneratedActionAreaOptions = LabeledAreaOptions;
919
+ /**
920
+ * Creates a Submarine-generated action area control measure: a closed area
921
+ * through `positions` labeled at its center with "SGSA -"-prefixed `T`
922
+ * (Field T) plus `W`/`W1`/`N` amplifier rows, per {@link labeledAreaFeatures}.
923
+ */
924
+ declare function createSubmarineGeneratedActionArea(positions: Position[], options?: SubmarineGeneratedActionAreaOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
925
+ //#endregion
926
+ //#region src/generators/cm15-maneuver-areas/dropZone.d.ts
927
+ /** Configuration options for the Drop zone control measure. */
928
+ type DropZoneOptions = LabeledAreaOptions;
929
+ /**
930
+ * Creates a Drop zone control measure: a closed area through `positions`
931
+ * labeled at its center with "DZ "-prefixed `T` (Field T) plus an `N`
932
+ * (Field N) ENY marker, per {@link labeledAreaFeatures}.
933
+ */
934
+ declare function createDropZone(positions: Position[], options?: DropZoneOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
935
+ //#endregion
936
+ //#region src/generators/cm15-maneuver-areas/extractionZone.d.ts
937
+ /** Configuration options for the Extraction zone control measure. */
938
+ type ExtractionZoneOptions = LabeledAreaOptions;
939
+ /**
940
+ * Creates an Extraction zone control measure: a closed area through
941
+ * `positions` labeled at its center with "EZ "-prefixed `T` (Field T) plus
942
+ * an `N` (Field N) ENY marker, per {@link labeledAreaFeatures}.
943
+ */
944
+ declare function createExtractionZone(positions: Position[], options?: ExtractionZoneOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
945
+ //#endregion
853
946
  //#region src/generators/cm15-maneuver-areas/landingZone.d.ts
854
947
  /** Configuration options for the Landing zone control measure. */
855
948
  type LandingZoneOptions = LabeledAreaOptions;
@@ -874,6 +967,36 @@ declare const DEFAULT_PICKUP_ZONE_OPTIONS: PickupZoneOptions;
874
967
  */
875
968
  declare function createPickupZone(positions: Position[], options?: PickupZoneOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
876
969
  //#endregion
970
+ //#region src/generators/cm15-maneuver-areas/assaultPosition.d.ts
971
+ /** Configuration options for the Assault position control measure. */
972
+ type AssaultPositionOptions = LabeledAreaOptions;
973
+ /**
974
+ * Creates an Assault position control measure: a closed area through
975
+ * `positions` labeled at its center with "ASLT "-prefixed `T` (Field T) —
976
+ * the sole label row, per {@link labeledAreaFeatures}.
977
+ */
978
+ declare function createAssaultPosition(positions: Position[], options?: AssaultPositionOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
979
+ //#endregion
980
+ //#region src/generators/cm15-maneuver-areas/attackPosition.d.ts
981
+ /** Configuration options for the Attack position control measure. */
982
+ type AttackPositionOptions = LabeledAreaOptions;
983
+ /**
984
+ * Creates an Attack position control measure: a closed area through
985
+ * `positions` labeled at its center with "ATK "-prefixed `T` (Field T) —
986
+ * the sole label row, per {@link labeledAreaFeatures}.
987
+ */
988
+ declare function createAttackPosition(positions: Position[], options?: AttackPositionOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
989
+ //#endregion
990
+ //#region src/generators/cm15-maneuver-areas/objectiveArea.d.ts
991
+ /** Configuration options for the Objective area control measure. */
992
+ type ObjectiveAreaOptions = LabeledAreaOptions;
993
+ /**
994
+ * Creates an Objective area control measure: a closed area through
995
+ * `positions` labeled at its center with "OBJ "-prefixed `T` (Field T) —
996
+ * the sole label row, per {@link labeledAreaFeatures}.
997
+ */
998
+ declare function createObjectiveArea(positions: Position[], options?: ObjectiveAreaOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
999
+ //#endregion
877
1000
  //#region src/generators/cm12-command-control-areas/area-of-operations.d.ts
878
1001
  /** Configuration options for the Area of operations control measure. */
879
1002
  type AreaOfOperationsOptions = LabeledAreaOptions;
@@ -886,6 +1009,135 @@ declare const DEFAULT_AREA_OF_OPERATIONS_OPTIONS: AreaOfOperationsOptions;
886
1009
  */
887
1010
  declare function createAreaOfOperations(positions: Position[], options?: AreaOfOperationsOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
888
1011
  //#endregion
1012
+ //#region src/generators/cm12-command-control-areas/named-area-of-interest.d.ts
1013
+ /** Configuration options for the Named area of interest control measure. */
1014
+ type NamedAreaOfInterestOptions = LabeledAreaOptions;
1015
+ /**
1016
+ * Creates a Named area of interest control measure: a closed area through
1017
+ * `positions` labeled at its center with "NAI "-prefixed `T` (Field T) —
1018
+ * the sole label row, per {@link labeledAreaFeatures}.
1019
+ */
1020
+ declare function createNamedAreaOfInterest(positions: Position[], options?: NamedAreaOfInterestOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
1021
+ //#endregion
1022
+ //#region src/generators/cm12-command-control-areas/target-area-of-interest.d.ts
1023
+ /** Configuration options for the Target area of interest control measure. */
1024
+ type TargetAreaOfInterestOptions = LabeledAreaOptions;
1025
+ /**
1026
+ * Creates a Target area of interest control measure: a closed area through
1027
+ * `positions` labeled at its center with "TAI "-prefixed `T` (Field T) —
1028
+ * the sole label row, per {@link labeledAreaFeatures}.
1029
+ */
1030
+ declare function createTargetAreaOfInterest(positions: Position[], options?: TargetAreaOfInterestOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
1031
+ //#endregion
1032
+ //#region src/generators/cm12-command-control-areas/airfield-zone.d.ts
1033
+ /** Configuration options for the Airfield zone control measure. */
1034
+ interface AirfieldZoneOptions extends LabeledAreaOptions {
1035
+ /**
1036
+ * The runway glyph's long line, as a ratio of the ring's projected
1037
+ * bounding-box width (full length, not half).
1038
+ * @default 0.55
1039
+ */
1040
+ glyphSizeRatio?: number;
1041
+ }
1042
+ /**
1043
+ * Creates an Airfield zone control measure: a closed area through
1044
+ * `positions` with a runway glyph (two crossed lines forming a shallow
1045
+ * asymmetric X) centered on the ring, and Field H placed outside the area to
1046
+ * the east when set.
1047
+ *
1048
+ * @param positions - Area anchor points (≥3); the input contract is enforced
1049
+ * at the render seam (ADR-0014).
1050
+ * @param options - {@link AirfieldZoneOptions}.
1051
+ * @param textAmplifiers - Field H only.
1052
+ */
1053
+ declare function createAirfieldZone(positions: Position[], options?: AirfieldZoneOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
1054
+ //#endregion
1055
+ //#region src/generators/cm12-command-control-areas/echelon-labeled-area.d.ts
1056
+ /**
1057
+ * Configuration options shared by Base Camp and Guerrilla Base: the full L-15
1058
+ * label placement ({@link LabeledAreaOptions}) plus Battle Position's Field B
1059
+ * echelon knobs.
1060
+ */
1061
+ interface EchelonLabeledAreaOptions extends LabeledAreaOptions {
1062
+ /**
1063
+ * Field B echelon straddling the boundary. `"none"` (the default — the
1064
+ * standard's examples show no echelon glyph), empty, or unknown renders no
1065
+ * glyph and leaves the boundary unaffected by echelon masking.
1066
+ * @default "none"
1067
+ */
1068
+ echelon?: string;
1069
+ /**
1070
+ * Echelon glyph height in meters (ground-anchored). Ignored when
1071
+ * `echelonSizePixels` is supplied together with `metersPerPixel`.
1072
+ * @default 750
1073
+ */
1074
+ echelonSize?: number;
1075
+ /**
1076
+ * Echelon glyph height in screen pixels (screen-anchored). Resolved to
1077
+ * meters against `metersPerPixel`; bakes to a meter size on draw/edit
1078
+ * commit (ADR-0020).
1079
+ * @default 16
1080
+ */
1081
+ echelonSizePixels?: number;
1082
+ /**
1083
+ * Gap left on each side of the echelon glyph, as a ratio of the glyph
1084
+ * height. `0` butts the boundary against the glyph; larger values widen
1085
+ * the break.
1086
+ * @default 0.3
1087
+ */
1088
+ echelonPadding?: number;
1089
+ /**
1090
+ * Slides the echelon along the boundary, as a signed fraction of the total
1091
+ * perimeter measured from its default anchor on the bottom edge.
1092
+ * @default 0
1093
+ */
1094
+ echelonPosition?: number;
1095
+ /**
1096
+ * Absolute anchor for the echelon glyph, as a fraction of the total
1097
+ * perimeter measured from the ring seam, wrapped into `[0, 1)`. See Battle
1098
+ * Position's `echelonAnchor` (ADR-0023) — edit controllers freeze this via
1099
+ * the `freezeOrientation` hook the moment a rotate gesture starts.
1100
+ */
1101
+ echelonAnchor?: number;
1102
+ /**
1103
+ * Meters-per-pixel at the current zoom/latitude. Stamped by the host when
1104
+ * the measure is screen-anchored; required to resolve `echelonSizePixels`.
1105
+ */
1106
+ metersPerPixel?: number;
1107
+ }
1108
+ //#endregion
1109
+ //#region src/generators/cm12-command-control-areas/base-camp.d.ts
1110
+ /** Configuration options for the Base camp control measure. */
1111
+ type BaseCampOptions = EchelonLabeledAreaOptions;
1112
+ /**
1113
+ * Creates a Base camp control measure: a closed area through `positions`
1114
+ * labeled at its center with "BC "-prefixed `T` (Field T) plus `H`/`W`/`W1`/`N`
1115
+ * amplifier rows, and an optional Field B echelon glyph straddling the
1116
+ * boundary, per {@link echelonLabeledAreaFeatures}.
1117
+ */
1118
+ declare function createBaseCamp(positions: Position[], options?: BaseCampOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | MultiPolygon | Point>;
1119
+ //#endregion
1120
+ //#region src/generators/cm12-command-control-areas/guerrilla-base.d.ts
1121
+ /** Configuration options for the Guerrilla base control measure. */
1122
+ type GuerrillaBaseOptions = EchelonLabeledAreaOptions;
1123
+ /**
1124
+ * Creates a Guerrilla base control measure: a closed area through
1125
+ * `positions` labeled at its center with "GB "-prefixed `T` (Field T) plus
1126
+ * `H`/`W`/`W1`/`N` amplifier rows, and an optional Field B echelon glyph
1127
+ * straddling the boundary, per {@link echelonLabeledAreaFeatures}.
1128
+ */
1129
+ declare function createGuerrillaBase(positions: Position[], options?: GuerrillaBaseOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | MultiPolygon | Point>;
1130
+ //#endregion
1131
+ //#region src/generators/cm12-command-control-areas/generic-c2-area.d.ts
1132
+ /** Configuration options for the Generic command and control area control measure. */
1133
+ type GenericC2AreaOptions = LabeledAreaOptions;
1134
+ /**
1135
+ * Creates a Generic command and control area control measure: a closed area
1136
+ * through `positions` labeled at its center with the bare `T` (Field T) plus
1137
+ * `H`/`W`/`W1`/`N` amplifier rows — no prefix, per {@link labeledAreaFeatures}.
1138
+ */
1139
+ declare function createGenericC2Area(positions: Position[], options?: GenericC2AreaOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
1140
+ //#endregion
889
1141
  //#region src/attack-utils.d.ts
890
1142
  interface AttackOptions {
891
1143
  shaftWidthRatio?: number;
@@ -1162,7 +1414,7 @@ declare function createAttackByFire(coordinates: Position[], options?: AttackByF
1162
1414
  /**
1163
1415
  * Configuration options for the FLOT (Forward Line of Own Troops) geometry.
1164
1416
  */
1165
- interface FLOTOptions {
1417
+ interface FLOTOptions extends SmoothLineOptions {
1166
1418
  /**
1167
1419
  * The radius of the semicircular arcs in meters.
1168
1420
  * Semicircles are placed tangent to each other (diameter = 2 * radius).
@@ -1218,7 +1470,7 @@ declare function createFLOT(positions: Position[], options?: FLOTOptions): Featu
1218
1470
  //#endregion
1219
1471
  //#region src/generators/cm14-maneuver-lines/phase-line.d.ts
1220
1472
  /** Configuration options for the Phase line control measure. */
1221
- interface PhaseLineOptions extends LineLabelOptions {
1473
+ interface PhaseLineOptions extends LineLabelOptions, SmoothLineOptions {
1222
1474
  /**
1223
1475
  * Prefix the end labels with "PL" (`"PL ECHO"`, or a bare `"PL"` when no
1224
1476
  * designation is set). When `false`, the label is the bare designation
@@ -1237,7 +1489,7 @@ declare function createPhaseLine(positions: Position[], options?: PhaseLineOptio
1237
1489
  //#endregion
1238
1490
  //#region src/generators/cm14-maneuver-lines/handover-line.d.ts
1239
1491
  /** Configuration options for the Handover line control measure. */
1240
- interface HandoverLineOptions extends LineLabelOptions {
1492
+ interface HandoverLineOptions extends LineLabelOptions, SmoothLineOptions {
1241
1493
  /**
1242
1494
  * Optional phase line naming: renders `PL <name>` just beyond each end of
1243
1495
  * the line, additive to the fixed "HOL" labels. Empty or whitespace-only
@@ -1264,7 +1516,7 @@ declare function createHandoverLine(positions: Position[], options?: HandoverLin
1264
1516
  //#endregion
1265
1517
  //#region src/generators/cm14-maneuver-lines/battle-handover-line.d.ts
1266
1518
  /** Configuration options for the Battle handover line control measure. */
1267
- interface BattleHandoverLineOptions extends LineLabelOptions {
1519
+ interface BattleHandoverLineOptions extends LineLabelOptions, SmoothLineOptions {
1268
1520
  /**
1269
1521
  * Optional phase line naming: renders `PL <name>` just beyond each end of
1270
1522
  * the line, additive to the fixed "BHL" labels. Empty or whitespace-only
@@ -1293,14 +1545,12 @@ declare function createBattleHandoverLine(positions: Position[], options?: Battl
1293
1545
  interface BlockMissionTaskOptions {
1294
1546
  /** Gap for the 'B' label as a ratio of the front length (default: 0.2) */
1295
1547
  labelGapRatio?: number;
1296
- /** Label height in CSS pixels at the draw/reference zoom. */
1548
+ /** Text height in projected meters — ground-anchored label size (ADR-0028). */
1549
+ labelSize?: number;
1550
+ /** Text height in CSS pixels — screen-anchored label size (ADR-0028). */
1297
1551
  labelSizePixels?: number;
1298
- /** Map zoom at which labelSizePixels was captured. */
1299
- labelSizeZoom?: number;
1300
- /** Map resolution at which labelSizePixels was captured. */
1301
- labelSizeResolution?: number;
1302
1552
  }
1303
- declare const DEFAULT_BLOCK_MISSION_TASK_OPTIONS: Required<Omit<BlockMissionTaskOptions, "labelSizePixels" | "labelSizeZoom" | "labelSizeResolution">>;
1553
+ declare const DEFAULT_BLOCK_MISSION_TASK_OPTIONS: Required<Omit<BlockMissionTaskOptions, "labelSize" | "labelSizePixels">>;
1304
1554
  /**
1305
1555
  * Generates a GeoJSON FeatureCollection for a BLOCK mission task symbol (340100).
1306
1556
  *
@@ -1324,17 +1574,15 @@ interface BreachOptions {
1324
1574
  tickAngle?: number;
1325
1575
  /** Gap for the 'B' label as a ratio of the front length (default: 0.2) */
1326
1576
  labelGapRatio?: number;
1327
- /** Label height in CSS pixels at the draw/reference zoom. */
1577
+ /** Text height in projected meters — ground-anchored label size (ADR-0028). */
1578
+ labelSize?: number;
1579
+ /** Text height in CSS pixels — screen-anchored label size (ADR-0028). */
1328
1580
  labelSizePixels?: number;
1329
- /** Map zoom at which labelSizePixels was captured. */
1330
- labelSizeZoom?: number;
1331
- /** Map resolution at which labelSizePixels was captured. */
1332
- labelSizeResolution?: number;
1333
1581
  }
1334
1582
  /**
1335
1583
  * Default options for the BREACH symbol.
1336
1584
  */
1337
- declare const DEFAULT_BREACH_OPTIONS: Required<Omit<BreachOptions, "labelSizePixels" | "labelSizeZoom" | "labelSizeResolution">>;
1585
+ declare const DEFAULT_BREACH_OPTIONS: Required<Omit<BreachOptions, "labelSize" | "labelSizePixels">>;
1338
1586
  /**
1339
1587
  * Generates a GeoJSON FeatureCollection for a BREACH mission task symbol (340200).
1340
1588
  *
@@ -1357,17 +1605,15 @@ interface BypassOptions {
1357
1605
  arrowheadLengthRatio?: number;
1358
1606
  /** Gap for the 'B' label as a ratio of the front length (default: 0.2) */
1359
1607
  labelGapRatio?: number;
1360
- /** Label height in CSS pixels at the draw/reference zoom. */
1608
+ /** Text height in projected meters — ground-anchored label size (ADR-0028). */
1609
+ labelSize?: number;
1610
+ /** Text height in CSS pixels — screen-anchored label size (ADR-0028). */
1361
1611
  labelSizePixels?: number;
1362
- /** Map zoom at which labelSizePixels was captured. */
1363
- labelSizeZoom?: number;
1364
- /** Map resolution at which labelSizePixels was captured. */
1365
- labelSizeResolution?: number;
1366
1612
  }
1367
1613
  /**
1368
1614
  * Default options for the BYPASS symbol.
1369
1615
  */
1370
- declare const DEFAULT_BYPASS_OPTIONS: Required<Omit<BypassOptions, "labelSizePixels" | "labelSizeZoom" | "labelSizeResolution">>;
1616
+ declare const DEFAULT_BYPASS_OPTIONS: Required<Omit<BypassOptions, "labelSize" | "labelSizePixels">>;
1371
1617
  /**
1372
1618
  * Generates a GeoJSON FeatureCollection for a BYPASS mission task symbol (340300).
1373
1619
  *
@@ -1392,17 +1638,15 @@ interface CanalizeOptions {
1392
1638
  tickAngle?: number;
1393
1639
  /** Gap for the 'C' label as a ratio of the front length (default: 0.2) */
1394
1640
  labelGapRatio?: number;
1395
- /** Label height in CSS pixels at the draw/reference zoom. */
1641
+ /** Text height in projected meters — ground-anchored label size (ADR-0028). */
1642
+ labelSize?: number;
1643
+ /** Text height in CSS pixels — screen-anchored label size (ADR-0028). */
1396
1644
  labelSizePixels?: number;
1397
- /** Map zoom at which labelSizePixels was captured. */
1398
- labelSizeZoom?: number;
1399
- /** Map resolution at which labelSizePixels was captured. */
1400
- labelSizeResolution?: number;
1401
1645
  }
1402
1646
  /**
1403
1647
  * Default options for the CANALIZE symbol.
1404
1648
  */
1405
- declare const DEFAULT_CANALIZE_OPTIONS: Required<Omit<CanalizeOptions, "labelSizePixels" | "labelSizeZoom" | "labelSizeResolution">>;
1649
+ declare const DEFAULT_CANALIZE_OPTIONS: Required<Omit<CanalizeOptions, "labelSize" | "labelSizePixels">>;
1406
1650
  /**
1407
1651
  * Generates a GeoJSON FeatureCollection for a CANALIZE mission task symbol (340400).
1408
1652
  *
@@ -1433,17 +1677,15 @@ interface ClearOptions {
1433
1677
  arrowheadWidthRatio?: number;
1434
1678
  /** Gap for the 'C' label as a ratio of the shaft length (default: 0.2). */
1435
1679
  labelGapRatio?: number;
1436
- /** Label height in CSS pixels at the draw/reference zoom. */
1680
+ /** Text height in projected meters — ground-anchored label size (ADR-0028). */
1681
+ labelSize?: number;
1682
+ /** Text height in CSS pixels — screen-anchored label size (ADR-0028). */
1437
1683
  labelSizePixels?: number;
1438
- /** Map zoom at which labelSizePixels was captured. */
1439
- labelSizeZoom?: number;
1440
- /** Map resolution at which labelSizePixels was captured. */
1441
- labelSizeResolution?: number;
1442
1684
  }
1443
1685
  /**
1444
1686
  * Default options for the CLEAR symbol.
1445
1687
  */
1446
- declare const DEFAULT_CLEAR_OPTIONS: Required<Omit<ClearOptions, "labelSizePixels" | "labelSizeZoom" | "labelSizeResolution">>;
1688
+ declare const DEFAULT_CLEAR_OPTIONS: Required<Omit<ClearOptions, "labelSize" | "labelSizePixels">>;
1447
1689
  /**
1448
1690
  * Generates a GeoJSON FeatureCollection for a CLEAR mission task symbol (340500).
1449
1691
  *
@@ -1477,14 +1719,12 @@ interface DelayOptions {
1477
1719
  labelGapRatio?: number;
1478
1720
  /** Number of segments used to approximate the 180-degree arc (default: 32). */
1479
1721
  arcSegments?: number;
1480
- /** Label height in CSS pixels at the draw/reference zoom. */
1722
+ /** Text height in projected meters — ground-anchored label size (ADR-0028). */
1723
+ labelSize?: number;
1724
+ /** Text height in CSS pixels — screen-anchored label size (ADR-0028). */
1481
1725
  labelSizePixels?: number;
1482
- /** Map zoom at which labelSizePixels was captured. */
1483
- labelSizeZoom?: number;
1484
- /** Map resolution at which labelSizePixels was captured. */
1485
- labelSizeResolution?: number;
1486
1726
  }
1487
- declare const DEFAULT_DELAY_OPTIONS: Required<Omit<DelayOptions, "labelSizePixels" | "labelSizeZoom" | "labelSizeResolution">>;
1727
+ declare const DEFAULT_DELAY_OPTIONS: Required<Omit<DelayOptions, "labelSize" | "labelSizePixels">>;
1488
1728
  declare function createDelaySymbol(coordinates: Position[], options?: DelayOptions): FeatureCollection<MultiLineString | Point>;
1489
1729
  //#endregion
1490
1730
  //#region src/generators/cm34-mission-tasks/isolate.d.ts
@@ -1522,7 +1762,7 @@ interface IsolateOptions {
1522
1762
  declare function createIsolateSymbol(coordinates: Position[], options?: IsolateOptions): FeatureCollection<MultiLineString>;
1523
1763
  //#endregion
1524
1764
  //#region src/generators/cm29-protection-lines/antitankDitch.d.ts
1525
- interface AntitankDitchOptions {
1765
+ interface AntitankDitchOptions extends SmoothLineOptions {
1526
1766
  /**
1527
1767
  * The tooth depth in meters. Target tooth spacing is roughly 1.15x this depth.
1528
1768
  * Ignored when toothHeightPixels is provided with metersPerPixel.
@@ -1816,11 +2056,25 @@ declare const DEFINITIONS: {
1816
2056
  fill?: boolean;
1817
2057
  }>>;
1818
2058
  encirclement: ControlMeasureDefinition<"encirclement", typeof createEncirclement>;
2059
+ area: ControlMeasureDefinition<"area", typeof createArea>;
1819
2060
  "assembly-area": ControlMeasureDefinition<"assembly-area", typeof createAssemblyArea>;
1820
2061
  "joint-tactical-action-area": ControlMeasureDefinition<"joint-tactical-action-area", typeof createJointTacticalActionArea>;
2062
+ "submarine-action-area": ControlMeasureDefinition<"submarine-action-area", typeof createSubmarineActionArea>;
2063
+ "submarine-generated-action-area": ControlMeasureDefinition<"submarine-generated-action-area", typeof createSubmarineGeneratedActionArea>;
2064
+ "drop-zone": ControlMeasureDefinition<"drop-zone", typeof createDropZone>;
2065
+ "extraction-zone": ControlMeasureDefinition<"extraction-zone", typeof createExtractionZone>;
1821
2066
  "landing-zone": ControlMeasureDefinition<"landing-zone", typeof createLandingZone>;
1822
2067
  "pickup-zone": ControlMeasureDefinition<"pickup-zone", typeof createPickupZone>;
2068
+ "assault-position": ControlMeasureDefinition<"assault-position", typeof createAssaultPosition>;
2069
+ "attack-position": ControlMeasureDefinition<"attack-position", typeof createAttackPosition>;
2070
+ "objective-area": ControlMeasureDefinition<"objective-area", typeof createObjectiveArea>;
1823
2071
  "area-of-operations": ControlMeasureDefinition<"area-of-operations", typeof createAreaOfOperations>;
2072
+ "named-area-of-interest": ControlMeasureDefinition<"named-area-of-interest", typeof createNamedAreaOfInterest>;
2073
+ "target-area-of-interest": ControlMeasureDefinition<"target-area-of-interest", typeof createTargetAreaOfInterest>;
2074
+ "airfield-zone": ControlMeasureDefinition<"airfield-zone", typeof createAirfieldZone>;
2075
+ "base-camp": ControlMeasureDefinition<"base-camp", typeof createBaseCamp>;
2076
+ "guerrilla-base": ControlMeasureDefinition<"guerrilla-base", typeof createGuerrillaBase>;
2077
+ "generic-c2-area": ControlMeasureDefinition<"generic-c2-area", typeof createGenericC2Area>;
1824
2078
  "main-attack": ControlMeasureDefinition<"main-attack", typeof createMainAttack>;
1825
2079
  "supporting-attack": ControlMeasureDefinition<"supporting-attack", typeof createSupportingAttack>;
1826
2080
  "classic-arrow": ControlMeasureDefinition<"classic-arrow", typeof createClassicArrow>;
@@ -1916,6 +2170,8 @@ interface ControlMeasure<K extends ControlMeasureKind = ControlMeasureKind> {
1916
2170
  properties?: Record<string, unknown>;
1917
2171
  /** Free-text amplifier fields (MIL-STD-2525E Appendix L Table L-II); see `./text-amplifiers`. */
1918
2172
  textAmplifiers?: TextAmplifiers;
2173
+ /** Optional user-adjusted anchors for independently rendered text amplifiers. */
2174
+ amplifierPlacements?: AmplifierPlacements;
1919
2175
  schemaVersion?: 1;
1920
2176
  }
1921
2177
  declare function isKind<K extends ControlMeasureKind>(cm: ControlMeasure, kind: K): cm is ControlMeasure<K>;
@@ -1974,12 +2230,22 @@ interface FeaturePartProps {
1974
2230
  * text begins at the point, `"end"` = it ends there. Absent = centered.
1975
2231
  */
1976
2232
  textAnchor?: "start" | "end";
1977
- /** Label size in CSS pixels at the draw/reference zoom. */
2233
+ /** Canonical field key for a text-amplifier label that may be repositioned. */
2234
+ amplifierField?: TextAmplifierKey;
2235
+ /** Stable key used to persist a user-adjusted anchor for any rendered label. */
2236
+ labelPlacementKey?: string;
2237
+ /**
2238
+ * Screen-anchored label size in CSS pixels — held constant on screen
2239
+ * (ADR-0028). Mutually exclusive with `textSizeMeters`; absent both,
2240
+ * adapters render their engine default, screen-fixed.
2241
+ */
1978
2242
  textSizePixels?: number;
1979
- /** Map zoom at which textSizePixels was captured. */
1980
- textSizeZoom?: number;
1981
- /** Map resolution at which textSizePixels was captured. */
1982
- textSizeResolution?: number;
2243
+ /**
2244
+ * Ground-anchored label text height in projected meters (ADR-0028).
2245
+ * Adapters render `clamp(textSizeMeters / resolution, min, max)` px, per
2246
+ * their configured clamp band.
2247
+ */
2248
+ textSizeMeters?: number;
1983
2249
  }
1984
2250
  /**
1985
2251
  * Output of `renderControlMeasure`. A GeoJSON `FeatureCollection` whose
@@ -2301,4 +2567,4 @@ interface TacticalArrowOptions {
2301
2567
  */
2302
2568
  declare const DEFAULT_TACTICAL_ARROW_OPTIONS: Required<TacticalArrowOptions>;
2303
2569
  //#endregion
2304
- export { getControlMeasureMetadata as $, ControlMeasureMetadata as $n, DEFAULT_GENERIC_CIRCLE_OPTIONS as $t, getMetersPerPixel as A, EncirclementOptions as An, DEFAULT_CANALIZE_OPTIONS as At, ControlMeasureSnapshot as B, GenericC2LineOptions as Bn, HandoverLineOptions as Bt, snapToMidpointPerpendicular as C, DEFAULT_LANDING_ZONE_OPTIONS as Cn, AntitankDitchOptions as Ct, BaselineFrameOrigin as D, AssemblyAreaOptions as Dn, ClearOptions as Dt, BaselineFrameOptions as E, JointTacticalActionAreaOptions as En, DelayOptions as Et, resolveStyleHints as F, DEFAULT_STRONG_POINT_OPTIONS as Fn, BlockMissionTaskOptions as Ft, cloneControlMeasure as G, LabelSizeOptions as Gn, AttackByFireOptions as Gt, StyleHints as H, EngineerWorkLineOptions as Hn, PhaseLineOptions as Ht, freezeOrientationOptions as I, StrongPointOptions as In, DEFAULT_BLOCK_MISSION_TASK_OPTIONS as It, CONTROL_MEASURE_IDS as J, unproject as Jn, SupportByFireOptions as Jt, isKind as K, Point2D as Kn, DEFAULT_ATTACK_BY_FIRE_OPTIONS as Kt, RenderOptions as L, BattlePositionOptions as Ln, BattleHandoverLineOptions as Lt, SimpleStyleProps as M, FinalProtectiveFireOptions as Mn, DEFAULT_BYPASS_OPTIONS as Mt, SimpleStyleRender as N, DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS as Nn, BreachOptions as Nt, createBaselineFrame as O, DEFAULT_ASSEMBLY_AREA_OPTIONS as On, DEFAULT_CLEAR_OPTIONS as Ot, toSimpleStyle as P, PrincipalDirectionOfFireOptions as Pn, DEFAULT_BREACH_OPTIONS as Pt, OptionsByKind as Q, ControlMeasureGeometryType as Qn, DEFAULT_AIRBORNE_ATTACK_OPTIONS as Qt, renderControlMeasure as R, DEFAULT_BATTLE_POSITION_OPTIONS as Rn, DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS as Rt, pointOnMidpointPerpendicularAxis as S, PickupZoneOptions as Sn, DEFAULT_ANTITANK_WALL_OPTIONS as St, BaselineFrameNormal as T, DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS as Tn, DEFAULT_DELAY_OPTIONS as Tt, controlMeasureIdFromFeature as U, DEFAULT_LIGHT_LINE_OPTIONS as Un, DEFAULT_FLOT_OPTIONS as Ut, FeaturePartProps as V, DEFAULT_ENGINEER_WORK_LINE_OPTIONS as Vn, DEFAULT_PHASE_LINE_OPTIONS as Vt, ControlMeasure as W, LightLineOptions as Wn, FLOTOptions as Wt, ControlMeasureId as X, DEFAULT_BOUNDARY_OPTIONS as Xn, DEFAULT_ATTACK_HELICOPTER_OPTIONS as Xt, CONTROL_MEASURE_METADATA as Y, BoundaryOptions as Yn, AttackHelicopterOptions as Yt, ControlMeasureKind as Z, ControlMeasureGeometry as Zn, AirborneAttackOptions as Zt, blockDrawRule as _, calculateMetrics as _n, DEFAULT_FORTIFIED_AREA_OPTIONS as _t, rectangleDrawRule as a, DEFAULT_GENERIC_LINE_OPTIONS as an, TextAmplifierKey as ar, DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS as at, createMidpointPerpendicularDrawRule as b, DEFAULT_AREA_OF_OPERATIONS_OPTIONS as bn, FortifiedLineOptions as bt, line24DrawRule as c, BlockArrowOptions as cn, normalizeTextAmplifiers as cr, ObstacleBypassEasyOptions as ct, line1DrawRule as d, ClassicArrowOptions as dn, DEFAULT_FIX_OPTIONS as dt, GenericCircleOptions as en, ParamDescriptor as er, getControlMeasureMetadataByValue as et, ambushDrawRule as f, DEFAULT_CLASSIC_ARROW_OPTIONS as fn, FixOptions as ft, disruptDrawRule as g, MainAttackOptions as gn, DEFAULT_BLOCK_OPTIONS as gt, centerRadiusDrawRule as h, DEFAULT_MAIN_ATTACK_OPTIONS as hn, BlockOptions as ht, DEFAULT_AMBUSH_OPTIONS as i, GenericPolygonOptions as in, TextAmplifierField as ir, ObstacleBypassImpossibleOptions as it, roundToFixed as j, DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS as jn, BypassOptions as jt, EPSILON as k, DEFAULT_ENCIRCLEMENT_OPTIONS as kn, CanalizeOptions as kt, line23DrawRule as l, DEFAULT_BLOCK_ARROW_OPTIONS as ln, AnchorTransformEvent as lr, DEFAULT_TURN_OPTIONS as lt, point12DrawRule as m, SupportingAttackOptions as mn, DisruptOptions as mt, TacticalArrowOptions as n, GenericRectangleOptions as nn, CanonicalTextAmplifiers as nr, listControlMeasureMetadata as nt, axis1DrawRule as o, GenericLineOptions as on, TextAmplifiers as or, ObstacleBypassDifficultOptions as ot, attackByFireDrawRule as p, DEFAULT_SUPPORTING_ATTACK_OPTIONS as pn, DEFAULT_DISRUPT_OPTIONS as pt, ControlMeasureStyle as q, project as qn, DEFAULT_SUPPORT_BY_FIRE_OPTIONS as qt, AmbushOptions as r, DEFAULT_GENERIC_POLYGON_OPTIONS as rn, TEXT_AMPLIFIER_FIELDS as rr, DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS as rt, supportByFireDrawRule as s, BlockArrowHeadStyle as sn, canonicalTextAmplifierKey as sr, DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS as st, DEFAULT_TACTICAL_ARROW_OPTIONS as t, DEFAULT_GENERIC_RECTANGLE_OPTIONS as tn, TextAmplifierDescriptor as tr, getDefaultOptions as tt, turnDrawRule as u, ClassicArrowHeadStyle as un, ControlMeasureDrawRule as ur, TurnOptions as ut, MidpointPerpendicularDrawRuleOptions as v, computeInitialWidthPoint as vn, FortifiedAreaOptions as vt, BaselineFrame as w, LandingZoneOptions as wn, DEFAULT_ANTITANK_DITCH_OPTIONS as wt, getMidpointPerpendicularSignedDistance as x, DEFAULT_PICKUP_ZONE_OPTIONS as xn, AntitankWallOptions as xt, computeDefaultMidpointPerpendicularPoint as y, AreaOfOperationsOptions as yn, DEFAULT_FORTIFIED_LINE_OPTIONS as yt, ControlMeasureRender as z, DEFAULT_GENERIC_C2_LINE_OPTIONS as zn, DEFAULT_HANDOVER_LINE_OPTIONS as zt };
2570
+ export { getControlMeasureMetadata as $, ControlMeasureMetadata as $n, DEFAULT_GENERIC_CIRCLE_OPTIONS as $t, getMetersPerPixel as A, EncirclementOptions as An, DEFAULT_CANALIZE_OPTIONS as At, ControlMeasureSnapshot as B, GenericC2LineOptions as Bn, HandoverLineOptions as Bt, snapToMidpointPerpendicular as C, DEFAULT_LANDING_ZONE_OPTIONS as Cn, AntitankDitchOptions as Ct, BaselineFrameOrigin as D, AssemblyAreaOptions as Dn, ClearOptions as Dt, BaselineFrameOptions as E, JointTacticalActionAreaOptions as En, DelayOptions as Et, resolveStyleHints as F, DEFAULT_STRONG_POINT_OPTIONS as Fn, BlockMissionTaskOptions as Ft, cloneControlMeasure as G, LabelSizeOptions as Gn, AttackByFireOptions as Gt, StyleHints as H, EngineerWorkLineOptions as Hn, PhaseLineOptions as Ht, freezeOrientationOptions as I, StrongPointOptions as In, DEFAULT_BLOCK_MISSION_TASK_OPTIONS as It, CONTROL_MEASURE_IDS as J, unproject as Jn, SupportByFireOptions as Jt, isKind as K, Point2D as Kn, DEFAULT_ATTACK_BY_FIRE_OPTIONS as Kt, RenderOptions as L, BattlePositionOptions as Ln, BattleHandoverLineOptions as Lt, SimpleStyleProps as M, FinalProtectiveFireOptions as Mn, DEFAULT_BYPASS_OPTIONS as Mt, SimpleStyleRender as N, DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS as Nn, BreachOptions as Nt, createBaselineFrame as O, DEFAULT_ASSEMBLY_AREA_OPTIONS as On, DEFAULT_CLEAR_OPTIONS as Ot, toSimpleStyle as P, PrincipalDirectionOfFireOptions as Pn, DEFAULT_BREACH_OPTIONS as Pt, OptionsByKind as Q, ControlMeasureGeometryType as Qn, DEFAULT_AIRBORNE_ATTACK_OPTIONS as Qt, renderControlMeasure as R, DEFAULT_BATTLE_POSITION_OPTIONS as Rn, DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS as Rt, pointOnMidpointPerpendicularAxis as S, PickupZoneOptions as Sn, DEFAULT_ANTITANK_WALL_OPTIONS as St, BaselineFrameNormal as T, DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS as Tn, DEFAULT_DELAY_OPTIONS as Tt, controlMeasureIdFromFeature as U, DEFAULT_LIGHT_LINE_OPTIONS as Un, DEFAULT_FLOT_OPTIONS as Ut, FeaturePartProps as V, DEFAULT_ENGINEER_WORK_LINE_OPTIONS as Vn, DEFAULT_PHASE_LINE_OPTIONS as Vt, ControlMeasure as W, LightLineOptions as Wn, FLOTOptions as Wt, ControlMeasureId as X, DEFAULT_BOUNDARY_OPTIONS as Xn, DEFAULT_ATTACK_HELICOPTER_OPTIONS as Xt, CONTROL_MEASURE_METADATA as Y, BoundaryOptions as Yn, AttackHelicopterOptions as Yt, ControlMeasureKind as Z, ControlMeasureGeometry as Zn, AirborneAttackOptions as Zt, blockDrawRule as _, calculateMetrics as _n, DEFAULT_FORTIFIED_AREA_OPTIONS as _t, rectangleDrawRule as a, DEFAULT_GENERIC_LINE_OPTIONS as an, TEXT_AMPLIFIER_FIELDS as ar, DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS as at, createMidpointPerpendicularDrawRule as b, DEFAULT_AREA_OF_OPERATIONS_OPTIONS as bn, FortifiedLineOptions as bt, line24DrawRule as c, BlockArrowOptions as cn, TextAmplifiers as cr, ObstacleBypassEasyOptions as ct, line1DrawRule as d, ClassicArrowOptions as dn, AnchorTransformEvent as dr, DEFAULT_FIX_OPTIONS as dt, GenericCircleOptions as en, ParamDescriptor as er, getControlMeasureMetadataByValue as et, ambushDrawRule as f, DEFAULT_CLASSIC_ARROW_OPTIONS as fn, ControlMeasureDrawRule as fr, FixOptions as ft, disruptDrawRule as g, MainAttackOptions as gn, DEFAULT_BLOCK_OPTIONS as gt, centerRadiusDrawRule as h, DEFAULT_MAIN_ATTACK_OPTIONS as hn, BlockOptions as ht, DEFAULT_AMBUSH_OPTIONS as i, GenericPolygonOptions as in, GeneratedLabelKey as ir, ObstacleBypassImpossibleOptions as it, roundToFixed as j, DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS as jn, BypassOptions as jt, EPSILON as k, DEFAULT_ENCIRCLEMENT_OPTIONS as kn, CanalizeOptions as kt, line23DrawRule as l, DEFAULT_BLOCK_ARROW_OPTIONS as ln, canonicalTextAmplifierKey as lr, DEFAULT_TURN_OPTIONS as lt, point12DrawRule as m, SupportingAttackOptions as mn, DisruptOptions as mt, TacticalArrowOptions as n, GenericRectangleOptions as nn, AmplifierPlacements as nr, listControlMeasureMetadata as nt, axis1DrawRule as o, GenericLineOptions as on, TextAmplifierField as or, ObstacleBypassDifficultOptions as ot, attackByFireDrawRule as p, DEFAULT_SUPPORTING_ATTACK_OPTIONS as pn, DEFAULT_DISRUPT_OPTIONS as pt, ControlMeasureStyle as q, project as qn, DEFAULT_SUPPORT_BY_FIRE_OPTIONS as qt, AmbushOptions as r, DEFAULT_GENERIC_POLYGON_OPTIONS as rn, CanonicalTextAmplifiers as rr, DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS as rt, supportByFireDrawRule as s, BlockArrowHeadStyle as sn, TextAmplifierKey as sr, DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS as st, DEFAULT_TACTICAL_ARROW_OPTIONS as t, DEFAULT_GENERIC_RECTANGLE_OPTIONS as tn, TextAmplifierDescriptor as tr, getDefaultOptions as tt, turnDrawRule as u, ClassicArrowHeadStyle as un, normalizeTextAmplifiers as ur, TurnOptions as ut, MidpointPerpendicularDrawRuleOptions as v, computeInitialWidthPoint as vn, FortifiedAreaOptions as vt, BaselineFrame as w, LandingZoneOptions as wn, DEFAULT_ANTITANK_DITCH_OPTIONS as wt, getMidpointPerpendicularSignedDistance as x, DEFAULT_PICKUP_ZONE_OPTIONS as xn, AntitankWallOptions as xt, computeDefaultMidpointPerpendicularPoint as y, AreaOfOperationsOptions as yn, DEFAULT_FORTIFIED_LINE_OPTIONS as yt, ControlMeasureRender as z, DEFAULT_GENERIC_C2_LINE_OPTIONS as zn, DEFAULT_HANDOVER_LINE_OPTIONS as zt };