@orbat-mapper/control-measures 0.2.0-alpha.7 → 0.2.0-alpha.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -75,8 +75,8 @@ controls how invalid coordinate input is handled:
75
75
 
76
76
  - `validationMode: "silent" | "warn" | "throw"`
77
77
 
78
- When omitted, validation follows each measure's built-in default. `"throw"` is
79
- useful for strict integrations and tests.
78
+ When omitted, validation defaults to `silent` mode — invalid input yields an
79
+ empty render. `"throw"` is useful for strict integrations and tests.
80
80
 
81
81
  ## Supported control measures
82
82
 
@@ -107,10 +107,12 @@ code.
107
107
  | --- | --- | --- | --- |
108
108
  | <img src="media/fortified-area.svg" width="96" height="48" alt=""> | `fortified-area` | Fortified Area | `151000` |
109
109
  | <img src="media/battle-position.svg" width="96" height="48" alt=""> | `battle-position` | Battle Position | `151200` |
110
+ | <img src="media/strong-point.svg" width="96" height="48" alt=""> | `strong-point` | Strong Point | `151203` |
110
111
  | <img src="media/airborne-attack.svg" width="96" height="48" alt=""> | `airborne-attack` | Airborne Attack | `151401` |
111
112
  | <img src="media/attack-helicopter.svg" width="96" height="48" alt=""> | `attack-helicopter` | Attack Helicopter | `151402` |
112
113
  | <img src="media/main-attack.svg" width="96" height="48" alt=""> | `main-attack` | Main Attack | `151403` |
113
114
  | <img src="media/supporting-attack.svg" width="96" height="48" alt=""> | `supporting-attack` | Supporting Attack | `151404` |
115
+ | <img src="media/encirclement.svg" width="96" height="48" alt=""> | `encirclement` | Encirclement | `151800` |
114
116
  | <img src="media/attack-by-fire.svg" width="96" height="48" alt=""> | `attack-by-fire` | Attack by Fire | `152000` |
115
117
  | <img src="media/support-by-fire.svg" width="96" height="48" alt=""> | `support-by-fire` | Support By Fire | `152100` |
116
118
  | <img src="media/search-area.svg" width="96" height="48" alt=""> | `search-area` | Search Area | `152200` |
@@ -148,12 +150,16 @@ code.
148
150
  | <img src="media/delay.svg" width="96" height="48" alt=""> | `delay` | Delay | `340800` |
149
151
  | <img src="media/isolate.svg" width="96" height="48" alt=""> | `isolate` | Isolate | `341500` |
150
152
 
151
- ### Generic Arrows
153
+ ### Generic Graphics
152
154
 
153
155
  | Preview | `kind` | Measure | 2525E Value |
154
156
  | --- | --- | --- | --- |
155
157
  | <img src="media/block-arrow.svg" width="96" height="48" alt=""> | `block-arrow` | Block Arrow | `990001` |
156
158
  | <img src="media/classic-arrow.svg" width="96" height="48" alt=""> | `classic-arrow` | Classic Arrow | `990002` |
159
+ | <img src="media/line.svg" width="96" height="48" alt=""> | `line` | Line | `990101` |
160
+ | <img src="media/polygon.svg" width="96" height="48" alt=""> | `polygon` | Polygon | `990102` |
161
+ | <img src="media/rectangle.svg" width="96" height="48" alt=""> | `rectangle` | Rectangle | `990103` |
162
+ | <img src="media/circle.svg" width="96" height="48" alt=""> | `circle` | Circle | `990104` |
157
163
 
158
164
  <!-- /AUTO-GENERATED:measures-table -->
159
165
 
@@ -292,6 +292,8 @@ interface BoundaryOptions {
292
292
  */
293
293
  smoothResolution?: number;
294
294
  }
295
+ /** Default options for the Boundary control measure. */
296
+ declare const DEFAULT_BOUNDARY_OPTIONS: BoundaryOptions;
295
297
  /**
296
298
  * Creates a Boundary control measure: a polyline through `positions` carrying
297
299
  * repeated echelon + unit-designator labels.
@@ -378,6 +380,8 @@ interface BattlePositionOptions {
378
380
  */
379
381
  smoothResolution?: number;
380
382
  }
383
+ /** Default options for the Battle Position control measure. */
384
+ declare const DEFAULT_BATTLE_POSITION_OPTIONS: BattlePositionOptions;
381
385
  /**
382
386
  * Creates a Battle Position control measure: a closed area through `positions`
383
387
  * carrying a single echelon (Field B) glyph straddling its boundary — anchored
@@ -447,7 +451,7 @@ interface FinalProtectiveFireOptions {
447
451
  * Blade height (its perpendicular reach into the inside of the V) relative
448
452
  * to the bladed arm's own length (default: 0.03).
449
453
  */
450
- bladeHeight?: number;
454
+ bladeHeightRatio?: number;
451
455
  }
452
456
  declare const DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS: Required<FinalProtectiveFireOptions>;
453
457
  type FpfProps = {
@@ -512,8 +516,8 @@ declare const unproject: (x: number, y: number) => Position;
512
516
  //#region src/attack-utils.d.ts
513
517
  interface AttackOptions {
514
518
  shaftWidthRatio?: number;
515
- roundedBends?: boolean;
516
- bendSegments?: number;
519
+ smooth?: boolean;
520
+ smoothResolution?: number;
517
521
  }
518
522
  /**
519
523
  * Calculates the relative metrics (longitudinal and lateral) of the width point
@@ -607,6 +611,7 @@ interface ClassicArrowOptions {
607
611
  /** Arrowhead base width as a fraction of the total path length. */
608
612
  arrowheadWidthRatio?: number;
609
613
  }
614
+ declare const DEFAULT_CLASSIC_ARROW_OPTIONS: Required<ClassicArrowOptions>;
610
615
  /**
611
616
  * Generates a GeoJSON FeatureCollection for the Classic Arrow: a shaft
612
617
  * LineString (trimmed so it doesn't poke through the head) plus a head feature
@@ -638,7 +643,7 @@ declare function createClassicArrow(coordinates: Position[], options?: ClassicAr
638
643
  type BlockArrowHeadStyle = "triangle" | "barbed" | "concave" | "diamond" | "harpoon" | "swallowtail" | "tee";
639
644
  interface BlockArrowOptions {
640
645
  /** Shaft band width as a fraction of the total path length. */
641
- shaftWidth?: number;
646
+ shaftWidthRatio?: number;
642
647
  /** Arrowhead silhouette. */
643
648
  arrowheadStyle?: BlockArrowHeadStyle;
644
649
  /** Arrowhead base width as a fraction of the total path length. */
@@ -652,6 +657,7 @@ interface BlockArrowOptions {
652
657
  /** Fill the body solid; when false the arrow is drawn as an outline only. */
653
658
  filled?: boolean;
654
659
  }
660
+ declare const DEFAULT_BLOCK_ARROW_OPTIONS: Required<BlockArrowOptions>;
655
661
  /**
656
662
  * Generates a GeoJSON FeatureCollection for the Block Arrow: a single filled
657
663
  * Polygon whose outline runs up the left side of the shaft, around the head
@@ -742,8 +748,8 @@ declare function createAttackHelicopter(coordinates: Position[], options?: Attac
742
748
  //#region src/generators/cm15-maneuver-areas/supportByFire.d.ts
743
749
  interface SupportByFireOptions {
744
750
  arrowheadWidthRatio?: number;
745
- backLineLengthRatio?: number;
746
- backLineAngle?: number;
751
+ rearLineLengthRatio?: number;
752
+ rearLineAngle?: number;
747
753
  }
748
754
  declare const DEFAULT_SUPPORT_BY_FIRE_OPTIONS: Required<SupportByFireOptions>;
749
755
  /**
@@ -760,8 +766,8 @@ declare function createSupportByFire(coordinates: Position[], options?: SupportB
760
766
  //#region src/generators/cm15-maneuver-areas/attackByFire.d.ts
761
767
  interface AttackByFireOptions {
762
768
  arrowheadWidthRatio?: number;
763
- backLineLengthRatio?: number;
764
- backLineAngle?: number;
769
+ rearLineLengthRatio?: number;
770
+ rearLineAngle?: number;
765
771
  }
766
772
  declare const DEFAULT_ATTACK_BY_FIRE_OPTIONS: Required<AttackByFireOptions>;
767
773
  /**
@@ -810,7 +816,7 @@ interface FLOTOptions {
810
816
  * Higher values create smoother arcs.
811
817
  * @default 16
812
818
  */
813
- resolution?: number;
819
+ arcSegments?: number;
814
820
  }
815
821
  /**
816
822
  * Default options for the FLOT graphic.
@@ -831,7 +837,7 @@ declare const DEFAULT_FLOT_OPTIONS: Required<Omit<FLOTOptions, "metersPerPixel">
831
837
  * ```typescript
832
838
  * const flot = createFLOT(
833
839
  * [[-122.4194, 37.7749], [-122.4100, 37.7800], [-122.4000, 37.7750]],
834
- * { radius: 100, resolution: 20 }
840
+ * { radius: 100, arcSegments: 20 }
835
841
  * );
836
842
  * ```
837
843
  */
@@ -1126,21 +1132,21 @@ interface FortifiedLineOptions {
1126
1132
  /**
1127
1133
  * The size of the square teeth in meters.
1128
1134
  * This controls both the width and height of the castellated pattern.
1129
- * This is ignored if sizePixels is provided along with metersPerPixel.
1135
+ * This is ignored if toothSizePixels is provided along with metersPerPixel.
1130
1136
  * @default 50
1131
1137
  */
1132
- size?: number;
1138
+ toothSize?: number;
1133
1139
  /**
1134
1140
  * The size of the square teeth in pixels.
1135
1141
  * When provided along with metersPerPixel, the actual meter size is calculated
1136
1142
  * dynamically to maintain consistent visual size on screen.
1137
- * Takes precedence over size when metersPerPixel is also provided.
1143
+ * Takes precedence over toothSize when metersPerPixel is also provided.
1138
1144
  * @default 10
1139
1145
  */
1140
- sizePixels?: number;
1146
+ toothSizePixels?: number;
1141
1147
  /**
1142
1148
  * The meters-per-pixel ratio at the current zoom level and latitude.
1143
- * Required when using sizePixels for zoom-aware sizing.
1149
+ * Required when using toothSizePixels for zoom-aware sizing.
1144
1150
  */
1145
1151
  metersPerPixel?: number;
1146
1152
  /**
@@ -1787,7 +1793,7 @@ declare const rectangleDrawRule: ControlMeasureDrawRule;
1787
1793
  */
1788
1794
  interface AmbushOptions {
1789
1795
  /** Number of segments used to draw the quadratic curve (default: 30) */
1790
- resolution?: number;
1796
+ arcSegments?: number;
1791
1797
  /** Size of arrowhead relative to chord span (default: 0.15) */
1792
1798
  arrowheadLengthRatio?: number;
1793
1799
  /** Width of arrowhead wings relative to its length (default: 0.5) */
@@ -1822,4 +1828,4 @@ interface TacticalArrowOptions {
1822
1828
  */
1823
1829
  declare const DEFAULT_TACTICAL_ARROW_OPTIONS: Required<TacticalArrowOptions>;
1824
1830
  //#endregion
1825
- export { getControlMeasureMetadata as $, DEFAULT_GENERIC_LINE_OPTIONS as $t, getMetersPerPixel as A, DEFAULT_CANALIZE_OPTIONS as At, ControlMeasureSnapshot as B, DEFAULT_ATTACK_BY_FIRE_OPTIONS as Bt, snapToMidpointPerpendicular as C, ControlMeasureDrawRule as Cn, AntitankDitchOptions as Ct, BaselineFrameOrigin as D, ClearOptions as Dt, BaselineFrameOptions as E, DelayOptions as Et, resolveStyleHints as F, BlockMissionTaskOptions as Ft, cloneControlMeasure as G, AirborneAttackOptions as Gt, StyleHints as H, SupportByFireOptions as Ht, freezeOrientationOptions as I, DEFAULT_BLOCK_MISSION_TASK_OPTIONS as It, CONTROL_MEASURE_IDS as J, GenericCircleOptions as Jt, isKind as K, DEFAULT_AIRBORNE_ATTACK_OPTIONS as Kt, RenderOptions as L, DEFAULT_FLOT_OPTIONS as Lt, SimpleStyleProps as M, DEFAULT_BYPASS_OPTIONS as Mt, SimpleStyleRender as N, BreachOptions as Nt, createBaselineFrame as O, DEFAULT_CLEAR_OPTIONS as Ot, toSimpleStyle as P, DEFAULT_BREACH_OPTIONS as Pt, OptionsByKind as Q, GenericPolygonOptions as Qt, renderControlMeasure as R, FLOTOptions as Rt, pointOnMidpointPerpendicularAxis as S, AnchorTransformEvent as Sn, DEFAULT_ANTITANK_WALL_OPTIONS as St, BaselineFrameNormal as T, DEFAULT_DELAY_OPTIONS as Tt, controlMeasureIdFromFeature as U, AttackHelicopterOptions as Ut, FeaturePartProps as V, DEFAULT_SUPPORT_BY_FIRE_OPTIONS as Vt, ControlMeasure as W, DEFAULT_ATTACK_HELICOPTER_OPTIONS as Wt, ControlMeasureId as X, GenericRectangleOptions as Xt, CONTROL_MEASURE_METADATA as Y, DEFAULT_GENERIC_RECTANGLE_OPTIONS as Yt, ControlMeasureKind as Z, DEFAULT_GENERIC_POLYGON_OPTIONS as Zt, blockDrawRule as _, StrongPointOptions as _n, DEFAULT_FORTIFIED_AREA_OPTIONS as _t, rectangleDrawRule as a, calculateMetrics as an, DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS as at, createMidpointPerpendicularDrawRule as b, ControlMeasureMetadata as bn, FortifiedLineOptions as bt, line24DrawRule as c, project as cn, ObstacleBypassEasyOptions as ct, line1DrawRule as d, EncirclementOptions as dn, DEFAULT_FIX_OPTIONS as dt, GenericLineOptions as en, getControlMeasureMetadataByValue as et, ambushDrawRule as f, DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS as fn, FixOptions as ft, disruptDrawRule as g, DEFAULT_STRONG_POINT_OPTIONS as gn, DEFAULT_BLOCK_OPTIONS as gt, centerRadiusDrawRule as h, PrincipalDirectionOfFireOptions as hn, BlockOptions as ht, DEFAULT_AMBUSH_OPTIONS as i, MainAttackOptions as in, ObstacleBypassImpossibleOptions as it, roundToFixed as j, BypassOptions as jt, EPSILON as k, CanalizeOptions as kt, line23DrawRule as l, unproject as ln, DEFAULT_TURN_OPTIONS as lt, point12DrawRule as m, DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS as mn, DisruptOptions as mt, TacticalArrowOptions as n, SupportingAttackOptions as nn, listControlMeasureMetadata as nt, axis1DrawRule as o, computeInitialWidthPoint as on, ObstacleBypassDifficultOptions as ot, attackByFireDrawRule as p, FinalProtectiveFireOptions as pn, DEFAULT_DISRUPT_OPTIONS as pt, ControlMeasureStyle as q, DEFAULT_GENERIC_CIRCLE_OPTIONS as qt, AmbushOptions as r, DEFAULT_MAIN_ATTACK_OPTIONS as rn, DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS as rt, supportByFireDrawRule as s, Point2D as sn, DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS as st, DEFAULT_TACTICAL_ARROW_OPTIONS as t, DEFAULT_SUPPORTING_ATTACK_OPTIONS as tn, getDefaultOptions as tt, turnDrawRule as u, DEFAULT_ENCIRCLEMENT_OPTIONS as un, TurnOptions as ut, MidpointPerpendicularDrawRuleOptions as v, ControlMeasureGeometry as vn, FortifiedAreaOptions as vt, BaselineFrame as w, DEFAULT_ANTITANK_DITCH_OPTIONS as wt, getMidpointPerpendicularSignedDistance as x, ParamDescriptor as xn, AntitankWallOptions as xt, computeDefaultMidpointPerpendicularPoint as y, ControlMeasureGeometryType as yn, DEFAULT_FORTIFIED_LINE_OPTIONS as yt, ControlMeasureRender as z, AttackByFireOptions as zt };
1831
+ export { getControlMeasureMetadata as $, DEFAULT_GENERIC_LINE_OPTIONS as $t, getMetersPerPixel as A, ControlMeasureMetadata as An, DEFAULT_CANALIZE_OPTIONS as At, ControlMeasureSnapshot as B, DEFAULT_ATTACK_BY_FIRE_OPTIONS as Bt, snapToMidpointPerpendicular as C, StrongPointOptions as Cn, AntitankDitchOptions as Ct, BaselineFrameOrigin as D, DEFAULT_BOUNDARY_OPTIONS as Dn, ClearOptions as Dt, BaselineFrameOptions as E, BoundaryOptions as En, DelayOptions as Et, resolveStyleHints as F, BlockMissionTaskOptions as Ft, cloneControlMeasure as G, AirborneAttackOptions as Gt, StyleHints as H, SupportByFireOptions as Ht, freezeOrientationOptions as I, DEFAULT_BLOCK_MISSION_TASK_OPTIONS as It, CONTROL_MEASURE_IDS as J, GenericCircleOptions as Jt, isKind as K, DEFAULT_AIRBORNE_ATTACK_OPTIONS as Kt, RenderOptions as L, DEFAULT_FLOT_OPTIONS as Lt, SimpleStyleProps as M, AnchorTransformEvent as Mn, DEFAULT_BYPASS_OPTIONS as Mt, SimpleStyleRender as N, ControlMeasureDrawRule as Nn, BreachOptions as Nt, createBaselineFrame as O, ControlMeasureGeometry as On, DEFAULT_CLEAR_OPTIONS as Ot, toSimpleStyle as P, DEFAULT_BREACH_OPTIONS as Pt, OptionsByKind as Q, GenericPolygonOptions as Qt, renderControlMeasure as R, FLOTOptions as Rt, pointOnMidpointPerpendicularAxis as S, DEFAULT_STRONG_POINT_OPTIONS as Sn, DEFAULT_ANTITANK_WALL_OPTIONS as St, BaselineFrameNormal as T, DEFAULT_BATTLE_POSITION_OPTIONS as Tn, DEFAULT_DELAY_OPTIONS as Tt, controlMeasureIdFromFeature as U, AttackHelicopterOptions as Ut, FeaturePartProps as V, DEFAULT_SUPPORT_BY_FIRE_OPTIONS as Vt, ControlMeasure as W, DEFAULT_ATTACK_HELICOPTER_OPTIONS as Wt, ControlMeasureId as X, GenericRectangleOptions as Xt, CONTROL_MEASURE_METADATA as Y, DEFAULT_GENERIC_RECTANGLE_OPTIONS as Yt, ControlMeasureKind as Z, DEFAULT_GENERIC_POLYGON_OPTIONS as Zt, blockDrawRule as _, EncirclementOptions as _n, DEFAULT_FORTIFIED_AREA_OPTIONS as _t, rectangleDrawRule as a, ClassicArrowOptions as an, DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS as at, createMidpointPerpendicularDrawRule as b, DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS as bn, FortifiedLineOptions as bt, line24DrawRule as c, SupportingAttackOptions as cn, ObstacleBypassEasyOptions as ct, line1DrawRule as d, calculateMetrics as dn, DEFAULT_FIX_OPTIONS as dt, GenericLineOptions as en, getControlMeasureMetadataByValue as et, ambushDrawRule as f, computeInitialWidthPoint as fn, FixOptions as ft, disruptDrawRule as g, DEFAULT_ENCIRCLEMENT_OPTIONS as gn, DEFAULT_BLOCK_OPTIONS as gt, centerRadiusDrawRule as h, unproject as hn, BlockOptions as ht, DEFAULT_AMBUSH_OPTIONS as i, ClassicArrowHeadStyle as in, ObstacleBypassImpossibleOptions as it, roundToFixed as j, ParamDescriptor as jn, BypassOptions as jt, EPSILON as k, ControlMeasureGeometryType as kn, CanalizeOptions as kt, line23DrawRule as l, DEFAULT_MAIN_ATTACK_OPTIONS as ln, DEFAULT_TURN_OPTIONS as lt, point12DrawRule as m, project as mn, DisruptOptions as mt, TacticalArrowOptions as n, BlockArrowOptions as nn, listControlMeasureMetadata as nt, axis1DrawRule as o, DEFAULT_CLASSIC_ARROW_OPTIONS as on, ObstacleBypassDifficultOptions as ot, attackByFireDrawRule as p, Point2D as pn, DEFAULT_DISRUPT_OPTIONS as pt, ControlMeasureStyle as q, DEFAULT_GENERIC_CIRCLE_OPTIONS as qt, AmbushOptions as r, DEFAULT_BLOCK_ARROW_OPTIONS as rn, DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS as rt, supportByFireDrawRule as s, DEFAULT_SUPPORTING_ATTACK_OPTIONS as sn, DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS as st, DEFAULT_TACTICAL_ARROW_OPTIONS as t, BlockArrowHeadStyle as tn, getDefaultOptions as tt, turnDrawRule as u, MainAttackOptions as un, TurnOptions as ut, MidpointPerpendicularDrawRuleOptions as v, DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS as vn, FortifiedAreaOptions as vt, BaselineFrame as w, BattlePositionOptions as wn, DEFAULT_ANTITANK_DITCH_OPTIONS as wt, getMidpointPerpendicularSignedDistance as x, PrincipalDirectionOfFireOptions as xn, AntitankWallOptions as xt, computeDefaultMidpointPerpendicularPoint as y, FinalProtectiveFireOptions as yn, DEFAULT_FORTIFIED_LINE_OPTIONS as yt, ControlMeasureRender as z, AttackByFireOptions as zt };
package/dist/index.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { $ as getControlMeasureMetadata, $t as DEFAULT_GENERIC_LINE_OPTIONS, A as getMetersPerPixel, At as DEFAULT_CANALIZE_OPTIONS, B as ControlMeasureSnapshot, Bt as DEFAULT_ATTACK_BY_FIRE_OPTIONS, C as snapToMidpointPerpendicular, Cn as ControlMeasureDrawRule, Ct as AntitankDitchOptions, D as BaselineFrameOrigin, Dt as ClearOptions, E as BaselineFrameOptions, Et as DelayOptions, F as resolveStyleHints, Ft as BlockMissionTaskOptions, G as cloneControlMeasure, Gt as AirborneAttackOptions, H as StyleHints, Ht as SupportByFireOptions, I as freezeOrientationOptions, It as DEFAULT_BLOCK_MISSION_TASK_OPTIONS, J as CONTROL_MEASURE_IDS, Jt as GenericCircleOptions, K as isKind, Kt as DEFAULT_AIRBORNE_ATTACK_OPTIONS, L as RenderOptions, Lt as DEFAULT_FLOT_OPTIONS, M as SimpleStyleProps, Mt as DEFAULT_BYPASS_OPTIONS, N as SimpleStyleRender, Nt as BreachOptions, O as createBaselineFrame, Ot as DEFAULT_CLEAR_OPTIONS, P as toSimpleStyle, Pt as DEFAULT_BREACH_OPTIONS, Q as OptionsByKind, Qt as GenericPolygonOptions, R as renderControlMeasure, Rt as FLOTOptions, S as pointOnMidpointPerpendicularAxis, Sn as AnchorTransformEvent, St as DEFAULT_ANTITANK_WALL_OPTIONS, T as BaselineFrameNormal, Tt as DEFAULT_DELAY_OPTIONS, U as controlMeasureIdFromFeature, Ut as AttackHelicopterOptions, V as FeaturePartProps, Vt as DEFAULT_SUPPORT_BY_FIRE_OPTIONS, W as ControlMeasure, Wt as DEFAULT_ATTACK_HELICOPTER_OPTIONS, X as ControlMeasureId, Xt as GenericRectangleOptions, Y as CONTROL_MEASURE_METADATA, Yt as DEFAULT_GENERIC_RECTANGLE_OPTIONS, Z as ControlMeasureKind, Zt as DEFAULT_GENERIC_POLYGON_OPTIONS, _ as blockDrawRule, _n as StrongPointOptions, _t as DEFAULT_FORTIFIED_AREA_OPTIONS, a as rectangleDrawRule, an as calculateMetrics, at as DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS, b as createMidpointPerpendicularDrawRule, bn as ControlMeasureMetadata, bt as FortifiedLineOptions, c as line24DrawRule, cn as project, ct as ObstacleBypassEasyOptions, d as line1DrawRule, dn as EncirclementOptions, dt as DEFAULT_FIX_OPTIONS, en as GenericLineOptions, et as getControlMeasureMetadataByValue, f as ambushDrawRule, fn as DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS, ft as FixOptions, g as disruptDrawRule, gn as DEFAULT_STRONG_POINT_OPTIONS, gt as DEFAULT_BLOCK_OPTIONS, h as centerRadiusDrawRule, hn as PrincipalDirectionOfFireOptions, ht as BlockOptions, i as DEFAULT_AMBUSH_OPTIONS, in as MainAttackOptions, it as ObstacleBypassImpossibleOptions, j as roundToFixed, jt as BypassOptions, k as EPSILON, kt as CanalizeOptions, l as line23DrawRule, ln as unproject, lt as DEFAULT_TURN_OPTIONS, m as point12DrawRule, mn as DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, mt as DisruptOptions, n as TacticalArrowOptions, nn as SupportingAttackOptions, nt as listControlMeasureMetadata, o as axis1DrawRule, on as computeInitialWidthPoint, ot as ObstacleBypassDifficultOptions, p as attackByFireDrawRule, pn as FinalProtectiveFireOptions, pt as DEFAULT_DISRUPT_OPTIONS, q as ControlMeasureStyle, qt as DEFAULT_GENERIC_CIRCLE_OPTIONS, r as AmbushOptions, rn as DEFAULT_MAIN_ATTACK_OPTIONS, rt as DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS, s as supportByFireDrawRule, sn as Point2D, st as DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS, t as DEFAULT_TACTICAL_ARROW_OPTIONS, tn as DEFAULT_SUPPORTING_ATTACK_OPTIONS, tt as getDefaultOptions, u as turnDrawRule, un as DEFAULT_ENCIRCLEMENT_OPTIONS, ut as TurnOptions, v as MidpointPerpendicularDrawRuleOptions, vn as ControlMeasureGeometry, vt as FortifiedAreaOptions, w as BaselineFrame, wt as DEFAULT_ANTITANK_DITCH_OPTIONS, x as getMidpointPerpendicularSignedDistance, xn as ParamDescriptor, xt as AntitankWallOptions, y as computeDefaultMidpointPerpendicularPoint, yn as ControlMeasureGeometryType, yt as DEFAULT_FORTIFIED_LINE_OPTIONS, z as ControlMeasureRender, zt as AttackByFireOptions } from "./index-DUGzYzPy.mjs";
2
- export { type AirborneAttackOptions, type AmbushOptions, type AnchorTransformEvent, type AntitankDitchOptions, type AntitankWallOptions, type AttackByFireOptions, type AttackHelicopterOptions, type BaselineFrame, type BaselineFrameNormal, type BaselineFrameOptions, type BaselineFrameOrigin, type BlockMissionTaskOptions, type BlockOptions, type BreachOptions, type BypassOptions, CONTROL_MEASURE_IDS, CONTROL_MEASURE_METADATA, type CanalizeOptions, 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_ATTACK_BY_FIRE_OPTIONS, DEFAULT_ATTACK_HELICOPTER_OPTIONS, DEFAULT_BLOCK_MISSION_TASK_OPTIONS, DEFAULT_BLOCK_OPTIONS, DEFAULT_BREACH_OPTIONS, DEFAULT_BYPASS_OPTIONS, DEFAULT_CANALIZE_OPTIONS, DEFAULT_CLEAR_OPTIONS, DEFAULT_DELAY_OPTIONS, DEFAULT_DISRUPT_OPTIONS, DEFAULT_ENCIRCLEMENT_OPTIONS, DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS, DEFAULT_FIX_OPTIONS, DEFAULT_FLOT_OPTIONS, DEFAULT_FORTIFIED_AREA_OPTIONS, DEFAULT_FORTIFIED_LINE_OPTIONS, DEFAULT_GENERIC_CIRCLE_OPTIONS, DEFAULT_GENERIC_LINE_OPTIONS, DEFAULT_GENERIC_POLYGON_OPTIONS, DEFAULT_GENERIC_RECTANGLE_OPTIONS, DEFAULT_MAIN_ATTACK_OPTIONS, DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS, DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS, DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_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 FLOTOptions, type FeaturePartProps, type FinalProtectiveFireOptions, type FixOptions, type FortifiedAreaOptions, type FortifiedLineOptions, type GenericCircleOptions, type GenericLineOptions, type GenericPolygonOptions, type GenericRectangleOptions, type MainAttackOptions, type MidpointPerpendicularDrawRuleOptions, type ObstacleBypassDifficultOptions, type ObstacleBypassEasyOptions, type ObstacleBypassImpossibleOptions, type OptionsByKind, type ParamDescriptor, type Point2D, type PrincipalDirectionOfFireOptions, type RenderOptions, type SimpleStyleProps, type SimpleStyleRender, type StrongPointOptions, type StyleHints, type SupportByFireOptions, type SupportingAttackOptions, type TacticalArrowOptions, type TurnOptions, ambushDrawRule, attackByFireDrawRule, axis1DrawRule, blockDrawRule, calculateMetrics, centerRadiusDrawRule, cloneControlMeasure, computeDefaultMidpointPerpendicularPoint, computeInitialWidthPoint, controlMeasureIdFromFeature, createBaselineFrame, createMidpointPerpendicularDrawRule, disruptDrawRule, freezeOrientationOptions, getControlMeasureMetadata, getControlMeasureMetadataByValue, getDefaultOptions, getMetersPerPixel, getMidpointPerpendicularSignedDistance, isKind, line1DrawRule, line23DrawRule, line24DrawRule, listControlMeasureMetadata, point12DrawRule, pointOnMidpointPerpendicularAxis, project, rectangleDrawRule, renderControlMeasure, resolveStyleHints, roundToFixed, snapToMidpointPerpendicular, supportByFireDrawRule, toSimpleStyle, turnDrawRule, unproject };
1
+ import { $ as getControlMeasureMetadata, $t as DEFAULT_GENERIC_LINE_OPTIONS, A as getMetersPerPixel, An as ControlMeasureMetadata, At as DEFAULT_CANALIZE_OPTIONS, B as ControlMeasureSnapshot, Bt as DEFAULT_ATTACK_BY_FIRE_OPTIONS, C as snapToMidpointPerpendicular, Cn as StrongPointOptions, Ct as AntitankDitchOptions, D as BaselineFrameOrigin, Dn as DEFAULT_BOUNDARY_OPTIONS, Dt as ClearOptions, E as BaselineFrameOptions, En as BoundaryOptions, Et as DelayOptions, F as resolveStyleHints, Ft as BlockMissionTaskOptions, G as cloneControlMeasure, Gt as AirborneAttackOptions, H as StyleHints, Ht as SupportByFireOptions, I as freezeOrientationOptions, It as DEFAULT_BLOCK_MISSION_TASK_OPTIONS, J as CONTROL_MEASURE_IDS, Jt as GenericCircleOptions, K as isKind, Kt as DEFAULT_AIRBORNE_ATTACK_OPTIONS, L as RenderOptions, Lt as DEFAULT_FLOT_OPTIONS, M as SimpleStyleProps, Mn as AnchorTransformEvent, Mt as DEFAULT_BYPASS_OPTIONS, N as SimpleStyleRender, Nn as ControlMeasureDrawRule, Nt as BreachOptions, O as createBaselineFrame, On as ControlMeasureGeometry, Ot as DEFAULT_CLEAR_OPTIONS, P as toSimpleStyle, Pt as DEFAULT_BREACH_OPTIONS, Q as OptionsByKind, Qt as GenericPolygonOptions, R as renderControlMeasure, Rt as FLOTOptions, S as pointOnMidpointPerpendicularAxis, Sn as DEFAULT_STRONG_POINT_OPTIONS, St as DEFAULT_ANTITANK_WALL_OPTIONS, T as BaselineFrameNormal, Tn as DEFAULT_BATTLE_POSITION_OPTIONS, Tt as DEFAULT_DELAY_OPTIONS, U as controlMeasureIdFromFeature, Ut as AttackHelicopterOptions, V as FeaturePartProps, Vt as DEFAULT_SUPPORT_BY_FIRE_OPTIONS, W as ControlMeasure, Wt as DEFAULT_ATTACK_HELICOPTER_OPTIONS, X as ControlMeasureId, Xt as GenericRectangleOptions, Y as CONTROL_MEASURE_METADATA, Yt as DEFAULT_GENERIC_RECTANGLE_OPTIONS, Z as ControlMeasureKind, Zt as DEFAULT_GENERIC_POLYGON_OPTIONS, _ as blockDrawRule, _n as EncirclementOptions, _t as DEFAULT_FORTIFIED_AREA_OPTIONS, a as rectangleDrawRule, an as ClassicArrowOptions, at as DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS, b as createMidpointPerpendicularDrawRule, bn as DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, bt as FortifiedLineOptions, c as line24DrawRule, cn as SupportingAttackOptions, ct as ObstacleBypassEasyOptions, d as line1DrawRule, dn as calculateMetrics, dt as DEFAULT_FIX_OPTIONS, en as GenericLineOptions, et as getControlMeasureMetadataByValue, f as ambushDrawRule, fn as computeInitialWidthPoint, ft as FixOptions, g as disruptDrawRule, gn as DEFAULT_ENCIRCLEMENT_OPTIONS, gt as DEFAULT_BLOCK_OPTIONS, h as centerRadiusDrawRule, hn as unproject, ht as BlockOptions, i as DEFAULT_AMBUSH_OPTIONS, in as ClassicArrowHeadStyle, it as ObstacleBypassImpossibleOptions, j as roundToFixed, jn as ParamDescriptor, jt as BypassOptions, k as EPSILON, kn as ControlMeasureGeometryType, kt as CanalizeOptions, l as line23DrawRule, ln as DEFAULT_MAIN_ATTACK_OPTIONS, lt as DEFAULT_TURN_OPTIONS, m as point12DrawRule, mn as project, mt as DisruptOptions, n as TacticalArrowOptions, nn as BlockArrowOptions, nt as listControlMeasureMetadata, o as axis1DrawRule, on as DEFAULT_CLASSIC_ARROW_OPTIONS, ot as ObstacleBypassDifficultOptions, p as attackByFireDrawRule, pn as Point2D, pt as DEFAULT_DISRUPT_OPTIONS, q as ControlMeasureStyle, qt as DEFAULT_GENERIC_CIRCLE_OPTIONS, r as AmbushOptions, rn as DEFAULT_BLOCK_ARROW_OPTIONS, rt as DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS, s as supportByFireDrawRule, sn as DEFAULT_SUPPORTING_ATTACK_OPTIONS, st as DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS, t as DEFAULT_TACTICAL_ARROW_OPTIONS, tn as BlockArrowHeadStyle, tt as getDefaultOptions, u as turnDrawRule, un as MainAttackOptions, ut as TurnOptions, v as MidpointPerpendicularDrawRuleOptions, vn as DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS, vt as FortifiedAreaOptions, w as BaselineFrame, wn as BattlePositionOptions, wt as DEFAULT_ANTITANK_DITCH_OPTIONS, x as getMidpointPerpendicularSignedDistance, xn as PrincipalDirectionOfFireOptions, xt as AntitankWallOptions, y as computeDefaultMidpointPerpendicularPoint, yn as FinalProtectiveFireOptions, yt as DEFAULT_FORTIFIED_LINE_OPTIONS, z as ControlMeasureRender, zt as AttackByFireOptions } from "./index-BHWESyWA.mjs";
2
+ export { type AirborneAttackOptions, type AmbushOptions, type AnchorTransformEvent, type AntitankDitchOptions, type AntitankWallOptions, type AttackByFireOptions, type AttackHelicopterOptions, type BaselineFrame, type BaselineFrameNormal, type BaselineFrameOptions, type BaselineFrameOrigin, 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 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_ATTACK_BY_FIRE_OPTIONS, DEFAULT_ATTACK_HELICOPTER_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_FINAL_PROTECTIVE_FIRE_OPTIONS, DEFAULT_FIX_OPTIONS, DEFAULT_FLOT_OPTIONS, DEFAULT_FORTIFIED_AREA_OPTIONS, DEFAULT_FORTIFIED_LINE_OPTIONS, DEFAULT_GENERIC_CIRCLE_OPTIONS, DEFAULT_GENERIC_LINE_OPTIONS, DEFAULT_GENERIC_POLYGON_OPTIONS, DEFAULT_GENERIC_RECTANGLE_OPTIONS, DEFAULT_MAIN_ATTACK_OPTIONS, DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS, DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS, DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_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 FLOTOptions, type FeaturePartProps, type FinalProtectiveFireOptions, type FixOptions, type FortifiedAreaOptions, type FortifiedLineOptions, type GenericCircleOptions, type GenericLineOptions, type GenericPolygonOptions, type GenericRectangleOptions, type MainAttackOptions, type MidpointPerpendicularDrawRuleOptions, type ObstacleBypassDifficultOptions, type ObstacleBypassEasyOptions, type ObstacleBypassImpossibleOptions, type OptionsByKind, type ParamDescriptor, type Point2D, type PrincipalDirectionOfFireOptions, type RenderOptions, type SimpleStyleProps, type SimpleStyleRender, type StrongPointOptions, type StyleHints, type SupportByFireOptions, type SupportingAttackOptions, type TacticalArrowOptions, type TurnOptions, ambushDrawRule, attackByFireDrawRule, axis1DrawRule, blockDrawRule, calculateMetrics, centerRadiusDrawRule, cloneControlMeasure, computeDefaultMidpointPerpendicularPoint, computeInitialWidthPoint, controlMeasureIdFromFeature, createBaselineFrame, createMidpointPerpendicularDrawRule, disruptDrawRule, freezeOrientationOptions, getControlMeasureMetadata, getControlMeasureMetadataByValue, getDefaultOptions, getMetersPerPixel, getMidpointPerpendicularSignedDistance, isKind, line1DrawRule, line23DrawRule, line24DrawRule, listControlMeasureMetadata, point12DrawRule, pointOnMidpointPerpendicularAxis, project, rectangleDrawRule, renderControlMeasure, resolveStyleHints, roundToFixed, snapToMidpointPerpendicular, supportByFireDrawRule, toSimpleStyle, turnDrawRule, unproject };
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as point12DrawRule, A as DEFAULT_GENERIC_POLYGON_OPTIONS, B as DEFAULT_ANTITANK_WALL_OPTIONS, C as DEFAULT_FIX_OPTIONS, D as DEFAULT_DELAY_OPTIONS, E as DEFAULT_DISRUPT_OPTIONS, F as DEFAULT_BREACH_OPTIONS, G as axis1DrawRule, H as DEFAULT_AMBUSH_OPTIONS, I as DEFAULT_BLOCK_MISSION_TASK_OPTIONS, J as line23DrawRule, K as supportByFireDrawRule, L as DEFAULT_BLOCK_OPTIONS, M as DEFAULT_GENERIC_CIRCLE_OPTIONS, N as DEFAULT_CANALIZE_OPTIONS, O as DEFAULT_CLEAR_OPTIONS, P as DEFAULT_BYPASS_OPTIONS, Q as attackByFireDrawRule, R as DEFAULT_ATTACK_HELICOPTER_OPTIONS, S as DEFAULT_FLOT_OPTIONS, T as DEFAULT_ENCIRCLEMENT_OPTIONS, U as DEFAULT_AIRBORNE_ATTACK_OPTIONS, V as DEFAULT_ANTITANK_DITCH_OPTIONS, W as rectangleDrawRule, X as line1DrawRule, Y as turnDrawRule, Z as ambushDrawRule, _ as DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS, a as DEFINITIONS, at as getMidpointPerpendicularSignedDistance, b as DEFAULT_FORTIFIED_AREA_OPTIONS, c as getDefaultOptions, ct as createBaselineFrame, d as DEFAULT_SUPPORTING_ATTACK_OPTIONS, dt as project, et as centerRadiusDrawRule, f as DEFAULT_SUPPORT_BY_FIRE_OPTIONS, ft as unproject, g as DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS, h as DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, ht as roundToFixed, i as CONTROL_MEASURE_METADATA, it as createMidpointPerpendicularDrawRule, j as DEFAULT_GENERIC_LINE_OPTIONS, k as DEFAULT_GENERIC_RECTANGLE_OPTIONS, l as listControlMeasureMetadata, lt as calculateMetrics, m as DEFAULT_TACTICAL_ARROW_OPTIONS, mt as getMetersPerPixel, n as resolveStyleHints, nt as blockDrawRule, o as getControlMeasureMetadata, ot as pointOnMidpointPerpendicularAxis, p as DEFAULT_STRONG_POINT_OPTIONS, pt as EPSILON, q as line24DrawRule, r as CONTROL_MEASURE_IDS, rt as computeDefaultMidpointPerpendicularPoint, s as getControlMeasureMetadataByValue, st as snapToMidpointPerpendicular, t as renderControlMeasure, tt as disruptDrawRule, u as DEFAULT_TURN_OPTIONS, ut as computeInitialWidthPoint, v as DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS, w as DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS, x as DEFAULT_FORTIFIED_LINE_OPTIONS, y as DEFAULT_MAIN_ATTACK_OPTIONS, z as DEFAULT_ATTACK_BY_FIRE_OPTIONS } from "./renderControlMeasure-DGWf44sn.mjs";
1
+ import { $ as turnDrawRule, A as DEFAULT_GENERIC_POLYGON_OPTIONS, B as DEFAULT_BLOCK_OPTIONS, C as DEFAULT_FIX_OPTIONS, D as DEFAULT_DELAY_OPTIONS, E as DEFAULT_DISRUPT_OPTIONS, F as DEFAULT_BYPASS_OPTIONS, G as DEFAULT_ANTITANK_DITCH_OPTIONS, H as DEFAULT_ATTACK_HELICOPTER_OPTIONS, I as DEFAULT_BREACH_OPTIONS, J as rectangleDrawRule, K as DEFAULT_AMBUSH_OPTIONS, L as DEFAULT_BLOCK_MISSION_TASK_OPTIONS, M as DEFAULT_GENERIC_CIRCLE_OPTIONS, N as DEFAULT_CLASSIC_ARROW_OPTIONS, O as DEFAULT_CLEAR_OPTIONS, P as DEFAULT_CANALIZE_OPTIONS, Q as line23DrawRule, R as DEFAULT_BOUNDARY_OPTIONS, S as DEFAULT_FLOT_OPTIONS, T as DEFAULT_ENCIRCLEMENT_OPTIONS, U as DEFAULT_ATTACK_BY_FIRE_OPTIONS, V as DEFAULT_BATTLE_POSITION_OPTIONS, W as DEFAULT_ANTITANK_WALL_OPTIONS, X as supportByFireDrawRule, Y as axis1DrawRule, Z as line24DrawRule, _ as DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS, _t as EPSILON, a as DEFINITIONS, at as disruptDrawRule, b as DEFAULT_FORTIFIED_AREA_OPTIONS, c as getDefaultOptions, ct as createMidpointPerpendicularDrawRule, d as DEFAULT_SUPPORTING_ATTACK_OPTIONS, dt as snapToMidpointPerpendicular, et as line1DrawRule, f as DEFAULT_SUPPORT_BY_FIRE_OPTIONS, ft as createBaselineFrame, g as DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS, gt as unproject, h as DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, ht as project, i as CONTROL_MEASURE_METADATA, it as centerRadiusDrawRule, j as DEFAULT_GENERIC_LINE_OPTIONS, k as DEFAULT_GENERIC_RECTANGLE_OPTIONS, l as listControlMeasureMetadata, lt as getMidpointPerpendicularSignedDistance, m as DEFAULT_TACTICAL_ARROW_OPTIONS, mt as computeInitialWidthPoint, n as resolveStyleHints, nt as attackByFireDrawRule, o as getControlMeasureMetadata, ot as blockDrawRule, p as DEFAULT_STRONG_POINT_OPTIONS, pt as calculateMetrics, q as DEFAULT_AIRBORNE_ATTACK_OPTIONS, r as CONTROL_MEASURE_IDS, rt as point12DrawRule, s as getControlMeasureMetadataByValue, st as computeDefaultMidpointPerpendicularPoint, t as renderControlMeasure, tt as ambushDrawRule, u as DEFAULT_TURN_OPTIONS, ut as pointOnMidpointPerpendicularAxis, v as DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS, vt as getMetersPerPixel, w as DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS, x as DEFAULT_FORTIFIED_LINE_OPTIONS, y as DEFAULT_MAIN_ATTACK_OPTIONS, yt as roundToFixed, z as DEFAULT_BLOCK_ARROW_OPTIONS } from "./renderControlMeasure-DnM2w9jS.mjs";
2
2
  //#region src/freeze-orientation.ts
3
3
  /**
4
4
  * Dispatches to a measure kind's `freezeOrientation` hook (see
@@ -114,4 +114,4 @@ function toHexChannel(value) {
114
114
  return Math.max(0, Math.min(255, Math.round(value))).toString(16).padStart(2, "0");
115
115
  }
116
116
  //#endregion
117
- export { CONTROL_MEASURE_IDS, CONTROL_MEASURE_METADATA, DEFAULT_AIRBORNE_ATTACK_OPTIONS, DEFAULT_AMBUSH_OPTIONS, DEFAULT_ANTITANK_DITCH_OPTIONS, DEFAULT_ANTITANK_WALL_OPTIONS, DEFAULT_ATTACK_BY_FIRE_OPTIONS, DEFAULT_ATTACK_HELICOPTER_OPTIONS, DEFAULT_BLOCK_MISSION_TASK_OPTIONS, DEFAULT_BLOCK_OPTIONS, DEFAULT_BREACH_OPTIONS, DEFAULT_BYPASS_OPTIONS, DEFAULT_CANALIZE_OPTIONS, DEFAULT_CLEAR_OPTIONS, DEFAULT_DELAY_OPTIONS, DEFAULT_DISRUPT_OPTIONS, DEFAULT_ENCIRCLEMENT_OPTIONS, DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS, DEFAULT_FIX_OPTIONS, DEFAULT_FLOT_OPTIONS, DEFAULT_FORTIFIED_AREA_OPTIONS, DEFAULT_FORTIFIED_LINE_OPTIONS, DEFAULT_GENERIC_CIRCLE_OPTIONS, DEFAULT_GENERIC_LINE_OPTIONS, DEFAULT_GENERIC_POLYGON_OPTIONS, DEFAULT_GENERIC_RECTANGLE_OPTIONS, DEFAULT_MAIN_ATTACK_OPTIONS, DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS, DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS, DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_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, EPSILON, ambushDrawRule, attackByFireDrawRule, axis1DrawRule, blockDrawRule, calculateMetrics, centerRadiusDrawRule, cloneControlMeasure, computeDefaultMidpointPerpendicularPoint, computeInitialWidthPoint, controlMeasureIdFromFeature, createBaselineFrame, createMidpointPerpendicularDrawRule, disruptDrawRule, freezeOrientationOptions, getControlMeasureMetadata, getControlMeasureMetadataByValue, getDefaultOptions, getMetersPerPixel, getMidpointPerpendicularSignedDistance, isKind, line1DrawRule, line23DrawRule, line24DrawRule, listControlMeasureMetadata, point12DrawRule, pointOnMidpointPerpendicularAxis, project, rectangleDrawRule, renderControlMeasure, resolveStyleHints, roundToFixed, snapToMidpointPerpendicular, supportByFireDrawRule, toSimpleStyle, turnDrawRule, unproject };
117
+ export { CONTROL_MEASURE_IDS, CONTROL_MEASURE_METADATA, DEFAULT_AIRBORNE_ATTACK_OPTIONS, DEFAULT_AMBUSH_OPTIONS, DEFAULT_ANTITANK_DITCH_OPTIONS, DEFAULT_ANTITANK_WALL_OPTIONS, DEFAULT_ATTACK_BY_FIRE_OPTIONS, DEFAULT_ATTACK_HELICOPTER_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_FINAL_PROTECTIVE_FIRE_OPTIONS, DEFAULT_FIX_OPTIONS, DEFAULT_FLOT_OPTIONS, DEFAULT_FORTIFIED_AREA_OPTIONS, DEFAULT_FORTIFIED_LINE_OPTIONS, DEFAULT_GENERIC_CIRCLE_OPTIONS, DEFAULT_GENERIC_LINE_OPTIONS, DEFAULT_GENERIC_POLYGON_OPTIONS, DEFAULT_GENERIC_RECTANGLE_OPTIONS, DEFAULT_MAIN_ATTACK_OPTIONS, DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS, DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS, DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_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, EPSILON, ambushDrawRule, attackByFireDrawRule, axis1DrawRule, blockDrawRule, calculateMetrics, centerRadiusDrawRule, cloneControlMeasure, computeDefaultMidpointPerpendicularPoint, computeInitialWidthPoint, controlMeasureIdFromFeature, createBaselineFrame, createMidpointPerpendicularDrawRule, disruptDrawRule, freezeOrientationOptions, getControlMeasureMetadata, getControlMeasureMetadataByValue, getDefaultOptions, getMetersPerPixel, getMidpointPerpendicularSignedDistance, isKind, line1DrawRule, line23DrawRule, line24DrawRule, listControlMeasureMetadata, point12DrawRule, pointOnMidpointPerpendicularAxis, project, rectangleDrawRule, renderControlMeasure, resolveStyleHints, roundToFixed, snapToMidpointPerpendicular, supportByFireDrawRule, toSimpleStyle, turnDrawRule, unproject };
@@ -1,4 +1,4 @@
1
- import { X as ControlMeasureId } from "../index-DUGzYzPy.mjs";
1
+ import { X as ControlMeasureId } from "../index-BHWESyWA.mjs";
2
2
  import { FeatureCollection, Geometry } from "geojson";
3
3
 
4
4
  //#region src/preview/index.d.ts
@@ -1,4 +1,4 @@
1
- import { a as DEFINITIONS, t as renderControlMeasure } from "../renderControlMeasure-DGWf44sn.mjs";
1
+ import { a as DEFINITIONS, t as renderControlMeasure } from "../renderControlMeasure-DnM2w9jS.mjs";
2
2
  //#region src/preview/index.ts
3
3
  /**
4
4
  * Unitless `previewSample` points (~`[-1, 1]`) are scaled by this degree offset
@@ -206,8 +206,8 @@ const SHAFT_MAX_RATIO = .9;
206
206
  */
207
207
  function processAttackGeometry(coordinates, options = {}) {
208
208
  const shaftRatio = clamp(options.shaftWidthRatio ?? .6, SHAFT_MIN_RATIO, SHAFT_MAX_RATIO);
209
- const roundedBends = options.roundedBends ?? false;
210
- const bendSegments = options.bendSegments ?? 5;
209
+ const smooth = options.smooth ?? false;
210
+ const smoothResolution = options.smoothResolution ?? 5;
211
211
  const points = coordinates.map((c) => project(c[0], c[1]));
212
212
  const numPoints = points.length;
213
213
  const ptTip = points[0];
@@ -217,9 +217,9 @@ function processAttackGeometry(coordinates, options = {}) {
217
217
  const p = points[i];
218
218
  if (p) spinePoints.push(p);
219
219
  }
220
- return { geometry: calculateSymbolGeometry(ptTip, ptWidth, spinePoints, shaftRatio, roundedBends, bendSegments) };
220
+ return { geometry: calculateSymbolGeometry(ptTip, ptWidth, spinePoints, shaftRatio, smooth, smoothResolution) };
221
221
  }
222
- function calculateSymbolGeometry(ptTip, ptWidth, spine, shaftRatio, roundedBends, bendSegments) {
222
+ function calculateSymbolGeometry(ptTip, ptWidth, spine, shaftRatio, smooth, smoothResolution) {
223
223
  const initialNeck = spine[spine.length - 1];
224
224
  if (!initialNeck) return null;
225
225
  const initialTipDir = vecNorm(vecSub(ptTip, initialNeck));
@@ -273,8 +273,8 @@ function calculateSymbolGeometry(ptTip, ptWidth, spine, shaftRatio, roundedBends
273
273
  ];
274
274
  const fullSpine = [...remainingSpine, shaftEndCenter];
275
275
  return {
276
- shaftLeft: offsetPolyline(fullSpine, shaftHalfWidth, roundedBends, bendSegments),
277
- shaftRight: offsetPolyline(fullSpine, -shaftHalfWidth, roundedBends, bendSegments),
276
+ shaftLeft: offsetPolyline(fullSpine, shaftHalfWidth, smooth, smoothResolution),
277
+ shaftRight: offsetPolyline(fullSpine, -shaftHalfWidth, smooth, smoothResolution),
278
278
  headRing,
279
279
  ptTip,
280
280
  ptNeck,
@@ -975,20 +975,20 @@ const ATTACK_SHAFT_PARAMS = [
975
975
  step: .05
976
976
  },
977
977
  {
978
- key: "roundedBends",
979
- label: "Rounded bends",
978
+ key: "smooth",
979
+ label: "Smooth",
980
980
  description: "Round the corners where the shaft changes direction.",
981
981
  type: "boolean"
982
982
  },
983
983
  {
984
- key: "bendSegments",
985
- label: "Bend segments",
986
- description: "Number of segments approximating each rounded bend",
984
+ key: "smoothResolution",
985
+ label: "Smooth resolution",
986
+ description: "Number of segments approximating each rounded bend when smooth mode is enabled.",
987
987
  type: "number",
988
988
  min: 1,
989
989
  max: 20,
990
990
  step: 1,
991
- visibleWhen: (opts) => opts.roundedBends === true
991
+ visibleWhen: (opts) => opts.smooth === true
992
992
  }
993
993
  ];
994
994
  const FIRE_ARROW_PARAMS = [
@@ -1002,8 +1002,8 @@ const FIRE_ARROW_PARAMS = [
1002
1002
  step: .01
1003
1003
  },
1004
1004
  {
1005
- key: "backLineLengthRatio",
1006
- label: "Back line length",
1005
+ key: "rearLineLengthRatio",
1006
+ label: "Rear line length",
1007
1007
  description: "Length of the rear flare lines as a ratio of the head",
1008
1008
  type: "number",
1009
1009
  min: .05,
@@ -1011,8 +1011,8 @@ const FIRE_ARROW_PARAMS = [
1011
1011
  step: .01
1012
1012
  },
1013
1013
  {
1014
- key: "backLineAngle",
1015
- label: "Back line angle",
1014
+ key: "rearLineAngle",
1015
+ label: "Rear line angle",
1016
1016
  description: "Angle of the rear flare lines, in degrees",
1017
1017
  type: "number",
1018
1018
  min: 0,
@@ -1021,8 +1021,8 @@ const FIRE_ARROW_PARAMS = [
1021
1021
  }
1022
1022
  ];
1023
1023
  const FORTIFIED_AREA_SIZE_PARAMS = [{
1024
- key: "sizePixels",
1025
- label: "Size",
1024
+ key: "toothSizePixels",
1025
+ label: "Tooth size",
1026
1026
  description: "Size of the fortified-area teeth, in pixels",
1027
1027
  type: "number",
1028
1028
  min: 5,
@@ -1030,8 +1030,8 @@ const FORTIFIED_AREA_SIZE_PARAMS = [{
1030
1030
  step: 1,
1031
1031
  unit: "px"
1032
1032
  }, {
1033
- key: "size",
1034
- label: "Size",
1033
+ key: "toothSize",
1034
+ label: "Tooth size",
1035
1035
  description: "Size of the fortified-area teeth, in meters",
1036
1036
  type: "number",
1037
1037
  min: 1,
@@ -1098,8 +1098,8 @@ const FORTIFIED_AREA_PARAMS = [
1098
1098
  //#region src/generators/cm15-maneuver-areas/airborneAttack.ts
1099
1099
  const DEFAULT_AIRBORNE_ATTACK_OPTIONS = {
1100
1100
  shaftWidthRatio: DEFAULT_SHAFT_WIDTH_RATIO,
1101
- roundedBends: false,
1102
- bendSegments: 5
1101
+ smooth: false,
1102
+ smoothResolution: 5
1103
1103
  };
1104
1104
  const AIRBORNE_ATTACK_METADATA = {
1105
1105
  id: "airborne-attack",
@@ -1194,7 +1194,7 @@ const DEFAULT_AMBUSH_OPTIONS = {
1194
1194
  hatchLengthRatio: .15,
1195
1195
  hatchCount: 5,
1196
1196
  curveDepthRatio: .25,
1197
- resolution: 30
1197
+ arcSegments: 30
1198
1198
  };
1199
1199
  const AMBUSH_METADATA = {
1200
1200
  id: "ambush",
@@ -1255,8 +1255,8 @@ const AMBUSH_METADATA = {
1255
1255
  step: .01
1256
1256
  },
1257
1257
  {
1258
- key: "resolution",
1259
- label: "Resolution",
1258
+ key: "arcSegments",
1259
+ label: "Arc segments",
1260
1260
  description: "Number of segments used to render the curve",
1261
1261
  type: "number",
1262
1262
  min: 4,
@@ -1278,11 +1278,11 @@ const quadBezier = (t, a, b, c) => {
1278
1278
  * @returns GeoJSON FeatureCollection containing LineString components
1279
1279
  */
1280
1280
  function createAmbushSymbol(coordinates, options = {}) {
1281
- const { arrowheadLengthRatio, arrowheadWidthRatio, hatchLengthRatio, hatchCount, curveDepthRatio, resolution } = {
1281
+ const { arrowheadLengthRatio, arrowheadWidthRatio, hatchLengthRatio, hatchCount, curveDepthRatio, arcSegments } = {
1282
1282
  ...DEFAULT_AMBUSH_OPTIONS,
1283
1283
  ...options
1284
1284
  };
1285
- const safeResolution = Math.max(1, Math.floor(resolution));
1285
+ const safeArcSegments = Math.max(1, Math.floor(arcSegments));
1286
1286
  const safeHatchCount = Math.max(0, Math.floor(hatchCount));
1287
1287
  const safeArrowheadLengthRatio = Math.max(0, arrowheadLengthRatio);
1288
1288
  const safeArrowheadWidthRatio = Math.max(0, arrowheadWidthRatio);
@@ -1315,8 +1315,8 @@ function createAmbushSymbol(coordinates, options = {}) {
1315
1315
  vecSub(hBase, vecScale(perp, hw))
1316
1316
  ]);
1317
1317
  const curve = [];
1318
- for (let i = 0; i <= safeResolution; i++) {
1319
- const t = i / safeResolution;
1318
+ for (let i = 0; i <= safeArcSegments; i++) {
1319
+ const t = i / safeArcSegments;
1320
1320
  curve.push(quadBezier(t, p2, ctrl, p3));
1321
1321
  }
1322
1322
  lines.push(curve);
@@ -1363,8 +1363,8 @@ const FORTIFIED_PARAMS = [
1363
1363
  visibleWhen: (opts) => Boolean(opts.smooth)
1364
1364
  },
1365
1365
  {
1366
- key: "sizePixels",
1367
- label: "Size",
1366
+ key: "toothSizePixels",
1367
+ label: "Tooth size",
1368
1368
  description: "Side length of the square crenellations",
1369
1369
  type: "number",
1370
1370
  min: 5,
@@ -1373,8 +1373,8 @@ const FORTIFIED_PARAMS = [
1373
1373
  unit: "px"
1374
1374
  },
1375
1375
  {
1376
- key: "size",
1377
- label: "Size",
1376
+ key: "toothSize",
1377
+ label: "Tooth size",
1378
1378
  description: "Side length of the square crenellations",
1379
1379
  type: "number",
1380
1380
  min: 1,
@@ -1623,8 +1623,8 @@ const ANTITANK_WALL = defineControlMeasure({
1623
1623
  //#region src/generators/cm15-maneuver-areas/attackByFire.ts
1624
1624
  const DEFAULT_ATTACK_BY_FIRE_OPTIONS = {
1625
1625
  arrowheadWidthRatio: .3,
1626
- backLineLengthRatio: .3,
1627
- backLineAngle: 45
1626
+ rearLineLengthRatio: .3,
1627
+ rearLineAngle: 45
1628
1628
  };
1629
1629
  const ATTACK_BY_FIRE_METADATA = {
1630
1630
  id: "attack-by-fire",
@@ -1655,8 +1655,8 @@ const ATTACK_BY_FIRE_METADATA = {
1655
1655
  function createAttackByFire(coordinates, options = {}) {
1656
1656
  const featureProps = {};
1657
1657
  const arrowheadWidthRatio = options.arrowheadWidthRatio ?? DEFAULT_ATTACK_BY_FIRE_OPTIONS.arrowheadWidthRatio;
1658
- const backLineLengthRatio = options.backLineLengthRatio ?? DEFAULT_ATTACK_BY_FIRE_OPTIONS.backLineLengthRatio;
1659
- const backLineAngle = options.backLineAngle ?? DEFAULT_ATTACK_BY_FIRE_OPTIONS.backLineAngle;
1658
+ const rearLineLengthRatio = options.rearLineLengthRatio ?? DEFAULT_ATTACK_BY_FIRE_OPTIONS.rearLineLengthRatio;
1659
+ const rearLineAngle = options.rearLineAngle ?? DEFAULT_ATTACK_BY_FIRE_OPTIONS.rearLineAngle;
1660
1660
  const c1 = coordinates[0];
1661
1661
  const c2 = coordinates[1];
1662
1662
  const c3 = coordinates[2];
@@ -1682,13 +1682,13 @@ function createAttackByFire(coordinates, options = {}) {
1682
1682
  const lenShaft = Math.abs(signedTipDistance);
1683
1683
  const lenBase = frame.length;
1684
1684
  const dirBase = frame.direction;
1685
- const angleRad = backLineAngle * Math.PI / 180;
1685
+ const angleRad = rearLineAngle * Math.PI / 180;
1686
1686
  const baseAngle = -Math.PI / 2;
1687
1687
  const angleLeft = baseAngle - angleRad;
1688
1688
  const dirBackLeft = [dirBase[0] * Math.cos(angleLeft) - dirBase[1] * Math.sin(angleLeft), dirBase[0] * Math.sin(angleLeft) + dirBase[1] * Math.cos(angleLeft)];
1689
1689
  const angleRight = baseAngle + angleRad;
1690
1690
  const dirBackRight = [dirBase[0] * Math.cos(angleRight) - dirBase[1] * Math.sin(angleRight), dirBase[0] * Math.sin(angleRight) + dirBase[1] * Math.cos(angleRight)];
1691
- const backLen = lenBase * backLineLengthRatio;
1691
+ const backLen = lenBase * rearLineLengthRatio;
1692
1692
  const p2Back = vecAdd(p2, vecScale(dirBackLeft, backLen));
1693
1693
  const p3Back = vecAdd(p3, vecScale(dirBackRight, backLen));
1694
1694
  const headWidth = lenShaft * arrowheadWidthRatio;
@@ -1763,8 +1763,8 @@ const ATTACK_BY_FIRE = defineControlMeasure({
1763
1763
  //#region src/generators/cm15-maneuver-areas/attackHelicopter.ts
1764
1764
  const DEFAULT_ATTACK_HELICOPTER_OPTIONS = {
1765
1765
  shaftWidthRatio: DEFAULT_SHAFT_WIDTH_RATIO,
1766
- roundedBends: false,
1767
- bendSegments: 5,
1766
+ smooth: false,
1767
+ smoothResolution: 5,
1768
1768
  symbolHeightRatio: .45,
1769
1769
  triangleSizeRatio: .25,
1770
1770
  bottomBarWidthRatio: 1.5,
@@ -2729,7 +2729,7 @@ const DEFAULT_SMOOTH_RESOLUTION$5 = 12;
2729
2729
  const MIN_SMOOTH_RESOLUTION$1 = 2;
2730
2730
  const MAX_SMOOTH_RESOLUTION$1 = 64;
2731
2731
  const DEFAULT_BLOCK_ARROW_OPTIONS = {
2732
- shaftWidth: .06,
2732
+ shaftWidthRatio: .06,
2733
2733
  arrowheadStyle: "triangle",
2734
2734
  arrowheadWidthRatio: .18,
2735
2735
  arrowheadLengthRatio: .22,
@@ -2751,7 +2751,7 @@ const BLOCK_ARROW_METADATA = {
2751
2751
  drawRule: "Axis1",
2752
2752
  params: [
2753
2753
  {
2754
- key: "shaftWidth",
2754
+ key: "shaftWidthRatio",
2755
2755
  label: "Shaft width",
2756
2756
  description: "Shaft band width as a fraction of the total path length",
2757
2757
  type: "number",
@@ -2844,7 +2844,7 @@ const BLOCK_ARROW_METADATA = {
2844
2844
  * right side of the shaft.
2845
2845
  */
2846
2846
  function createBlockArrow(coordinates, options = {}) {
2847
- const { shaftWidth, arrowheadStyle, arrowheadWidthRatio, arrowheadLengthRatio, smooth, smoothResolution, filled } = {
2847
+ const { shaftWidthRatio, arrowheadStyle, arrowheadWidthRatio, arrowheadLengthRatio, smooth, smoothResolution, filled } = {
2848
2848
  ...DEFAULT_BLOCK_ARROW_OPTIONS,
2849
2849
  ...options
2850
2850
  };
@@ -2857,7 +2857,7 @@ function createBlockArrow(coordinates, options = {}) {
2857
2857
  const { pts, pathLength, tip, dir, perp, segLength } = axis;
2858
2858
  const requestedHeadLen = axis1.headLength ?? pathLength * arrowheadLengthRatio;
2859
2859
  const headLen = Math.min(requestedHeadLen, segLength * .95);
2860
- const halfShaft = pathLength * shaftWidth / 2;
2860
+ const halfShaft = pathLength * shaftWidthRatio / 2;
2861
2861
  const halfHead = axis1.headHalfWidth ?? pathLength * arrowheadWidthRatio / 2;
2862
2862
  const onAxis = (d, side = 0) => [tip[0] - dir[0] * d + perp[0] * side, tip[1] - dir[1] * d + perp[1] * side];
2863
2863
  let shaftEndDist;
@@ -2956,7 +2956,7 @@ const BLOCK_ARROW = defineControlMeasure({
2956
2956
  [-1.5, 0],
2957
2957
  [.95, .4]
2958
2958
  ],
2959
- options: { shaftWidth: .2 }
2959
+ options: { shaftWidthRatio: .2 }
2960
2960
  }
2961
2961
  });
2962
2962
  function axis1Geometry(coordinates) {
@@ -4990,7 +4990,7 @@ const BLADE_LENGTH_FRACTION = .8;
4990
4990
  const DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS = {
4991
4991
  arrowheadLengthRatio: .07,
4992
4992
  arrowheadWidthRatio: .67,
4993
- bladeHeight: .03
4993
+ bladeHeightRatio: .03
4994
4994
  };
4995
4995
  const FPF_SHARED = {
4996
4996
  entity: "Maneuver Lines",
@@ -5020,7 +5020,7 @@ const FPF_SHARED = {
5020
5020
  step: .01
5021
5021
  },
5022
5022
  {
5023
- key: "bladeHeight",
5023
+ key: "bladeHeightRatio",
5024
5024
  label: "Blade height",
5025
5025
  description: "Blade's perpendicular reach into the V, as a fraction of its arm's length",
5026
5026
  type: "number",
@@ -5050,7 +5050,7 @@ const FINAL_PROTECTIVE_FIRE_RIGHT_METADATA = {
5050
5050
  * Builds the filled "blade": a uniform-width rectangle hugging the inside of
5051
5051
  * one arm. One long edge lies on the central 80% of the arm line (connected to
5052
5052
  * the line); the strip bulges perpendicularly into the inside of the V by
5053
- * `bladeHeight * armLength`.
5053
+ * `bladeHeightRatio * armLength`.
5054
5054
  *
5055
5055
  * @param vertex - PT 1, the shared vertex of the V (projected)
5056
5056
  * @param tip - the outward tip of the bladed arm (projected)
@@ -5058,7 +5058,7 @@ const FINAL_PROTECTIVE_FIRE_RIGHT_METADATA = {
5058
5058
  * be undefined during live single-arm feedback, in which case a default side
5059
5059
  * is chosen
5060
5060
  */
5061
- function bladeRectangle(vertex, tip, otherTip, bladeHeight) {
5061
+ function bladeRectangle(vertex, tip, otherTip, bladeHeightRatio) {
5062
5062
  const v = vecSub(tip, vertex);
5063
5063
  const armLength = vecMag(v);
5064
5064
  if (armLength < 1e-6) return null;
@@ -5071,7 +5071,7 @@ function bladeRectangle(vertex, tip, otherTip, bladeHeight) {
5071
5071
  const gap = (1 - BLADE_LENGTH_FRACTION) / 2;
5072
5072
  const onLineNear = vecAdd(vertex, vecScale(dir, armLength * gap));
5073
5073
  const onLineFar = vecAdd(vertex, vecScale(dir, armLength * (1 - gap)));
5074
- const height = vecScale(perp, armLength * bladeHeight);
5074
+ const height = vecScale(perp, armLength * bladeHeightRatio);
5075
5075
  return [
5076
5076
  onLineNear,
5077
5077
  onLineFar,
@@ -5093,7 +5093,7 @@ function bladeRectangle(vertex, tip, otherTip, bladeHeight) {
5093
5093
  * @param options - Arrowhead and blade sizing parameters
5094
5094
  */
5095
5095
  function createFinalProtectiveFire(coordinates, bladedArm, options = {}) {
5096
- const { arrowheadLengthRatio, arrowheadWidthRatio, bladeHeight } = {
5096
+ const { arrowheadLengthRatio, arrowheadWidthRatio, bladeHeightRatio } = {
5097
5097
  ...DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS,
5098
5098
  ...options
5099
5099
  };
@@ -5113,7 +5113,7 @@ function createFinalProtectiveFire(coordinates, bladedArm, options = {}) {
5113
5113
  const bladeTip = v.tips[bladedArm];
5114
5114
  if (bladeTip) {
5115
5115
  const otherTip = v.tips[bladedArm === 0 ? 1 : 0];
5116
- const blade = bladeRectangle(v.vertex, bladeTip, otherTip, Math.max(0, bladeHeight));
5116
+ const blade = bladeRectangle(v.vertex, bladeTip, otherTip, Math.max(0, bladeHeightRatio));
5117
5117
  if (blade) {
5118
5118
  const ring = [...blade, blade[0]].map((c) => unproject(c[0], c[1]));
5119
5119
  features.push({
@@ -5299,14 +5299,14 @@ const FIX = defineControlMeasure({
5299
5299
  //#region src/generators/cm14-maneuver-lines/flot.ts
5300
5300
  const DEFAULT_RADIUS = 50;
5301
5301
  const DEFAULT_RADIUS_PIXELS = 10;
5302
- const DEFAULT_RESOLUTION = 16;
5302
+ const DEFAULT_ARC_SEGMENTS = 16;
5303
5303
  /**
5304
5304
  * Default options for the FLOT graphic.
5305
5305
  */
5306
5306
  const DEFAULT_FLOT_OPTIONS = {
5307
5307
  radius: DEFAULT_RADIUS,
5308
5308
  radiusPixels: DEFAULT_RADIUS_PIXELS,
5309
- resolution: DEFAULT_RESOLUTION
5309
+ arcSegments: DEFAULT_ARC_SEGMENTS
5310
5310
  };
5311
5311
  const FLOT_METADATA = {
5312
5312
  id: "flot",
@@ -5341,8 +5341,8 @@ const FLOT_METADATA = {
5341
5341
  unit: "m"
5342
5342
  },
5343
5343
  {
5344
- key: "resolution",
5345
- label: "Resolution",
5344
+ key: "arcSegments",
5345
+ label: "Arc segments",
5346
5346
  description: "Number of points used to render each semicircle",
5347
5347
  type: "number",
5348
5348
  min: 4,
@@ -5362,16 +5362,16 @@ const FLOT_METADATA = {
5362
5362
  * @param segmentDir - Direction vector of the segment (normalized)
5363
5363
  * @param perpDir - Perpendicular direction vector (normalized)
5364
5364
  * @param radius - Radius of the semicircle
5365
- * @param resolution - Number of points in the arc
5365
+ * @param arcSegments - Number of points in the arc
5366
5366
  * @param includeStart - Whether to include the start point
5367
5367
  * @returns Array of arc points forming a true semicircle
5368
5368
  */
5369
- function generateArcPoints(startPoint, segmentDir, perpDir, radius, resolution, includeStart) {
5369
+ function generateArcPoints(startPoint, segmentDir, perpDir, radius, arcSegments, includeStart) {
5370
5370
  const points = [];
5371
5371
  const startIndex = includeStart ? 0 : 1;
5372
5372
  const center = vecAdd(startPoint, vecScale(segmentDir, radius));
5373
- for (let i = startIndex; i <= resolution; i++) {
5374
- const t = i / resolution;
5373
+ for (let i = startIndex; i <= arcSegments; i++) {
5374
+ const t = i / arcSegments;
5375
5375
  const angle = Math.PI * (1 - t);
5376
5376
  const alongSegment = Math.cos(angle) * radius;
5377
5377
  const perpOffset = Math.sin(angle) * radius;
@@ -5386,11 +5386,11 @@ function generateArcPoints(startPoint, segmentDir, perpDir, radius, resolution,
5386
5386
  * @param p1 - Start position (projected)
5387
5387
  * @param p2 - End position (projected)
5388
5388
  * @param radius - Radius of each semicircle
5389
- * @param resolution - Points per arc
5389
+ * @param arcSegments - Points per arc
5390
5390
  * @param isFirstSegment - Whether this is the first segment (include start point)
5391
5391
  * @returns Array of points forming the scalloped line for this segment
5392
5392
  */
5393
- function processSegment(p1, p2, radius, resolution, isFirstSegment) {
5393
+ function processSegment(p1, p2, radius, arcSegments, isFirstSegment) {
5394
5394
  const segmentVec = vecSub(p2, p1);
5395
5395
  const segmentLength = vecMag(segmentVec);
5396
5396
  if (segmentLength < 1e-6) return isFirstSegment ? [p1] : [];
@@ -5402,14 +5402,14 @@ function processSegment(p1, p2, radius, resolution, isFirstSegment) {
5402
5402
  const remainingLength = segmentLength - numFullArcs * diameter;
5403
5403
  let currentPos = p1;
5404
5404
  for (let arcIndex = 0; arcIndex < numFullArcs; arcIndex++) {
5405
- const arcPoints = generateArcPoints(currentPos, segmentDir, perpDir, radius, resolution, arcIndex === 0 && isFirstSegment);
5405
+ const arcPoints = generateArcPoints(currentPos, segmentDir, perpDir, radius, arcSegments, arcIndex === 0 && isFirstSegment);
5406
5406
  points.push(...arcPoints);
5407
5407
  currentPos = vecAdd(currentPos, vecScale(segmentDir, diameter));
5408
5408
  }
5409
5409
  if (remainingLength > diameter * .1) {
5410
5410
  const partialRadius = remainingLength / 2;
5411
- const partialResolution = Math.max(3, Math.round(resolution * (partialRadius / radius)));
5412
- const arcPoints = generateArcPoints(currentPos, segmentDir, perpDir, partialRadius, partialResolution, numFullArcs === 0 && isFirstSegment);
5411
+ const partialArcSegments = Math.max(3, Math.round(arcSegments * (partialRadius / radius)));
5412
+ const arcPoints = generateArcPoints(currentPos, segmentDir, perpDir, partialRadius, partialArcSegments, numFullArcs === 0 && isFirstSegment);
5413
5413
  points.push(...arcPoints);
5414
5414
  }
5415
5415
  return points;
@@ -5429,22 +5429,22 @@ function processSegment(p1, p2, radius, resolution, isFirstSegment) {
5429
5429
  * ```typescript
5430
5430
  * const flot = createFLOT(
5431
5431
  * [[-122.4194, 37.7749], [-122.4100, 37.7800], [-122.4000, 37.7750]],
5432
- * { radius: 100, resolution: 20 }
5432
+ * { radius: 100, arcSegments: 20 }
5433
5433
  * );
5434
5434
  * ```
5435
5435
  */
5436
5436
  function createFLOT(positions, options = {}) {
5437
- const { radius = DEFAULT_RADIUS, radiusPixels, metersPerPixel, resolution = DEFAULT_RESOLUTION } = options;
5437
+ const { radius = DEFAULT_RADIUS, radiusPixels, metersPerPixel, arcSegments = DEFAULT_ARC_SEGMENTS } = options;
5438
5438
  let effectiveRadius = radius;
5439
5439
  if (radiusPixels !== void 0 && metersPerPixel !== void 0 && metersPerPixel > 0) effectiveRadius = radiusPixels * metersPerPixel;
5440
5440
  const safeRadius = Math.max(EPSILON, effectiveRadius);
5441
- const safeResolution = Math.max(3, Math.round(resolution));
5441
+ const safeArcSegments = Math.max(3, Math.round(arcSegments));
5442
5442
  const projectedPoints = positions.map((p) => project(p[0], p[1]));
5443
5443
  const allPoints = [];
5444
5444
  for (let i = 0; i < projectedPoints.length - 1; i++) {
5445
5445
  const p1 = projectedPoints[i];
5446
5446
  const p2 = projectedPoints[i + 1];
5447
- const segmentPoints = processSegment(p1, p2, safeRadius, safeResolution, i === 0);
5447
+ const segmentPoints = processSegment(p1, p2, safeRadius, safeArcSegments, i === 0);
5448
5448
  allPoints.push(...segmentPoints);
5449
5449
  }
5450
5450
  if (allPoints.length > 0 && projectedPoints.length > 1) {
@@ -5473,15 +5473,15 @@ const FLOT = defineControlMeasure({
5473
5473
  });
5474
5474
  //#endregion
5475
5475
  //#region src/generators/cm29-protection-lines/fortifiedLine.ts
5476
- const DEFAULT_SIZE = 50;
5477
- const DEFAULT_SIZE_PIXELS = 10;
5476
+ const DEFAULT_TOOTH_SIZE = 50;
5477
+ const DEFAULT_TOOTH_SIZE_PIXELS = 10;
5478
5478
  const DEFAULT_SMOOTH_RESOLUTION$1 = 16;
5479
5479
  /**
5480
5480
  * Default options for the Fortified Line graphic.
5481
5481
  */
5482
5482
  const DEFAULT_FORTIFIED_LINE_OPTIONS = {
5483
- size: DEFAULT_SIZE,
5484
- sizePixels: DEFAULT_SIZE_PIXELS,
5483
+ toothSize: DEFAULT_TOOTH_SIZE,
5484
+ toothSizePixels: DEFAULT_TOOTH_SIZE_PIXELS,
5485
5485
  smooth: false,
5486
5486
  smoothResolution: DEFAULT_SMOOTH_RESOLUTION$1
5487
5487
  };
@@ -5571,9 +5571,9 @@ function processFortifiedSegment(p1, p2, size, isFirstSegment) {
5571
5571
  * Calculates the effective size based on options and projection.
5572
5572
  */
5573
5573
  function calculateEffectiveSize(options) {
5574
- const { size = DEFAULT_SIZE, sizePixels, metersPerPixel } = options;
5575
- let effectiveSize = size;
5576
- if (sizePixels !== void 0 && metersPerPixel !== void 0 && metersPerPixel > 0) effectiveSize = sizePixels * metersPerPixel;
5574
+ const { toothSize = DEFAULT_TOOTH_SIZE, toothSizePixels, metersPerPixel } = options;
5575
+ let effectiveSize = toothSize;
5576
+ if (toothSizePixels !== void 0 && metersPerPixel !== void 0 && metersPerPixel > 0) effectiveSize = toothSizePixels * metersPerPixel;
5577
5577
  return Math.max(EPSILON, effectiveSize);
5578
5578
  }
5579
5579
  /**
@@ -5825,8 +5825,8 @@ const ISOLATE = defineControlMeasure({
5825
5825
  //#region src/generators/cm15-maneuver-areas/mainAttack.ts
5826
5826
  const DEFAULT_MAIN_ATTACK_OPTIONS = {
5827
5827
  shaftWidthRatio: DEFAULT_SHAFT_WIDTH_RATIO,
5828
- roundedBends: false,
5829
- bendSegments: 5
5828
+ smooth: false,
5829
+ smoothResolution: 5
5830
5830
  };
5831
5831
  const MAIN_ATTACK_METADATA = {
5832
5832
  id: "main-attack",
@@ -6731,8 +6731,8 @@ const STRONG_POINT = defineControlMeasure({
6731
6731
  //#region src/generators/cm15-maneuver-areas/supportByFire.ts
6732
6732
  const DEFAULT_SUPPORT_BY_FIRE_OPTIONS = {
6733
6733
  arrowheadWidthRatio: .3,
6734
- backLineLengthRatio: .3,
6735
- backLineAngle: 45
6734
+ rearLineLengthRatio: .3,
6735
+ rearLineAngle: 45
6736
6736
  };
6737
6737
  const SUPPORT_BY_FIRE_METADATA = {
6738
6738
  id: "support-by-fire",
@@ -6759,8 +6759,8 @@ const SUPPORT_BY_FIRE_METADATA = {
6759
6759
  function createSupportByFire(coordinates, options = {}) {
6760
6760
  const featureProps = {};
6761
6761
  const arrowheadWidthRatio = options.arrowheadWidthRatio ?? DEFAULT_SUPPORT_BY_FIRE_OPTIONS.arrowheadWidthRatio;
6762
- const backLineLengthRatio = options.backLineLengthRatio ?? DEFAULT_SUPPORT_BY_FIRE_OPTIONS.backLineLengthRatio;
6763
- const backLineAngle = options.backLineAngle ?? DEFAULT_SUPPORT_BY_FIRE_OPTIONS.backLineAngle;
6762
+ const rearLineLengthRatio = options.rearLineLengthRatio ?? DEFAULT_SUPPORT_BY_FIRE_OPTIONS.rearLineLengthRatio;
6763
+ const rearLineAngle = options.rearLineAngle ?? DEFAULT_SUPPORT_BY_FIRE_OPTIONS.rearLineAngle;
6764
6764
  const c1 = coordinates[0];
6765
6765
  const c2 = coordinates[1];
6766
6766
  const c3 = coordinates[2];
@@ -6776,13 +6776,13 @@ function createSupportByFire(coordinates, options = {}) {
6776
6776
  type: "FeatureCollection",
6777
6777
  features: []
6778
6778
  };
6779
- const angleRad = backLineAngle * Math.PI / 180;
6779
+ const angleRad = rearLineAngle * Math.PI / 180;
6780
6780
  const baseAngle = -Math.PI / 2;
6781
6781
  const angleLeft = baseAngle - angleRad;
6782
6782
  const dirBackLeft = [dirBase[0] * Math.cos(angleLeft) - dirBase[1] * Math.sin(angleLeft), dirBase[0] * Math.sin(angleLeft) + dirBase[1] * Math.cos(angleLeft)];
6783
6783
  const angleRight = baseAngle + angleRad;
6784
6784
  const dirBackRight = [dirBase[0] * Math.cos(angleRight) - dirBase[1] * Math.sin(angleRight), dirBase[0] * Math.sin(angleRight) + dirBase[1] * Math.cos(angleRight)];
6785
- const backLen = lenBase * backLineLengthRatio;
6785
+ const backLen = lenBase * rearLineLengthRatio;
6786
6786
  const p1Back = vecAdd(p1, vecScale(dirBackLeft, backLen));
6787
6787
  const p2Back = vecAdd(p2, vecScale(dirBackRight, backLen));
6788
6788
  const vLeft = vecSub(p3, p1);
@@ -6877,8 +6877,8 @@ const SUPPORT_BY_FIRE = defineControlMeasure({
6877
6877
  //#region src/generators/cm15-maneuver-areas/supportingAttack.ts
6878
6878
  const DEFAULT_SUPPORTING_ATTACK_OPTIONS = {
6879
6879
  shaftWidthRatio: DEFAULT_SHAFT_WIDTH_RATIO,
6880
- roundedBends: false,
6881
- bendSegments: 5
6880
+ smooth: false,
6881
+ smoothResolution: 5
6882
6882
  };
6883
6883
  const SUPPORTING_ATTACK_METADATA = {
6884
6884
  id: "supporting-attack",
@@ -7321,4 +7321,4 @@ function assertNever(value) {
7321
7321
  throw new Error(`Unhandled control measure kind: ${String(value)}`);
7322
7322
  }
7323
7323
  //#endregion
7324
- export { point12DrawRule as $, DEFAULT_GENERIC_POLYGON_OPTIONS as A, DEFAULT_ANTITANK_WALL_OPTIONS as B, DEFAULT_FIX_OPTIONS as C, DEFAULT_DELAY_OPTIONS as D, DEFAULT_DISRUPT_OPTIONS as E, DEFAULT_BREACH_OPTIONS as F, axis1DrawRule as G, DEFAULT_AMBUSH_OPTIONS as H, DEFAULT_BLOCK_MISSION_TASK_OPTIONS as I, line23DrawRule as J, supportByFireDrawRule as K, DEFAULT_BLOCK_OPTIONS as L, DEFAULT_GENERIC_CIRCLE_OPTIONS as M, DEFAULT_CANALIZE_OPTIONS as N, DEFAULT_CLEAR_OPTIONS as O, DEFAULT_BYPASS_OPTIONS as P, attackByFireDrawRule as Q, DEFAULT_ATTACK_HELICOPTER_OPTIONS as R, DEFAULT_FLOT_OPTIONS as S, DEFAULT_ENCIRCLEMENT_OPTIONS as T, DEFAULT_AIRBORNE_ATTACK_OPTIONS as U, DEFAULT_ANTITANK_DITCH_OPTIONS as V, rectangleDrawRule as W, line1DrawRule as X, turnDrawRule as Y, ambushDrawRule as Z, DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS as _, DEFINITIONS as a, getMidpointPerpendicularSignedDistance as at, DEFAULT_FORTIFIED_AREA_OPTIONS as b, getDefaultOptions as c, createBaselineFrame as ct, DEFAULT_SUPPORTING_ATTACK_OPTIONS as d, project as dt, centerRadiusDrawRule as et, DEFAULT_SUPPORT_BY_FIRE_OPTIONS as f, unproject as ft, DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS as g, DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS as h, roundToFixed as ht, CONTROL_MEASURE_METADATA as i, createMidpointPerpendicularDrawRule as it, DEFAULT_GENERIC_LINE_OPTIONS as j, DEFAULT_GENERIC_RECTANGLE_OPTIONS as k, listControlMeasureMetadata as l, calculateMetrics as lt, DEFAULT_TACTICAL_ARROW_OPTIONS as m, getMetersPerPixel as mt, resolveStyleHints as n, blockDrawRule as nt, getControlMeasureMetadata as o, pointOnMidpointPerpendicularAxis as ot, DEFAULT_STRONG_POINT_OPTIONS as p, EPSILON as pt, line24DrawRule as q, CONTROL_MEASURE_IDS as r, computeDefaultMidpointPerpendicularPoint as rt, getControlMeasureMetadataByValue as s, snapToMidpointPerpendicular as st, renderControlMeasure as t, disruptDrawRule as tt, DEFAULT_TURN_OPTIONS as u, computeInitialWidthPoint as ut, DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS as v, DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS as w, DEFAULT_FORTIFIED_LINE_OPTIONS as x, DEFAULT_MAIN_ATTACK_OPTIONS as y, DEFAULT_ATTACK_BY_FIRE_OPTIONS as z };
7324
+ export { turnDrawRule as $, DEFAULT_GENERIC_POLYGON_OPTIONS as A, DEFAULT_BLOCK_OPTIONS as B, DEFAULT_FIX_OPTIONS as C, DEFAULT_DELAY_OPTIONS as D, DEFAULT_DISRUPT_OPTIONS as E, DEFAULT_BYPASS_OPTIONS as F, DEFAULT_ANTITANK_DITCH_OPTIONS as G, DEFAULT_ATTACK_HELICOPTER_OPTIONS as H, DEFAULT_BREACH_OPTIONS as I, rectangleDrawRule as J, DEFAULT_AMBUSH_OPTIONS as K, DEFAULT_BLOCK_MISSION_TASK_OPTIONS as L, DEFAULT_GENERIC_CIRCLE_OPTIONS as M, DEFAULT_CLASSIC_ARROW_OPTIONS as N, DEFAULT_CLEAR_OPTIONS as O, DEFAULT_CANALIZE_OPTIONS as P, line23DrawRule as Q, DEFAULT_BOUNDARY_OPTIONS as R, DEFAULT_FLOT_OPTIONS as S, DEFAULT_ENCIRCLEMENT_OPTIONS as T, DEFAULT_ATTACK_BY_FIRE_OPTIONS as U, DEFAULT_BATTLE_POSITION_OPTIONS as V, DEFAULT_ANTITANK_WALL_OPTIONS as W, supportByFireDrawRule as X, axis1DrawRule as Y, line24DrawRule as Z, DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS as _, EPSILON as _t, DEFINITIONS as a, disruptDrawRule as at, DEFAULT_FORTIFIED_AREA_OPTIONS as b, getDefaultOptions as c, createMidpointPerpendicularDrawRule as ct, DEFAULT_SUPPORTING_ATTACK_OPTIONS as d, snapToMidpointPerpendicular as dt, line1DrawRule as et, DEFAULT_SUPPORT_BY_FIRE_OPTIONS as f, createBaselineFrame as ft, DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS as g, unproject as gt, DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS as h, project as ht, CONTROL_MEASURE_METADATA as i, centerRadiusDrawRule as it, DEFAULT_GENERIC_LINE_OPTIONS as j, DEFAULT_GENERIC_RECTANGLE_OPTIONS as k, listControlMeasureMetadata as l, getMidpointPerpendicularSignedDistance as lt, DEFAULT_TACTICAL_ARROW_OPTIONS as m, computeInitialWidthPoint as mt, resolveStyleHints as n, attackByFireDrawRule as nt, getControlMeasureMetadata as o, blockDrawRule as ot, DEFAULT_STRONG_POINT_OPTIONS as p, calculateMetrics as pt, DEFAULT_AIRBORNE_ATTACK_OPTIONS as q, CONTROL_MEASURE_IDS as r, point12DrawRule as rt, getControlMeasureMetadataByValue as s, computeDefaultMidpointPerpendicularPoint as st, renderControlMeasure as t, ambushDrawRule as tt, DEFAULT_TURN_OPTIONS as u, pointOnMidpointPerpendicularAxis as ut, DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS as v, getMetersPerPixel as vt, DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS as w, DEFAULT_FORTIFIED_LINE_OPTIONS as x, DEFAULT_MAIN_ATTACK_OPTIONS as y, roundToFixed as yt, DEFAULT_BLOCK_ARROW_OPTIONS as z };
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Battle Position"><rect width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M19.57 33.43 L34.59 33.43" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M61.41 33.43 L76.43 33.43 L76.43 5.00 L19.57 5.00 L19.57 33.43" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M40.34 23.85 L40.34 43.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M55.66 23.85 L55.66 43.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Battle Position"><rect width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M21.43 34.89 L23.39 35.66 L25.90 36.34 L28.87 36.91 L32.23 37.38 L35.90 37.74 L39.25 37.96" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M52.61 38.14 L56.20 38.00 L60.10 37.74 L63.77 37.38 L67.13 36.91 L70.10 36.34 L72.61 35.66 L74.57 34.89 L76.12 33.91 L77.47 32.66 L78.61 31.17 L79.55 29.49 L80.27 27.66 L80.79 25.70 L81.10 23.67 L81.21 21.60 L81.10 19.54 L80.79 17.51 L80.27 15.55 L79.54 13.72 L78.61 12.03 L77.47 10.55 L76.12 9.30 L74.57 8.32 L72.61 7.55 L70.10 6.87 L67.13 6.30 L63.77 5.83 L60.10 5.47 L56.20 5.21 L52.14 5.05 L48.00 5.00 L43.86 5.05 L39.80 5.21 L35.90 5.47 L32.23 5.83 L28.87 6.30 L25.90 6.87 L23.39 7.55 L21.43 8.32 L19.88 9.30 L18.53 10.55 L17.39 12.03 L16.46 13.72 L15.73 15.55 L15.21 17.51 L14.90 19.54 L14.79 21.60 L14.90 23.67 L15.21 25.70 L15.73 27.66 L16.46 29.49 L17.39 31.17 L18.53 32.66 L19.88 33.91 L21.43 34.89" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M42.17 33.36 L42.05 42.90" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M49.81 33.46 L49.69 43.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Circle"><rect width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M67.00 24.00 L66.91 22.14 L66.63 20.30 L66.18 18.49 L65.56 16.73 L64.76 15.04 L63.80 13.45 L62.69 11.94 L61.43 10.57 L60.06 9.31 L58.55 8.20 L56.96 7.24 L55.27 6.44 L53.51 5.82 L51.70 5.37 L49.86 5.09 L48.00 5.00 L46.14 5.09 L44.30 5.37 L42.49 5.82 L40.73 6.44 L39.04 7.24 L37.45 8.20 L35.94 9.31 L34.57 10.57 L33.31 11.94 L32.20 13.45 L31.24 15.04 L30.44 16.73 L29.82 18.49 L29.37 20.30 L29.09 22.14 L29.00 24.00 L29.09 25.86 L29.37 27.71 L29.82 29.51 L30.44 31.27 L31.24 32.96 L32.20 34.55 L33.31 36.06 L34.57 37.43 L35.94 38.69 L37.45 39.80 L39.04 40.76 L40.73 41.56 L42.49 42.18 L44.30 42.63 L46.14 42.91 L48.00 43.00 L49.86 42.91 L51.70 42.63 L53.51 42.18 L55.27 41.56 L56.96 40.76 L58.55 39.80 L60.06 38.69 L61.43 37.43 L62.69 36.06 L63.80 34.55 L64.76 32.96 L65.56 31.27 L66.18 29.51 L66.63 27.71 L66.91 25.86 L67.00 24.00 Z" fill="#1e293b" fill-opacity="0" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Encirclement"><rect width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M30.33 32.84 L30.69 33.55 L31.12 34.20 L31.61 34.79 L32.15 35.33 L32.74 35.83 L33.37 36.27 L34.04 36.67 L34.75 37.03 L35.48 37.36 L36.23 37.66 L37.00 37.93 L37.78 38.18 L38.57 38.41 L39.37 38.62 L40.15 38.83 L40.93 39.02 L41.72 39.20 L42.55 39.36 L43.41 39.49 L44.30 39.60 L45.21 39.68 L46.13 39.74 L47.06 39.78 L48.00 39.79 L48.94 39.78 L49.87 39.74 L50.79 39.68 L51.70 39.60 L52.59 39.49 L53.45 39.36 L54.28 39.20 L55.07 39.02 L55.85 38.83 L56.63 38.62 L57.43 38.41 L58.22 38.18 L59.00 37.93 L59.77 37.66 L60.52 37.36 L61.25 37.03 L61.96 36.67 L62.63 36.27 L63.26 35.83 L63.85 35.33 L64.39 34.79 L64.88 34.20 L65.31 33.55 L65.67 32.84 L65.98 32.03 L66.25 31.10 L66.48 30.07 L66.66 28.95 L66.81 27.77 L66.92 26.54 L66.98 25.28 L67.00 24.00 L66.98 22.72 L66.92 21.46 L66.81 20.23 L66.66 19.05 L66.48 17.93 L66.25 16.90 L65.98 15.97 L65.67 15.16 L65.31 14.45 L64.88 13.80 L64.39 13.21 L63.85 12.67 L63.26 12.17 L62.63 11.73 L61.96 11.33 L61.25 10.97 L60.52 10.64 L59.77 10.34 L59.00 10.07 L58.22 9.82 L57.43 9.59 L56.63 9.38 L55.85 9.17 L55.07 8.98 L54.28 8.80 L53.45 8.64 L52.59 8.51 L51.70 8.40 L50.79 8.32 L49.87 8.26 L48.94 8.22 L48.00 8.21 L47.06 8.22 L46.13 8.26 L45.21 8.32 L44.30 8.40 L43.41 8.51 L42.55 8.64 L41.72 8.80 L40.93 8.98 L40.15 9.17 L39.37 9.38 L38.57 9.59 L37.78 9.82 L37.00 10.07 L36.23 10.34 L35.48 10.64 L34.75 10.97 L34.04 11.33 L33.37 11.73 L32.74 12.17 L32.15 12.67 L31.61 13.21 L31.12 13.80 L30.69 14.45 L30.33 15.16 L30.02 15.97 L29.75 16.90 L29.52 17.93 L29.34 19.05 L29.19 20.23 L29.08 21.46 L29.02 22.72 L29.00 24.00 L29.02 25.28 L29.08 26.54 L29.19 27.77 L29.34 28.95 L29.52 30.07 L29.75 31.10 L30.02 32.03 L30.33 32.84 Z" fill="#1e293b" fill-opacity="0" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round"/><path d="M29.81 31.29 L27.43 34.32 L31.15 34.24" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M34.18 36.74 L34.45 40.46 L37.18 37.98" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M40.99 39.03 L42.09 42.58 L44.20 39.59" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M48.15 39.79 L49.90 43.00 L51.40 39.63" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M55.29 38.96 L57.72 41.70 L58.43 38.11" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M62.08 36.60 L65.51 38.19 L64.59 34.55" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M66.27 31.01 L69.80 29.95 L66.81 27.80" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M66.99 23.85 L70.20 22.07 L66.84 20.60" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M66.19 16.71 L68.57 13.68 L64.85 13.76" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M61.82 11.26 L61.55 7.54 L58.82 10.02" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M55.01 8.97 L53.91 5.42 L51.80 8.41" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M47.85 8.21 L46.10 5.00 L44.60 8.37" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M40.71 9.04 L38.28 6.30 L37.57 9.89" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M33.92 11.40 L30.49 9.81 L31.41 13.45" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M29.73 16.99 L26.20 18.05 L29.19 20.20" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M29.01 24.15 L25.80 25.93 L29.16 27.40" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/></svg>
package/media/line.svg ADDED
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Line"><rect width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M5.78 43.00 L48.00 5.00 L90.22 34.56" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Polygon"><rect width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M23.93 43.00 L67.00 40.47 L72.07 12.60 L36.60 5.00 L23.93 43.00 Z" fill="#1e293b" fill-opacity="0" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Rectangle"><rect width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M16.91 43.00 L79.09 43.00 L79.09 5.00 L16.91 5.00 L16.91 43.00 Z" fill="#1e293b" fill-opacity="0" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 48" width="96" height="48" role="img" aria-label="Strong Point"><rect width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M28.58 33.73 L30.01 34.29 L31.84 34.78 L34.00 35.20 L36.45 35.54 L39.13 35.81 L41.58 35.97" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M51.31 36.10 L53.93 36.00 L56.78 35.81 L59.45 35.54 L61.90 35.20 L64.07 34.78 L65.89 34.29 L67.32 33.73 L68.45 33.01 L69.44 32.10 L70.27 31.02 L70.95 29.79 L71.48 28.45 L71.86 27.03 L72.08 25.55 L72.16 24.04 L72.08 22.54 L71.86 21.06 L71.48 19.63 L70.95 18.29 L70.27 17.07 L69.44 15.99 L68.45 15.07 L67.32 14.36 L65.89 13.79 L64.07 13.30 L61.90 12.88 L59.45 12.54 L56.78 12.28 L53.93 12.09 L50.97 11.98 L47.95 11.94 L44.93 11.98 L41.97 12.09 L39.13 12.28 L36.45 12.54 L34.00 12.88 L31.84 13.30 L30.01 13.79 L28.58 14.36 L27.45 15.07 L26.46 15.99 L25.63 17.07 L24.95 18.29 L24.42 19.63 L24.04 21.06 L23.82 22.54 L23.74 24.04 L23.82 25.55 L24.04 27.03 L24.42 28.45 L24.95 29.79 L25.63 31.02 L26.46 32.10 L27.45 33.01 L28.58 33.73" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M31.89 34.80 L30.57 41.63" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M38.78 35.77 L38.09 42.70" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M52.68 36.04 L52.95 43.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M59.62 35.52 L60.58 42.41" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M66.41 34.09 L68.98 40.56" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M71.15 29.30 L77.62 31.86" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M72.08 22.47 L78.96 21.42" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M69.53 16.11 L75.05 11.86" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M63.38 13.17 L64.70 6.33" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M56.49 12.26 L56.95 5.31" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M49.54 11.96 L49.62 5.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M42.58 12.07 L42.31 5.11" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M35.65 12.65 L34.69 5.76" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M28.89 14.23 L26.32 7.77" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M24.52 19.39 L18.05 16.83" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M23.92 26.25 L17.04 27.30" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M26.82 32.43 L22.09 37.53" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M43.70 32.61 L43.62 39.57" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M49.27 32.68 L49.18 39.64" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/></svg>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orbat-mapper/control-measures",
3
- "version": "0.2.0-alpha.7",
3
+ "version": "0.2.0-alpha.8",
4
4
  "description": "Library for drawing tactical graphics and control measures according to MIL-STD-2525 and APP-6 standards.",
5
5
  "license": "MIT",
6
6
  "author": "Orbat Mapper",