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

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-C6nqkw1A.d.mts} +316 -68
  2. package/dist/index.d.mts +1 -1
  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-NKEYq3Fg.mjs} +1430 -595
  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
@@ -206,6 +206,14 @@ interface TextParamDescriptor extends BaseParamDescriptor {
206
206
  type: "text";
207
207
  placeholder?: string;
208
208
  maxLength?: number;
209
+ /**
210
+ * The doctrinal Table L-II field this free-text option renders (e.g.
211
+ * `phaseLineName` renders field `T`) — lets metadata-driven UIs (e.g. a
212
+ * label-placement preview) substitute a `<T>`-style placeholder for the
213
+ * option, the same way a `TextAmplifierDescriptor` does for a real
214
+ * amplifier field.
215
+ */
216
+ field?: TextAmplifierField;
209
217
  }
210
218
  type ParamDescriptor = NumberParamDescriptor | BooleanParamDescriptor | ColorParamDescriptor | TextParamDescriptor | EnumParamDescriptor;
211
219
  /** Editor-facing description of one text amplifier field a measure accepts. */
@@ -375,19 +383,6 @@ interface BoundaryOptions {
375
383
  * lock the T/AS text size to the glyph height.
376
384
  */
377
385
  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
386
  /**
392
387
  * Number of label groups (echelon + designators), spaced evenly by cumulative
393
388
  * arc length along the whole boundary. `1` places a single group at the
@@ -467,20 +462,56 @@ declare const project: (lon: number, lat: number) => Point2D;
467
462
  */
468
463
  declare const unproject: (x: number, y: number) => Position;
469
464
  //#endregion
465
+ //#region src/internal/sketch.d.ts
466
+ /**
467
+ * Shared `smooth`/`smoothResolution` option pair for free n-point polyline
468
+ * measures (draw rule Line1): curves the rendered path through the control
469
+ * points via a centripetal Catmull-Rom spline. The spline preserves the
470
+ * endpoints, so the line still meets its drawn anchors, and is a no-op for
471
+ * fewer than three control points (a single segment cannot be smoothed).
472
+ */
473
+ interface SmoothLineOptions {
474
+ /**
475
+ * Round the line's corners by curving the path through the control points
476
+ * (centripetal Catmull-Rom spline). The spline preserves the endpoints, so
477
+ * the line still meets its drawn anchors.
478
+ * @default false
479
+ */
480
+ smooth?: boolean;
481
+ /**
482
+ * Number of samples per segment when `smooth` is enabled. Higher values
483
+ * yield a denser, smoother curve.
484
+ * @default (varies per measure)
485
+ */
486
+ smoothResolution?: number;
487
+ }
488
+ //#endregion
470
489
  //#region src/internal/line-labels.d.ts
471
- /** Captured label-size inputs (draw/edit time), as forwarded on generator options. */
490
+ /**
491
+ * Label sizing per the size-anchor model (ADR-0020, ADR-0028): the presence of
492
+ * `labelSizePixels` marks the labels screen-anchored; `labelSize` alone is
493
+ * ground-anchored. Carrying both behaves screen-anchored (pixels win),
494
+ * matching the geometry options' precedence.
495
+ */
472
496
  interface LabelSizeOptions {
497
+ /** Text height in projected meters — ground-anchored label size (ADR-0028). */
498
+ labelSize?: number;
499
+ /** Text height in CSS pixels — screen-anchored label size (ADR-0028). */
473
500
  labelSizePixels?: number;
474
- labelSizeZoom?: number;
475
- labelSizeResolution?: number;
501
+ /**
502
+ * Meters-per-pixel at the current view. Stamped by the host when the labels
503
+ * are screen-anchored; resolves `labelSizePixels` to the projected-meter
504
+ * height that meter-denominated placement (offsets, gaps, row pitch) needs.
505
+ */
506
+ metersPerPixel?: number;
476
507
  }
477
508
  /** Shared placement options for the fixed-end-label line measures. */
478
509
  interface LineLabelOptions extends LabelSizeOptions {
479
510
  /**
480
511
  * 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
512
+ * label's resolved text height (`labelSize`, or `labelSizePixels ×
513
+ * metersPerPixel`), like Boundary's `labelPadding`. Negative values clamp
514
+ * to 0. Only effective when a label size resolves — the no-size fallback
484
515
  * offset is a fixed meter value, unaffected by this ratio.
485
516
  * @default 0
486
517
  */
@@ -489,7 +520,7 @@ interface LineLabelOptions extends LabelSizeOptions {
489
520
  //#endregion
490
521
  //#region src/generators/cm11-command-control-lines/light-line.d.ts
491
522
  /** Configuration options for the Light line control measure. */
492
- interface LightLineOptions extends LineLabelOptions {
523
+ interface LightLineOptions extends LineLabelOptions, SmoothLineOptions {
493
524
  /**
494
525
  * Optional phase line naming: renders `PL <name>` just beyond each end of
495
526
  * the line, additive to the fixed "LL" labels. Empty or whitespace-only
@@ -516,7 +547,7 @@ declare function createLightLine(positions: Position[], options?: LightLineOptio
516
547
  //#endregion
517
548
  //#region src/generators/cm11-command-control-lines/engineer-work-line.d.ts
518
549
  /** Configuration options for the Engineer work line control measure. */
519
- interface EngineerWorkLineOptions extends LineLabelOptions {
550
+ interface EngineerWorkLineOptions extends LineLabelOptions, SmoothLineOptions {
520
551
  /**
521
552
  * Optional phase line naming: renders `PL <name>` just beyond each end of
522
553
  * the line, additive to the fixed "EWL" labels. Empty or whitespace-only
@@ -547,7 +578,7 @@ declare function createEngineerWorkLine(positions: Position[], options?: Enginee
547
578
  //#endregion
548
579
  //#region src/generators/cm11-command-control-lines/generic-c2-line.d.ts
549
580
  /** Configuration options for the Generic command and control line. */
550
- interface GenericC2LineOptions extends LineLabelOptions {
581
+ interface GenericC2LineOptions extends LineLabelOptions, SmoothLineOptions {
551
582
  /**
552
583
  * Optional phase line naming: renders `PL <name>` just beyond each end of
553
584
  * the line, additive to the H/T/W/W1 amplifier labels. Empty or
@@ -825,6 +856,16 @@ declare const DEFAULT_ENCIRCLEMENT_OPTIONS: EncirclementOptions;
825
856
  */
826
857
  declare function createEncirclement(positions: Position[], options?: EncirclementOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
827
858
  //#endregion
859
+ //#region src/generators/cm15-maneuver-areas/area.d.ts
860
+ /** Configuration options for the Area control measure. */
861
+ type AreaOptions = LabeledAreaOptions;
862
+ /**
863
+ * Creates an Area control measure: a closed area through `positions` labeled
864
+ * at its center with an un-prefixed `T` (Field T) plus an `N` (Field N) ENY
865
+ * marker, per {@link labeledAreaFeatures}.
866
+ */
867
+ declare function createArea(positions: Position[], options?: AreaOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
868
+ //#endregion
828
869
  //#region src/generators/cm15-maneuver-areas/assemblyArea.d.ts
829
870
  /** Configuration options for the Assembly area control measure. */
830
871
  type AssemblyAreaOptions = LabeledAreaOptions;
@@ -850,6 +891,46 @@ declare const DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS: JointTacticalActionAre
850
891
  */
851
892
  declare function createJointTacticalActionArea(positions: Position[], options?: JointTacticalActionAreaOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
852
893
  //#endregion
894
+ //#region src/generators/cm15-maneuver-areas/submarineActionArea.d.ts
895
+ /** Configuration options for the Submarine action area control measure. */
896
+ type SubmarineActionAreaOptions = LabeledAreaOptions;
897
+ /**
898
+ * Creates a Submarine action area control measure: a closed area through
899
+ * `positions` labeled at its center with "SAA -"-prefixed `T` (Field T) plus
900
+ * `W`/`W1`/`N` amplifier rows, per {@link labeledAreaFeatures}.
901
+ */
902
+ declare function createSubmarineActionArea(positions: Position[], options?: SubmarineActionAreaOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
903
+ //#endregion
904
+ //#region src/generators/cm15-maneuver-areas/submarineGeneratedActionArea.d.ts
905
+ /** Configuration options for the Submarine-generated action area control measure. */
906
+ type SubmarineGeneratedActionAreaOptions = LabeledAreaOptions;
907
+ /**
908
+ * Creates a Submarine-generated action area control measure: a closed area
909
+ * through `positions` labeled at its center with "SGSA -"-prefixed `T`
910
+ * (Field T) plus `W`/`W1`/`N` amplifier rows, per {@link labeledAreaFeatures}.
911
+ */
912
+ declare function createSubmarineGeneratedActionArea(positions: Position[], options?: SubmarineGeneratedActionAreaOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
913
+ //#endregion
914
+ //#region src/generators/cm15-maneuver-areas/dropZone.d.ts
915
+ /** Configuration options for the Drop zone control measure. */
916
+ type DropZoneOptions = LabeledAreaOptions;
917
+ /**
918
+ * Creates a Drop zone control measure: a closed area through `positions`
919
+ * labeled at its center with "DZ "-prefixed `T` (Field T) plus an `N`
920
+ * (Field N) ENY marker, per {@link labeledAreaFeatures}.
921
+ */
922
+ declare function createDropZone(positions: Position[], options?: DropZoneOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
923
+ //#endregion
924
+ //#region src/generators/cm15-maneuver-areas/extractionZone.d.ts
925
+ /** Configuration options for the Extraction zone control measure. */
926
+ type ExtractionZoneOptions = LabeledAreaOptions;
927
+ /**
928
+ * Creates an Extraction zone control measure: a closed area through
929
+ * `positions` labeled at its center with "EZ "-prefixed `T` (Field T) plus
930
+ * an `N` (Field N) ENY marker, per {@link labeledAreaFeatures}.
931
+ */
932
+ declare function createExtractionZone(positions: Position[], options?: ExtractionZoneOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
933
+ //#endregion
853
934
  //#region src/generators/cm15-maneuver-areas/landingZone.d.ts
854
935
  /** Configuration options for the Landing zone control measure. */
855
936
  type LandingZoneOptions = LabeledAreaOptions;
@@ -874,6 +955,36 @@ declare const DEFAULT_PICKUP_ZONE_OPTIONS: PickupZoneOptions;
874
955
  */
875
956
  declare function createPickupZone(positions: Position[], options?: PickupZoneOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
876
957
  //#endregion
958
+ //#region src/generators/cm15-maneuver-areas/assaultPosition.d.ts
959
+ /** Configuration options for the Assault position control measure. */
960
+ type AssaultPositionOptions = LabeledAreaOptions;
961
+ /**
962
+ * Creates an Assault position control measure: a closed area through
963
+ * `positions` labeled at its center with "ASLT "-prefixed `T` (Field T) —
964
+ * the sole label row, per {@link labeledAreaFeatures}.
965
+ */
966
+ declare function createAssaultPosition(positions: Position[], options?: AssaultPositionOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
967
+ //#endregion
968
+ //#region src/generators/cm15-maneuver-areas/attackPosition.d.ts
969
+ /** Configuration options for the Attack position control measure. */
970
+ type AttackPositionOptions = LabeledAreaOptions;
971
+ /**
972
+ * Creates an Attack position control measure: a closed area through
973
+ * `positions` labeled at its center with "ATK "-prefixed `T` (Field T) —
974
+ * the sole label row, per {@link labeledAreaFeatures}.
975
+ */
976
+ declare function createAttackPosition(positions: Position[], options?: AttackPositionOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
977
+ //#endregion
978
+ //#region src/generators/cm15-maneuver-areas/objectiveArea.d.ts
979
+ /** Configuration options for the Objective area control measure. */
980
+ type ObjectiveAreaOptions = LabeledAreaOptions;
981
+ /**
982
+ * Creates an Objective area control measure: a closed area through
983
+ * `positions` labeled at its center with "OBJ "-prefixed `T` (Field T) —
984
+ * the sole label row, per {@link labeledAreaFeatures}.
985
+ */
986
+ declare function createObjectiveArea(positions: Position[], options?: ObjectiveAreaOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
987
+ //#endregion
877
988
  //#region src/generators/cm12-command-control-areas/area-of-operations.d.ts
878
989
  /** Configuration options for the Area of operations control measure. */
879
990
  type AreaOfOperationsOptions = LabeledAreaOptions;
@@ -886,6 +997,135 @@ declare const DEFAULT_AREA_OF_OPERATIONS_OPTIONS: AreaOfOperationsOptions;
886
997
  */
887
998
  declare function createAreaOfOperations(positions: Position[], options?: AreaOfOperationsOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
888
999
  //#endregion
1000
+ //#region src/generators/cm12-command-control-areas/named-area-of-interest.d.ts
1001
+ /** Configuration options for the Named area of interest control measure. */
1002
+ type NamedAreaOfInterestOptions = LabeledAreaOptions;
1003
+ /**
1004
+ * Creates a Named area of interest control measure: a closed area through
1005
+ * `positions` labeled at its center with "NAI "-prefixed `T` (Field T) —
1006
+ * the sole label row, per {@link labeledAreaFeatures}.
1007
+ */
1008
+ declare function createNamedAreaOfInterest(positions: Position[], options?: NamedAreaOfInterestOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
1009
+ //#endregion
1010
+ //#region src/generators/cm12-command-control-areas/target-area-of-interest.d.ts
1011
+ /** Configuration options for the Target area of interest control measure. */
1012
+ type TargetAreaOfInterestOptions = LabeledAreaOptions;
1013
+ /**
1014
+ * Creates a Target area of interest control measure: a closed area through
1015
+ * `positions` labeled at its center with "TAI "-prefixed `T` (Field T) —
1016
+ * the sole label row, per {@link labeledAreaFeatures}.
1017
+ */
1018
+ declare function createTargetAreaOfInterest(positions: Position[], options?: TargetAreaOfInterestOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
1019
+ //#endregion
1020
+ //#region src/generators/cm12-command-control-areas/airfield-zone.d.ts
1021
+ /** Configuration options for the Airfield zone control measure. */
1022
+ interface AirfieldZoneOptions extends LabeledAreaOptions {
1023
+ /**
1024
+ * The runway glyph's long line, as a ratio of the ring's projected
1025
+ * bounding-box width (full length, not half).
1026
+ * @default 0.55
1027
+ */
1028
+ glyphSizeRatio?: number;
1029
+ }
1030
+ /**
1031
+ * Creates an Airfield zone control measure: a closed area through
1032
+ * `positions` with a runway glyph (two crossed lines forming a shallow
1033
+ * asymmetric X) centered on the ring, and Field H placed outside the area to
1034
+ * the east when set.
1035
+ *
1036
+ * @param positions - Area anchor points (≥3); the input contract is enforced
1037
+ * at the render seam (ADR-0014).
1038
+ * @param options - {@link AirfieldZoneOptions}.
1039
+ * @param textAmplifiers - Field H only.
1040
+ */
1041
+ declare function createAirfieldZone(positions: Position[], options?: AirfieldZoneOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
1042
+ //#endregion
1043
+ //#region src/generators/cm12-command-control-areas/echelon-labeled-area.d.ts
1044
+ /**
1045
+ * Configuration options shared by Base Camp and Guerrilla Base: the full L-15
1046
+ * label placement ({@link LabeledAreaOptions}) plus Battle Position's Field B
1047
+ * echelon knobs.
1048
+ */
1049
+ interface EchelonLabeledAreaOptions extends LabeledAreaOptions {
1050
+ /**
1051
+ * Field B echelon straddling the boundary. `"none"` (the default — the
1052
+ * standard's examples show no echelon glyph), empty, or unknown renders no
1053
+ * glyph and leaves the boundary unaffected by echelon masking.
1054
+ * @default "none"
1055
+ */
1056
+ echelon?: string;
1057
+ /**
1058
+ * Echelon glyph height in meters (ground-anchored). Ignored when
1059
+ * `echelonSizePixels` is supplied together with `metersPerPixel`.
1060
+ * @default 750
1061
+ */
1062
+ echelonSize?: number;
1063
+ /**
1064
+ * Echelon glyph height in screen pixels (screen-anchored). Resolved to
1065
+ * meters against `metersPerPixel`; bakes to a meter size on draw/edit
1066
+ * commit (ADR-0020).
1067
+ * @default 16
1068
+ */
1069
+ echelonSizePixels?: number;
1070
+ /**
1071
+ * Gap left on each side of the echelon glyph, as a ratio of the glyph
1072
+ * height. `0` butts the boundary against the glyph; larger values widen
1073
+ * the break.
1074
+ * @default 0.3
1075
+ */
1076
+ echelonPadding?: number;
1077
+ /**
1078
+ * Slides the echelon along the boundary, as a signed fraction of the total
1079
+ * perimeter measured from its default anchor on the bottom edge.
1080
+ * @default 0
1081
+ */
1082
+ echelonPosition?: number;
1083
+ /**
1084
+ * Absolute anchor for the echelon glyph, as a fraction of the total
1085
+ * perimeter measured from the ring seam, wrapped into `[0, 1)`. See Battle
1086
+ * Position's `echelonAnchor` (ADR-0023) — edit controllers freeze this via
1087
+ * the `freezeOrientation` hook the moment a rotate gesture starts.
1088
+ */
1089
+ echelonAnchor?: number;
1090
+ /**
1091
+ * Meters-per-pixel at the current zoom/latitude. Stamped by the host when
1092
+ * the measure is screen-anchored; required to resolve `echelonSizePixels`.
1093
+ */
1094
+ metersPerPixel?: number;
1095
+ }
1096
+ //#endregion
1097
+ //#region src/generators/cm12-command-control-areas/base-camp.d.ts
1098
+ /** Configuration options for the Base camp control measure. */
1099
+ type BaseCampOptions = EchelonLabeledAreaOptions;
1100
+ /**
1101
+ * Creates a Base camp control measure: a closed area through `positions`
1102
+ * labeled at its center with "BC "-prefixed `T` (Field T) plus `H`/`W`/`W1`/`N`
1103
+ * amplifier rows, and an optional Field B echelon glyph straddling the
1104
+ * boundary, per {@link echelonLabeledAreaFeatures}.
1105
+ */
1106
+ declare function createBaseCamp(positions: Position[], options?: BaseCampOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | MultiPolygon | Point>;
1107
+ //#endregion
1108
+ //#region src/generators/cm12-command-control-areas/guerrilla-base.d.ts
1109
+ /** Configuration options for the Guerrilla base control measure. */
1110
+ type GuerrillaBaseOptions = EchelonLabeledAreaOptions;
1111
+ /**
1112
+ * Creates a Guerrilla base control measure: a closed area through
1113
+ * `positions` labeled at its center with "GB "-prefixed `T` (Field T) plus
1114
+ * `H`/`W`/`W1`/`N` amplifier rows, and an optional Field B echelon glyph
1115
+ * straddling the boundary, per {@link echelonLabeledAreaFeatures}.
1116
+ */
1117
+ declare function createGuerrillaBase(positions: Position[], options?: GuerrillaBaseOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | MultiPolygon | Point>;
1118
+ //#endregion
1119
+ //#region src/generators/cm12-command-control-areas/generic-c2-area.d.ts
1120
+ /** Configuration options for the Generic command and control area control measure. */
1121
+ type GenericC2AreaOptions = LabeledAreaOptions;
1122
+ /**
1123
+ * Creates a Generic command and control area control measure: a closed area
1124
+ * through `positions` labeled at its center with the bare `T` (Field T) plus
1125
+ * `H`/`W`/`W1`/`N` amplifier rows — no prefix, per {@link labeledAreaFeatures}.
1126
+ */
1127
+ declare function createGenericC2Area(positions: Position[], options?: GenericC2AreaOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | MultiLineString | Point>;
1128
+ //#endregion
889
1129
  //#region src/attack-utils.d.ts
890
1130
  interface AttackOptions {
891
1131
  shaftWidthRatio?: number;
@@ -1162,7 +1402,7 @@ declare function createAttackByFire(coordinates: Position[], options?: AttackByF
1162
1402
  /**
1163
1403
  * Configuration options for the FLOT (Forward Line of Own Troops) geometry.
1164
1404
  */
1165
- interface FLOTOptions {
1405
+ interface FLOTOptions extends SmoothLineOptions {
1166
1406
  /**
1167
1407
  * The radius of the semicircular arcs in meters.
1168
1408
  * Semicircles are placed tangent to each other (diameter = 2 * radius).
@@ -1218,7 +1458,7 @@ declare function createFLOT(positions: Position[], options?: FLOTOptions): Featu
1218
1458
  //#endregion
1219
1459
  //#region src/generators/cm14-maneuver-lines/phase-line.d.ts
1220
1460
  /** Configuration options for the Phase line control measure. */
1221
- interface PhaseLineOptions extends LineLabelOptions {
1461
+ interface PhaseLineOptions extends LineLabelOptions, SmoothLineOptions {
1222
1462
  /**
1223
1463
  * Prefix the end labels with "PL" (`"PL ECHO"`, or a bare `"PL"` when no
1224
1464
  * designation is set). When `false`, the label is the bare designation
@@ -1237,7 +1477,7 @@ declare function createPhaseLine(positions: Position[], options?: PhaseLineOptio
1237
1477
  //#endregion
1238
1478
  //#region src/generators/cm14-maneuver-lines/handover-line.d.ts
1239
1479
  /** Configuration options for the Handover line control measure. */
1240
- interface HandoverLineOptions extends LineLabelOptions {
1480
+ interface HandoverLineOptions extends LineLabelOptions, SmoothLineOptions {
1241
1481
  /**
1242
1482
  * Optional phase line naming: renders `PL <name>` just beyond each end of
1243
1483
  * the line, additive to the fixed "HOL" labels. Empty or whitespace-only
@@ -1264,7 +1504,7 @@ declare function createHandoverLine(positions: Position[], options?: HandoverLin
1264
1504
  //#endregion
1265
1505
  //#region src/generators/cm14-maneuver-lines/battle-handover-line.d.ts
1266
1506
  /** Configuration options for the Battle handover line control measure. */
1267
- interface BattleHandoverLineOptions extends LineLabelOptions {
1507
+ interface BattleHandoverLineOptions extends LineLabelOptions, SmoothLineOptions {
1268
1508
  /**
1269
1509
  * Optional phase line naming: renders `PL <name>` just beyond each end of
1270
1510
  * the line, additive to the fixed "BHL" labels. Empty or whitespace-only
@@ -1293,14 +1533,12 @@ declare function createBattleHandoverLine(positions: Position[], options?: Battl
1293
1533
  interface BlockMissionTaskOptions {
1294
1534
  /** Gap for the 'B' label as a ratio of the front length (default: 0.2) */
1295
1535
  labelGapRatio?: number;
1296
- /** Label height in CSS pixels at the draw/reference zoom. */
1536
+ /** Text height in projected meters — ground-anchored label size (ADR-0028). */
1537
+ labelSize?: number;
1538
+ /** Text height in CSS pixels — screen-anchored label size (ADR-0028). */
1297
1539
  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
1540
  }
1303
- declare const DEFAULT_BLOCK_MISSION_TASK_OPTIONS: Required<Omit<BlockMissionTaskOptions, "labelSizePixels" | "labelSizeZoom" | "labelSizeResolution">>;
1541
+ declare const DEFAULT_BLOCK_MISSION_TASK_OPTIONS: Required<Omit<BlockMissionTaskOptions, "labelSize" | "labelSizePixels">>;
1304
1542
  /**
1305
1543
  * Generates a GeoJSON FeatureCollection for a BLOCK mission task symbol (340100).
1306
1544
  *
@@ -1324,17 +1562,15 @@ interface BreachOptions {
1324
1562
  tickAngle?: number;
1325
1563
  /** Gap for the 'B' label as a ratio of the front length (default: 0.2) */
1326
1564
  labelGapRatio?: number;
1327
- /** Label height in CSS pixels at the draw/reference zoom. */
1565
+ /** Text height in projected meters — ground-anchored label size (ADR-0028). */
1566
+ labelSize?: number;
1567
+ /** Text height in CSS pixels — screen-anchored label size (ADR-0028). */
1328
1568
  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
1569
  }
1334
1570
  /**
1335
1571
  * Default options for the BREACH symbol.
1336
1572
  */
1337
- declare const DEFAULT_BREACH_OPTIONS: Required<Omit<BreachOptions, "labelSizePixels" | "labelSizeZoom" | "labelSizeResolution">>;
1573
+ declare const DEFAULT_BREACH_OPTIONS: Required<Omit<BreachOptions, "labelSize" | "labelSizePixels">>;
1338
1574
  /**
1339
1575
  * Generates a GeoJSON FeatureCollection for a BREACH mission task symbol (340200).
1340
1576
  *
@@ -1357,17 +1593,15 @@ interface BypassOptions {
1357
1593
  arrowheadLengthRatio?: number;
1358
1594
  /** Gap for the 'B' label as a ratio of the front length (default: 0.2) */
1359
1595
  labelGapRatio?: number;
1360
- /** Label height in CSS pixels at the draw/reference zoom. */
1596
+ /** Text height in projected meters — ground-anchored label size (ADR-0028). */
1597
+ labelSize?: number;
1598
+ /** Text height in CSS pixels — screen-anchored label size (ADR-0028). */
1361
1599
  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
1600
  }
1367
1601
  /**
1368
1602
  * Default options for the BYPASS symbol.
1369
1603
  */
1370
- declare const DEFAULT_BYPASS_OPTIONS: Required<Omit<BypassOptions, "labelSizePixels" | "labelSizeZoom" | "labelSizeResolution">>;
1604
+ declare const DEFAULT_BYPASS_OPTIONS: Required<Omit<BypassOptions, "labelSize" | "labelSizePixels">>;
1371
1605
  /**
1372
1606
  * Generates a GeoJSON FeatureCollection for a BYPASS mission task symbol (340300).
1373
1607
  *
@@ -1392,17 +1626,15 @@ interface CanalizeOptions {
1392
1626
  tickAngle?: number;
1393
1627
  /** Gap for the 'C' label as a ratio of the front length (default: 0.2) */
1394
1628
  labelGapRatio?: number;
1395
- /** Label height in CSS pixels at the draw/reference zoom. */
1629
+ /** Text height in projected meters — ground-anchored label size (ADR-0028). */
1630
+ labelSize?: number;
1631
+ /** Text height in CSS pixels — screen-anchored label size (ADR-0028). */
1396
1632
  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
1633
  }
1402
1634
  /**
1403
1635
  * Default options for the CANALIZE symbol.
1404
1636
  */
1405
- declare const DEFAULT_CANALIZE_OPTIONS: Required<Omit<CanalizeOptions, "labelSizePixels" | "labelSizeZoom" | "labelSizeResolution">>;
1637
+ declare const DEFAULT_CANALIZE_OPTIONS: Required<Omit<CanalizeOptions, "labelSize" | "labelSizePixels">>;
1406
1638
  /**
1407
1639
  * Generates a GeoJSON FeatureCollection for a CANALIZE mission task symbol (340400).
1408
1640
  *
@@ -1433,17 +1665,15 @@ interface ClearOptions {
1433
1665
  arrowheadWidthRatio?: number;
1434
1666
  /** Gap for the 'C' label as a ratio of the shaft length (default: 0.2). */
1435
1667
  labelGapRatio?: number;
1436
- /** Label height in CSS pixels at the draw/reference zoom. */
1668
+ /** Text height in projected meters — ground-anchored label size (ADR-0028). */
1669
+ labelSize?: number;
1670
+ /** Text height in CSS pixels — screen-anchored label size (ADR-0028). */
1437
1671
  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
1672
  }
1443
1673
  /**
1444
1674
  * Default options for the CLEAR symbol.
1445
1675
  */
1446
- declare const DEFAULT_CLEAR_OPTIONS: Required<Omit<ClearOptions, "labelSizePixels" | "labelSizeZoom" | "labelSizeResolution">>;
1676
+ declare const DEFAULT_CLEAR_OPTIONS: Required<Omit<ClearOptions, "labelSize" | "labelSizePixels">>;
1447
1677
  /**
1448
1678
  * Generates a GeoJSON FeatureCollection for a CLEAR mission task symbol (340500).
1449
1679
  *
@@ -1477,14 +1707,12 @@ interface DelayOptions {
1477
1707
  labelGapRatio?: number;
1478
1708
  /** Number of segments used to approximate the 180-degree arc (default: 32). */
1479
1709
  arcSegments?: number;
1480
- /** Label height in CSS pixels at the draw/reference zoom. */
1710
+ /** Text height in projected meters — ground-anchored label size (ADR-0028). */
1711
+ labelSize?: number;
1712
+ /** Text height in CSS pixels — screen-anchored label size (ADR-0028). */
1481
1713
  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
1714
  }
1487
- declare const DEFAULT_DELAY_OPTIONS: Required<Omit<DelayOptions, "labelSizePixels" | "labelSizeZoom" | "labelSizeResolution">>;
1715
+ declare const DEFAULT_DELAY_OPTIONS: Required<Omit<DelayOptions, "labelSize" | "labelSizePixels">>;
1488
1716
  declare function createDelaySymbol(coordinates: Position[], options?: DelayOptions): FeatureCollection<MultiLineString | Point>;
1489
1717
  //#endregion
1490
1718
  //#region src/generators/cm34-mission-tasks/isolate.d.ts
@@ -1522,7 +1750,7 @@ interface IsolateOptions {
1522
1750
  declare function createIsolateSymbol(coordinates: Position[], options?: IsolateOptions): FeatureCollection<MultiLineString>;
1523
1751
  //#endregion
1524
1752
  //#region src/generators/cm29-protection-lines/antitankDitch.d.ts
1525
- interface AntitankDitchOptions {
1753
+ interface AntitankDitchOptions extends SmoothLineOptions {
1526
1754
  /**
1527
1755
  * The tooth depth in meters. Target tooth spacing is roughly 1.15x this depth.
1528
1756
  * Ignored when toothHeightPixels is provided with metersPerPixel.
@@ -1816,11 +2044,25 @@ declare const DEFINITIONS: {
1816
2044
  fill?: boolean;
1817
2045
  }>>;
1818
2046
  encirclement: ControlMeasureDefinition<"encirclement", typeof createEncirclement>;
2047
+ area: ControlMeasureDefinition<"area", typeof createArea>;
1819
2048
  "assembly-area": ControlMeasureDefinition<"assembly-area", typeof createAssemblyArea>;
1820
2049
  "joint-tactical-action-area": ControlMeasureDefinition<"joint-tactical-action-area", typeof createJointTacticalActionArea>;
2050
+ "submarine-action-area": ControlMeasureDefinition<"submarine-action-area", typeof createSubmarineActionArea>;
2051
+ "submarine-generated-action-area": ControlMeasureDefinition<"submarine-generated-action-area", typeof createSubmarineGeneratedActionArea>;
2052
+ "drop-zone": ControlMeasureDefinition<"drop-zone", typeof createDropZone>;
2053
+ "extraction-zone": ControlMeasureDefinition<"extraction-zone", typeof createExtractionZone>;
1821
2054
  "landing-zone": ControlMeasureDefinition<"landing-zone", typeof createLandingZone>;
1822
2055
  "pickup-zone": ControlMeasureDefinition<"pickup-zone", typeof createPickupZone>;
2056
+ "assault-position": ControlMeasureDefinition<"assault-position", typeof createAssaultPosition>;
2057
+ "attack-position": ControlMeasureDefinition<"attack-position", typeof createAttackPosition>;
2058
+ "objective-area": ControlMeasureDefinition<"objective-area", typeof createObjectiveArea>;
1823
2059
  "area-of-operations": ControlMeasureDefinition<"area-of-operations", typeof createAreaOfOperations>;
2060
+ "named-area-of-interest": ControlMeasureDefinition<"named-area-of-interest", typeof createNamedAreaOfInterest>;
2061
+ "target-area-of-interest": ControlMeasureDefinition<"target-area-of-interest", typeof createTargetAreaOfInterest>;
2062
+ "airfield-zone": ControlMeasureDefinition<"airfield-zone", typeof createAirfieldZone>;
2063
+ "base-camp": ControlMeasureDefinition<"base-camp", typeof createBaseCamp>;
2064
+ "guerrilla-base": ControlMeasureDefinition<"guerrilla-base", typeof createGuerrillaBase>;
2065
+ "generic-c2-area": ControlMeasureDefinition<"generic-c2-area", typeof createGenericC2Area>;
1824
2066
  "main-attack": ControlMeasureDefinition<"main-attack", typeof createMainAttack>;
1825
2067
  "supporting-attack": ControlMeasureDefinition<"supporting-attack", typeof createSupportingAttack>;
1826
2068
  "classic-arrow": ControlMeasureDefinition<"classic-arrow", typeof createClassicArrow>;
@@ -1974,12 +2216,18 @@ interface FeaturePartProps {
1974
2216
  * text begins at the point, `"end"` = it ends there. Absent = centered.
1975
2217
  */
1976
2218
  textAnchor?: "start" | "end";
1977
- /** Label size in CSS pixels at the draw/reference zoom. */
2219
+ /**
2220
+ * Screen-anchored label size in CSS pixels — held constant on screen
2221
+ * (ADR-0028). Mutually exclusive with `textSizeMeters`; absent both,
2222
+ * adapters render their engine default, screen-fixed.
2223
+ */
1978
2224
  textSizePixels?: number;
1979
- /** Map zoom at which textSizePixels was captured. */
1980
- textSizeZoom?: number;
1981
- /** Map resolution at which textSizePixels was captured. */
1982
- textSizeResolution?: number;
2225
+ /**
2226
+ * Ground-anchored label text height in projected meters (ADR-0028).
2227
+ * Adapters render `clamp(textSizeMeters / resolution, min, max)` px, per
2228
+ * their configured clamp band.
2229
+ */
2230
+ textSizeMeters?: number;
1983
2231
  }
1984
2232
  /**
1985
2233
  * Output of `renderControlMeasure`. A GeoJSON `FeatureCollection` whose
package/dist/index.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { $ as getControlMeasureMetadata, $n as ControlMeasureMetadata, $t as DEFAULT_GENERIC_CIRCLE_OPTIONS, A as getMetersPerPixel, An as EncirclementOptions, At as DEFAULT_CANALIZE_OPTIONS, B as ControlMeasureSnapshot, Bn as GenericC2LineOptions, Bt as HandoverLineOptions, C as snapToMidpointPerpendicular, Cn as DEFAULT_LANDING_ZONE_OPTIONS, Ct as AntitankDitchOptions, D as BaselineFrameOrigin, Dn as AssemblyAreaOptions, Dt as ClearOptions, E as BaselineFrameOptions, En as JointTacticalActionAreaOptions, Et as DelayOptions, F as resolveStyleHints, Fn as DEFAULT_STRONG_POINT_OPTIONS, Ft as BlockMissionTaskOptions, G as cloneControlMeasure, Gn as LabelSizeOptions, Gt as AttackByFireOptions, H as StyleHints, Hn as EngineerWorkLineOptions, Ht as PhaseLineOptions, I as freezeOrientationOptions, In as StrongPointOptions, It as DEFAULT_BLOCK_MISSION_TASK_OPTIONS, J as CONTROL_MEASURE_IDS, Jn as unproject, Jt as SupportByFireOptions, K as isKind, Kn as Point2D, Kt as DEFAULT_ATTACK_BY_FIRE_OPTIONS, L as RenderOptions, Ln as BattlePositionOptions, Lt as BattleHandoverLineOptions, M as SimpleStyleProps, Mn as FinalProtectiveFireOptions, Mt as DEFAULT_BYPASS_OPTIONS, N as SimpleStyleRender, Nn as DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, Nt as BreachOptions, O as createBaselineFrame, On as DEFAULT_ASSEMBLY_AREA_OPTIONS, Ot as DEFAULT_CLEAR_OPTIONS, P as toSimpleStyle, Pn as PrincipalDirectionOfFireOptions, Pt as DEFAULT_BREACH_OPTIONS, Q as OptionsByKind, Qn as ControlMeasureGeometryType, Qt as DEFAULT_AIRBORNE_ATTACK_OPTIONS, R as renderControlMeasure, Rn as DEFAULT_BATTLE_POSITION_OPTIONS, Rt as DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS, S as pointOnMidpointPerpendicularAxis, Sn as PickupZoneOptions, St as DEFAULT_ANTITANK_WALL_OPTIONS, T as BaselineFrameNormal, Tn as DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS, Tt as DEFAULT_DELAY_OPTIONS, U as controlMeasureIdFromFeature, Un as DEFAULT_LIGHT_LINE_OPTIONS, Ut as DEFAULT_FLOT_OPTIONS, V as FeaturePartProps, Vn as DEFAULT_ENGINEER_WORK_LINE_OPTIONS, Vt as DEFAULT_PHASE_LINE_OPTIONS, W as ControlMeasure, Wn as LightLineOptions, Wt as FLOTOptions, X as ControlMeasureId, Xn as DEFAULT_BOUNDARY_OPTIONS, Xt as DEFAULT_ATTACK_HELICOPTER_OPTIONS, Y as CONTROL_MEASURE_METADATA, Yn as BoundaryOptions, Yt as AttackHelicopterOptions, Z as ControlMeasureKind, Zn as ControlMeasureGeometry, Zt as AirborneAttackOptions, _ as blockDrawRule, _n as calculateMetrics, _t as DEFAULT_FORTIFIED_AREA_OPTIONS, a as rectangleDrawRule, an as DEFAULT_GENERIC_LINE_OPTIONS, ar as TextAmplifierKey, at as DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS, b as createMidpointPerpendicularDrawRule, bn as DEFAULT_AREA_OF_OPERATIONS_OPTIONS, bt as FortifiedLineOptions, c as line24DrawRule, cn as BlockArrowOptions, cr as normalizeTextAmplifiers, ct as ObstacleBypassEasyOptions, d as line1DrawRule, dn as ClassicArrowOptions, dt as DEFAULT_FIX_OPTIONS, en as GenericCircleOptions, er as ParamDescriptor, et as getControlMeasureMetadataByValue, f as ambushDrawRule, fn as DEFAULT_CLASSIC_ARROW_OPTIONS, ft as FixOptions, g as disruptDrawRule, gn as MainAttackOptions, gt as DEFAULT_BLOCK_OPTIONS, h as centerRadiusDrawRule, hn as DEFAULT_MAIN_ATTACK_OPTIONS, ht as BlockOptions, i as DEFAULT_AMBUSH_OPTIONS, in as GenericPolygonOptions, ir as TextAmplifierField, it as ObstacleBypassImpossibleOptions, j as roundToFixed, jn as DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS, jt as BypassOptions, k as EPSILON, kn as DEFAULT_ENCIRCLEMENT_OPTIONS, kt as CanalizeOptions, l as line23DrawRule, ln as DEFAULT_BLOCK_ARROW_OPTIONS, lr as AnchorTransformEvent, lt as DEFAULT_TURN_OPTIONS, m as point12DrawRule, mn as SupportingAttackOptions, mt as DisruptOptions, n as TacticalArrowOptions, nn as GenericRectangleOptions, nr as CanonicalTextAmplifiers, nt as listControlMeasureMetadata, o as axis1DrawRule, on as GenericLineOptions, or as TextAmplifiers, ot as ObstacleBypassDifficultOptions, p as attackByFireDrawRule, pn as DEFAULT_SUPPORTING_ATTACK_OPTIONS, pt as DEFAULT_DISRUPT_OPTIONS, q as ControlMeasureStyle, qn as project, qt as DEFAULT_SUPPORT_BY_FIRE_OPTIONS, r as AmbushOptions, rn as DEFAULT_GENERIC_POLYGON_OPTIONS, rr as TEXT_AMPLIFIER_FIELDS, rt as DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS, s as supportByFireDrawRule, sn as BlockArrowHeadStyle, sr as canonicalTextAmplifierKey, st as DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS, t as DEFAULT_TACTICAL_ARROW_OPTIONS, tn as DEFAULT_GENERIC_RECTANGLE_OPTIONS, tr as TextAmplifierDescriptor, tt as getDefaultOptions, u as turnDrawRule, un as ClassicArrowHeadStyle, ur as ControlMeasureDrawRule, ut as TurnOptions, v as MidpointPerpendicularDrawRuleOptions, vn as computeInitialWidthPoint, vt as FortifiedAreaOptions, w as BaselineFrame, wn as LandingZoneOptions, wt as DEFAULT_ANTITANK_DITCH_OPTIONS, x as getMidpointPerpendicularSignedDistance, xn as DEFAULT_PICKUP_ZONE_OPTIONS, xt as AntitankWallOptions, y as computeDefaultMidpointPerpendicularPoint, yn as AreaOfOperationsOptions, yt as DEFAULT_FORTIFIED_LINE_OPTIONS, z as ControlMeasureRender, zn as DEFAULT_GENERIC_C2_LINE_OPTIONS, zt as DEFAULT_HANDOVER_LINE_OPTIONS } from "./index-D3uCYKe3.mjs";
1
+ import { $ as getControlMeasureMetadata, $n as ControlMeasureMetadata, $t as DEFAULT_GENERIC_CIRCLE_OPTIONS, A as getMetersPerPixel, An as EncirclementOptions, At as DEFAULT_CANALIZE_OPTIONS, B as ControlMeasureSnapshot, Bn as GenericC2LineOptions, Bt as HandoverLineOptions, C as snapToMidpointPerpendicular, Cn as DEFAULT_LANDING_ZONE_OPTIONS, Ct as AntitankDitchOptions, D as BaselineFrameOrigin, Dn as AssemblyAreaOptions, Dt as ClearOptions, E as BaselineFrameOptions, En as JointTacticalActionAreaOptions, Et as DelayOptions, F as resolveStyleHints, Fn as DEFAULT_STRONG_POINT_OPTIONS, Ft as BlockMissionTaskOptions, G as cloneControlMeasure, Gn as LabelSizeOptions, Gt as AttackByFireOptions, H as StyleHints, Hn as EngineerWorkLineOptions, Ht as PhaseLineOptions, I as freezeOrientationOptions, In as StrongPointOptions, It as DEFAULT_BLOCK_MISSION_TASK_OPTIONS, J as CONTROL_MEASURE_IDS, Jn as unproject, Jt as SupportByFireOptions, K as isKind, Kn as Point2D, Kt as DEFAULT_ATTACK_BY_FIRE_OPTIONS, L as RenderOptions, Ln as BattlePositionOptions, Lt as BattleHandoverLineOptions, M as SimpleStyleProps, Mn as FinalProtectiveFireOptions, Mt as DEFAULT_BYPASS_OPTIONS, N as SimpleStyleRender, Nn as DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, Nt as BreachOptions, O as createBaselineFrame, On as DEFAULT_ASSEMBLY_AREA_OPTIONS, Ot as DEFAULT_CLEAR_OPTIONS, P as toSimpleStyle, Pn as PrincipalDirectionOfFireOptions, Pt as DEFAULT_BREACH_OPTIONS, Q as OptionsByKind, Qn as ControlMeasureGeometryType, Qt as DEFAULT_AIRBORNE_ATTACK_OPTIONS, R as renderControlMeasure, Rn as DEFAULT_BATTLE_POSITION_OPTIONS, Rt as DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS, S as pointOnMidpointPerpendicularAxis, Sn as PickupZoneOptions, St as DEFAULT_ANTITANK_WALL_OPTIONS, T as BaselineFrameNormal, Tn as DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS, Tt as DEFAULT_DELAY_OPTIONS, U as controlMeasureIdFromFeature, Un as DEFAULT_LIGHT_LINE_OPTIONS, Ut as DEFAULT_FLOT_OPTIONS, V as FeaturePartProps, Vn as DEFAULT_ENGINEER_WORK_LINE_OPTIONS, Vt as DEFAULT_PHASE_LINE_OPTIONS, W as ControlMeasure, Wn as LightLineOptions, Wt as FLOTOptions, X as ControlMeasureId, Xn as DEFAULT_BOUNDARY_OPTIONS, Xt as DEFAULT_ATTACK_HELICOPTER_OPTIONS, Y as CONTROL_MEASURE_METADATA, Yn as BoundaryOptions, Yt as AttackHelicopterOptions, Z as ControlMeasureKind, Zn as ControlMeasureGeometry, Zt as AirborneAttackOptions, _ as blockDrawRule, _n as calculateMetrics, _t as DEFAULT_FORTIFIED_AREA_OPTIONS, a as rectangleDrawRule, an as DEFAULT_GENERIC_LINE_OPTIONS, ar as TextAmplifierKey, at as DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS, b as createMidpointPerpendicularDrawRule, bn as DEFAULT_AREA_OF_OPERATIONS_OPTIONS, bt as FortifiedLineOptions, c as line24DrawRule, cn as BlockArrowOptions, cr as normalizeTextAmplifiers, ct as ObstacleBypassEasyOptions, d as line1DrawRule, dn as ClassicArrowOptions, dt as DEFAULT_FIX_OPTIONS, en as GenericCircleOptions, er as ParamDescriptor, et as getControlMeasureMetadataByValue, f as ambushDrawRule, fn as DEFAULT_CLASSIC_ARROW_OPTIONS, ft as FixOptions, g as disruptDrawRule, gn as MainAttackOptions, gt as DEFAULT_BLOCK_OPTIONS, h as centerRadiusDrawRule, hn as DEFAULT_MAIN_ATTACK_OPTIONS, ht as BlockOptions, i as DEFAULT_AMBUSH_OPTIONS, in as GenericPolygonOptions, ir as TextAmplifierField, it as ObstacleBypassImpossibleOptions, j as roundToFixed, jn as DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS, jt as BypassOptions, k as EPSILON, kn as DEFAULT_ENCIRCLEMENT_OPTIONS, kt as CanalizeOptions, l as line23DrawRule, ln as DEFAULT_BLOCK_ARROW_OPTIONS, lr as AnchorTransformEvent, lt as DEFAULT_TURN_OPTIONS, m as point12DrawRule, mn as SupportingAttackOptions, mt as DisruptOptions, n as TacticalArrowOptions, nn as GenericRectangleOptions, nr as CanonicalTextAmplifiers, nt as listControlMeasureMetadata, o as axis1DrawRule, on as GenericLineOptions, or as TextAmplifiers, ot as ObstacleBypassDifficultOptions, p as attackByFireDrawRule, pn as DEFAULT_SUPPORTING_ATTACK_OPTIONS, pt as DEFAULT_DISRUPT_OPTIONS, q as ControlMeasureStyle, qn as project, qt as DEFAULT_SUPPORT_BY_FIRE_OPTIONS, r as AmbushOptions, rn as DEFAULT_GENERIC_POLYGON_OPTIONS, rr as TEXT_AMPLIFIER_FIELDS, rt as DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS, s as supportByFireDrawRule, sn as BlockArrowHeadStyle, sr as canonicalTextAmplifierKey, st as DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS, t as DEFAULT_TACTICAL_ARROW_OPTIONS, tn as DEFAULT_GENERIC_RECTANGLE_OPTIONS, tr as TextAmplifierDescriptor, tt as getDefaultOptions, u as turnDrawRule, un as ClassicArrowHeadStyle, ur as ControlMeasureDrawRule, ut as TurnOptions, v as MidpointPerpendicularDrawRuleOptions, vn as computeInitialWidthPoint, vt as FortifiedAreaOptions, w as BaselineFrame, wn as LandingZoneOptions, wt as DEFAULT_ANTITANK_DITCH_OPTIONS, x as getMidpointPerpendicularSignedDistance, xn as DEFAULT_PICKUP_ZONE_OPTIONS, xt as AntitankWallOptions, y as computeDefaultMidpointPerpendicularPoint, yn as AreaOfOperationsOptions, yt as DEFAULT_FORTIFIED_LINE_OPTIONS, z as ControlMeasureRender, zn as DEFAULT_GENERIC_C2_LINE_OPTIONS, zt as DEFAULT_HANDOVER_LINE_OPTIONS } from "./index-C6nqkw1A.mjs";
2
2
  export { type AirborneAttackOptions, type AmbushOptions, type AnchorTransformEvent, type AntitankDitchOptions, type AntitankWallOptions, type AreaOfOperationsOptions, type AssemblyAreaOptions, type AttackByFireOptions, type AttackHelicopterOptions, type BaselineFrame, type BaselineFrameNormal, type BaselineFrameOptions, type BaselineFrameOrigin, type BattleHandoverLineOptions, type BattlePositionOptions, type BlockArrowHeadStyle, type BlockArrowOptions, type BlockMissionTaskOptions, type BlockOptions, type BoundaryOptions, type BreachOptions, type BypassOptions, CONTROL_MEASURE_IDS, CONTROL_MEASURE_METADATA, type CanalizeOptions, type CanonicalTextAmplifiers, type ClassicArrowHeadStyle, type ClassicArrowOptions, type ClearOptions, type ControlMeasure, type ControlMeasureDrawRule, type ControlMeasureGeometry, type ControlMeasureGeometryType, type ControlMeasureId, type ControlMeasureKind, type ControlMeasureMetadata, type ControlMeasureRender, type ControlMeasureSnapshot, type ControlMeasureStyle, DEFAULT_AIRBORNE_ATTACK_OPTIONS, DEFAULT_AMBUSH_OPTIONS, DEFAULT_ANTITANK_DITCH_OPTIONS, DEFAULT_ANTITANK_WALL_OPTIONS, DEFAULT_AREA_OF_OPERATIONS_OPTIONS, DEFAULT_ASSEMBLY_AREA_OPTIONS, DEFAULT_ATTACK_BY_FIRE_OPTIONS, DEFAULT_ATTACK_HELICOPTER_OPTIONS, DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS, DEFAULT_BATTLE_POSITION_OPTIONS, DEFAULT_BLOCK_ARROW_OPTIONS, DEFAULT_BLOCK_MISSION_TASK_OPTIONS, DEFAULT_BLOCK_OPTIONS, DEFAULT_BOUNDARY_OPTIONS, DEFAULT_BREACH_OPTIONS, DEFAULT_BYPASS_OPTIONS, DEFAULT_CANALIZE_OPTIONS, DEFAULT_CLASSIC_ARROW_OPTIONS, DEFAULT_CLEAR_OPTIONS, DEFAULT_DELAY_OPTIONS, DEFAULT_DISRUPT_OPTIONS, DEFAULT_ENCIRCLEMENT_OPTIONS, DEFAULT_ENGINEER_WORK_LINE_OPTIONS, DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS, DEFAULT_FIX_OPTIONS, DEFAULT_FLOT_OPTIONS, DEFAULT_FORTIFIED_AREA_OPTIONS, DEFAULT_FORTIFIED_LINE_OPTIONS, DEFAULT_GENERIC_C2_LINE_OPTIONS, DEFAULT_GENERIC_CIRCLE_OPTIONS, DEFAULT_GENERIC_LINE_OPTIONS, DEFAULT_GENERIC_POLYGON_OPTIONS, DEFAULT_GENERIC_RECTANGLE_OPTIONS, DEFAULT_HANDOVER_LINE_OPTIONS, DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS, DEFAULT_LANDING_ZONE_OPTIONS, DEFAULT_LIGHT_LINE_OPTIONS, DEFAULT_MAIN_ATTACK_OPTIONS, DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS, DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS, DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS, DEFAULT_PHASE_LINE_OPTIONS, DEFAULT_PICKUP_ZONE_OPTIONS, DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, DEFAULT_STRONG_POINT_OPTIONS, DEFAULT_SUPPORTING_ATTACK_OPTIONS, DEFAULT_SUPPORT_BY_FIRE_OPTIONS, DEFAULT_TACTICAL_ARROW_OPTIONS, DEFAULT_TURN_OPTIONS, type DelayOptions, type DisruptOptions, EPSILON, type EncirclementOptions, type EngineerWorkLineOptions, type FLOTOptions, type FeaturePartProps, type FinalProtectiveFireOptions, type FixOptions, type FortifiedAreaOptions, type FortifiedLineOptions, type GenericC2LineOptions, type GenericCircleOptions, type GenericLineOptions, type GenericPolygonOptions, type GenericRectangleOptions, type HandoverLineOptions, type JointTacticalActionAreaOptions, type LabelSizeOptions, type LandingZoneOptions, type LightLineOptions, type MainAttackOptions, type MidpointPerpendicularDrawRuleOptions, type ObstacleBypassDifficultOptions, type ObstacleBypassEasyOptions, type ObstacleBypassImpossibleOptions, type OptionsByKind, type ParamDescriptor, type PhaseLineOptions, type PickupZoneOptions, type Point2D, type PrincipalDirectionOfFireOptions, type RenderOptions, type SimpleStyleProps, type SimpleStyleRender, type StrongPointOptions, type StyleHints, type SupportByFireOptions, type SupportingAttackOptions, TEXT_AMPLIFIER_FIELDS, type TacticalArrowOptions, type TextAmplifierDescriptor, type TextAmplifierField, type TextAmplifierKey, type TextAmplifiers, type TurnOptions, ambushDrawRule, attackByFireDrawRule, axis1DrawRule, blockDrawRule, calculateMetrics, canonicalTextAmplifierKey, centerRadiusDrawRule, cloneControlMeasure, computeDefaultMidpointPerpendicularPoint, computeInitialWidthPoint, controlMeasureIdFromFeature, createBaselineFrame, createMidpointPerpendicularDrawRule, disruptDrawRule, freezeOrientationOptions, getControlMeasureMetadata, getControlMeasureMetadataByValue, getDefaultOptions, getMetersPerPixel, getMidpointPerpendicularSignedDistance, isKind, line1DrawRule, line23DrawRule, line24DrawRule, listControlMeasureMetadata, normalizeTextAmplifiers, point12DrawRule, pointOnMidpointPerpendicularAxis, project, rectangleDrawRule, renderControlMeasure, resolveStyleHints, roundToFixed, snapToMidpointPerpendicular, supportByFireDrawRule, toSimpleStyle, turnDrawRule, unproject };
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as DEFAULT_BATTLE_POSITION_OPTIONS, A as DEFAULT_PHASE_LINE_OPTIONS, At as unproject, B as DEFAULT_GENERIC_LINE_OPTIONS, C as DEFAULT_MAIN_ATTACK_OPTIONS, Ct as getMidpointPerpendicularSignedDistance, D as DEFAULT_FORTIFIED_LINE_OPTIONS, Dt as calculateMetrics, E as DEFAULT_FORTIFIED_AREA_OPTIONS, Et as createBaselineFrame, F as DEFAULT_DISRUPT_OPTIONS, G as DEFAULT_BREACH_OPTIONS, H as DEFAULT_CLASSIC_ARROW_OPTIONS, I as DEFAULT_DELAY_OPTIONS, J as DEFAULT_ENGINEER_WORK_LINE_OPTIONS, K as DEFAULT_BLOCK_MISSION_TASK_OPTIONS, L as DEFAULT_CLEAR_OPTIONS, M as DEFAULT_FIX_OPTIONS, Mt as getMetersPerPixel, N as DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS, Nt as roundToFixed, O as DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS, Ot as computeInitialWidthPoint, P as DEFAULT_ENCIRCLEMENT_OPTIONS, Q as DEFAULT_BLOCK_OPTIONS, R as DEFAULT_GENERIC_RECTANGLE_OPTIONS, S as DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS, St as createMidpointPerpendicularDrawRule, T as DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS, Tt as snapToMidpointPerpendicular, U as DEFAULT_CANALIZE_OPTIONS, V as DEFAULT_GENERIC_CIRCLE_OPTIONS, W as DEFAULT_BYPASS_OPTIONS, X as DEFAULT_BOUNDARY_OPTIONS, Y as DEFAULT_LIGHT_LINE_OPTIONS, Z as DEFAULT_BLOCK_ARROW_OPTIONS, _ as DEFAULT_TACTICAL_ARROW_OPTIONS, _t as point12DrawRule, a as resolveStyleHints, at as DEFAULT_AREA_OF_OPERATIONS_OPTIONS, b as DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS, bt as blockDrawRule, c as DEFINITIONS, ct as rectangleDrawRule, d as getDefaultOptions, dt as line24DrawRule, et as DEFAULT_ATTACK_HELICOPTER_OPTIONS, f as listControlMeasureMetadata, ft as line23DrawRule, g as DEFAULT_STRONG_POINT_OPTIONS, gt as attackByFireDrawRule, h as DEFAULT_SUPPORT_BY_FIRE_OPTIONS, ht as ambushDrawRule, i as normalizeTextAmplifiers, it as DEFAULT_ASSEMBLY_AREA_OPTIONS, j as DEFAULT_FLOT_OPTIONS, jt as EPSILON, k as DEFAULT_HANDOVER_LINE_OPTIONS, kt as project, l as getControlMeasureMetadata, lt as axis1DrawRule, m as DEFAULT_SUPPORTING_ATTACK_OPTIONS, mt as line1DrawRule, n as TEXT_AMPLIFIER_FIELDS, nt as DEFAULT_ANTITANK_WALL_OPTIONS, o as CONTROL_MEASURE_IDS, ot as DEFAULT_AMBUSH_OPTIONS, p as DEFAULT_TURN_OPTIONS, pt as turnDrawRule, q as DEFAULT_GENERIC_C2_LINE_OPTIONS, r as canonicalTextAmplifierKey, rt as DEFAULT_ANTITANK_DITCH_OPTIONS, s as CONTROL_MEASURE_METADATA, st as DEFAULT_AIRBORNE_ATTACK_OPTIONS, t as renderControlMeasure, tt as DEFAULT_ATTACK_BY_FIRE_OPTIONS, u as getControlMeasureMetadataByValue, ut as supportByFireDrawRule, v as DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, vt as centerRadiusDrawRule, w as DEFAULT_LANDING_ZONE_OPTIONS, wt as pointOnMidpointPerpendicularAxis, x as DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS, xt as computeDefaultMidpointPerpendicularPoint, y as DEFAULT_PICKUP_ZONE_OPTIONS, yt as disruptDrawRule, z as DEFAULT_GENERIC_POLYGON_OPTIONS } from "./renderControlMeasure-BblcXXLp.mjs";
1
+ import { $ as DEFAULT_BATTLE_POSITION_OPTIONS, A as DEFAULT_PHASE_LINE_OPTIONS, At as unproject, B as DEFAULT_GENERIC_LINE_OPTIONS, C as DEFAULT_MAIN_ATTACK_OPTIONS, Ct as getMidpointPerpendicularSignedDistance, D as DEFAULT_FORTIFIED_LINE_OPTIONS, Dt as calculateMetrics, E as DEFAULT_FORTIFIED_AREA_OPTIONS, Et as createBaselineFrame, F as DEFAULT_DISRUPT_OPTIONS, G as DEFAULT_BREACH_OPTIONS, H as DEFAULT_CLASSIC_ARROW_OPTIONS, I as DEFAULT_DELAY_OPTIONS, J as DEFAULT_ENGINEER_WORK_LINE_OPTIONS, K as DEFAULT_BLOCK_MISSION_TASK_OPTIONS, L as DEFAULT_CLEAR_OPTIONS, M as DEFAULT_FIX_OPTIONS, Mt as getMetersPerPixel, N as DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS, Nt as roundToFixed, O as DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS, Ot as computeInitialWidthPoint, P as DEFAULT_ENCIRCLEMENT_OPTIONS, Q as DEFAULT_BLOCK_OPTIONS, R as DEFAULT_GENERIC_RECTANGLE_OPTIONS, S as DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS, St as createMidpointPerpendicularDrawRule, T as DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS, Tt as snapToMidpointPerpendicular, U as DEFAULT_CANALIZE_OPTIONS, V as DEFAULT_GENERIC_CIRCLE_OPTIONS, W as DEFAULT_BYPASS_OPTIONS, X as DEFAULT_BOUNDARY_OPTIONS, Y as DEFAULT_LIGHT_LINE_OPTIONS, Z as DEFAULT_BLOCK_ARROW_OPTIONS, _ as DEFAULT_TACTICAL_ARROW_OPTIONS, _t as point12DrawRule, a as resolveStyleHints, at as DEFAULT_AREA_OF_OPERATIONS_OPTIONS, b as DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS, bt as blockDrawRule, c as DEFINITIONS, ct as rectangleDrawRule, d as getDefaultOptions, dt as line24DrawRule, et as DEFAULT_ATTACK_HELICOPTER_OPTIONS, f as listControlMeasureMetadata, ft as line23DrawRule, g as DEFAULT_STRONG_POINT_OPTIONS, gt as attackByFireDrawRule, h as DEFAULT_SUPPORT_BY_FIRE_OPTIONS, ht as ambushDrawRule, i as normalizeTextAmplifiers, it as DEFAULT_ASSEMBLY_AREA_OPTIONS, j as DEFAULT_FLOT_OPTIONS, jt as EPSILON, k as DEFAULT_HANDOVER_LINE_OPTIONS, kt as project, l as getControlMeasureMetadata, lt as axis1DrawRule, m as DEFAULT_SUPPORTING_ATTACK_OPTIONS, mt as line1DrawRule, n as TEXT_AMPLIFIER_FIELDS, nt as DEFAULT_ANTITANK_WALL_OPTIONS, o as CONTROL_MEASURE_IDS, ot as DEFAULT_AMBUSH_OPTIONS, p as DEFAULT_TURN_OPTIONS, pt as turnDrawRule, q as DEFAULT_GENERIC_C2_LINE_OPTIONS, r as canonicalTextAmplifierKey, rt as DEFAULT_ANTITANK_DITCH_OPTIONS, s as CONTROL_MEASURE_METADATA, st as DEFAULT_AIRBORNE_ATTACK_OPTIONS, t as renderControlMeasure, tt as DEFAULT_ATTACK_BY_FIRE_OPTIONS, u as getControlMeasureMetadataByValue, ut as supportByFireDrawRule, v as DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, vt as centerRadiusDrawRule, w as DEFAULT_LANDING_ZONE_OPTIONS, wt as pointOnMidpointPerpendicularAxis, x as DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS, xt as computeDefaultMidpointPerpendicularPoint, y as DEFAULT_PICKUP_ZONE_OPTIONS, yt as disruptDrawRule, z as DEFAULT_GENERIC_POLYGON_OPTIONS } from "./renderControlMeasure-NKEYq3Fg.mjs";
2
2
  //#region src/freeze-orientation.ts
3
3
  /**
4
4
  * Dispatches to a measure kind's `freezeOrientation` hook (see