@orbat-mapper/control-measures 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -120,6 +120,9 @@ code.
120
120
  | <img src="media/direction-of-attack-aviation.svg" width="96" height="48" alt=""> | `direction-of-attack-aviation` | Direction of Attack — Airborne/Aviation | `140601` |
121
121
  | <img src="media/direction-of-main-attack.svg" width="96" height="48" alt=""> | `direction-of-main-attack` | Direction of Main Attack | `140602` |
122
122
  | <img src="media/direction-of-supporting-attack.svg" width="96" height="48" alt=""> | `direction-of-supporting-attack` | Direction of Supporting Attack | `140603` |
123
+ | <img src="media/bridgehead-line.svg" width="96" height="48" alt=""> | `bridgehead-line` | Bridgehead line | `141400` |
124
+ | <img src="media/holding-line.svg" width="96" height="48" alt=""> | `holding-line` | Holding line | `141500` |
125
+ | <img src="media/release-line.svg" width="96" height="48" alt=""> | `release-line` | Release line | `141600` |
123
126
  | <img src="media/ambush.svg" width="96" height="48" alt=""> | `ambush` | Ambush | `141700` |
124
127
  | <img src="media/handover-line.svg" width="96" height="48" alt=""> | `handover-line` | Handover line | `141800` |
125
128
  | <img src="media/battle-handover-line.svg" width="96" height="48" alt=""> | `battle-handover-line` | Battle handover line | `141900` |
@@ -195,11 +198,19 @@ code.
195
198
  | <img src="media/counterattack.svg" width="96" height="48" alt=""> | `counterattack` | Counterattack | `340600` |
196
199
  | <img src="media/counterattack-by-fire.svg" width="96" height="48" alt=""> | `counterattack-by-fire` | Counterattack by Fire | `340700` |
197
200
  | <img src="media/delay.svg" width="96" height="48" alt=""> | `delay` | Delay | `340800` |
201
+ | <img src="media/disrupt-mission-task.svg" width="96" height="48" alt=""> | `disrupt-mission-task` | Disrupt | `341000` |
198
202
  | <img src="media/fix-mission-task.svg" width="96" height="48" alt=""> | `fix-mission-task` | Fix | `341100` |
199
203
  | <img src="media/isolate.svg" width="96" height="48" alt=""> | `isolate` | Isolate | `341500` |
204
+ | <img src="media/penetrate.svg" width="96" height="48" alt=""> | `penetrate` | Penetrate | `341800` |
205
+ | <img src="media/retire.svg" width="96" height="48" alt=""> | `retire` | Retire/Retirement | `342000` |
200
206
  | <img src="media/cover.svg" width="96" height="48" alt=""> | `cover` | Cover | `342201` |
201
207
  | <img src="media/guard.svg" width="96" height="48" alt=""> | `guard` | Guard | `342202` |
202
208
  | <img src="media/screen.svg" width="96" height="48" alt=""> | `screen` | Screen | `342203` |
209
+ | <img src="media/seize.svg" width="96" height="48" alt=""> | `seize` | Seize | `342300` |
210
+ | <img src="media/withdraw.svg" width="96" height="48" alt=""> | `withdraw` | Withdraw | `342400` |
211
+ | <img src="media/withdraw-under-pressure.svg" width="96" height="48" alt=""> | `withdraw-under-pressure` | Withdraw Under Pressure | `342500` |
212
+ | <img src="media/rearward-passage-of-lines.svg" width="96" height="48" alt=""> | `rearward-passage-of-lines` | Rearward Passage of Lines | `344200` |
213
+ | <img src="media/disengage.svg" width="96" height="48" alt=""> | `disengage` | Disengage | `344400` |
203
214
 
204
215
  ### Generic Graphics
205
216
 
@@ -211,6 +222,7 @@ code.
211
222
  | <img src="media/polygon.svg" width="96" height="48" alt=""> | `polygon` | Polygon | `990102` |
212
223
  | <img src="media/rectangle.svg" width="96" height="48" alt=""> | `rectangle` | Rectangle | `990103` |
213
224
  | <img src="media/circle.svg" width="96" height="48" alt=""> | `circle` | Circle | `990104` |
225
+ | <img src="media/text.svg" width="96" height="48" alt=""> | `text` | Text | `990201` |
214
226
 
215
227
  <!-- /AUTO-GENERATED:measures-table -->
216
228
 
@@ -212,7 +212,7 @@ declare function normalizeTextAmplifiers(input: TextAmplifiers | undefined): Can
212
212
  //#region src/metadata.d.ts
213
213
  type ControlMeasureGeometryType = Geometry["type"];
214
214
  type ControlMeasureGeometry = "point" | "line" | "area";
215
- declare const DRAW_RULE_IDS: readonly ["Area1", "Area7", "Area8", "Area11", "Area12", "Area15", "Area17", "Area21", "Axis1", "Line1", "Line3", "Line9", "Line10", "Line23", "Line24", "Line26", "Line27", "Line29", "Point1", "Point12", "Rectangle"];
215
+ declare const DRAW_RULE_IDS: readonly ["Area1", "Area7", "Area8", "Area11", "Area12", "Area15", "Area17", "Area21", "Axis1", "Line1", "Line3", "Line9", "Line10", "Line23", "Line24", "Line26", "Line27", "Line29", "Point1", "Point2", "Point12", "Rectangle"];
216
216
  type DrawRuleId = (typeof DRAW_RULE_IDS)[number];
217
217
  interface BaseParamDescriptor {
218
218
  key: string;
@@ -2644,6 +2644,29 @@ declare const DEFAULT_TURN_OPTIONS: Required<TurnOptions>;
2644
2644
  */
2645
2645
  declare function createTurn(coordinates: Position[], options?: TurnOptions): FeatureCollection<MultiLineString | MultiPolygon>;
2646
2646
  //#endregion
2647
+ //#region src/generators/cm27-protection-areas/minefield.d.ts
2648
+ /** Modifier 1 mine-type values from symbol set 25. */
2649
+ type MineType = "unspecified" | "antipersonnel" | "antipersonnel-directional" | "antitank" | "antitank-antihandling" | "wide-area-antitank";
2650
+ interface MinefieldOptions {
2651
+ /** Modifier 1 mine type. @default "unspecified" */
2652
+ mineType?: MineType;
2653
+ /** Overall frame width in projected meters. @default 1000 */
2654
+ sizeMeters?: number;
2655
+ /** Draw-time frame width in screen pixels; baked to `sizeMeters` on commit. @default 32 */
2656
+ sizePixels?: number;
2657
+ /** Live map resolution used to resolve `sizePixels` into projected meters. */
2658
+ metersPerPixel?: number;
2659
+ /** Clockwise rotation in degrees. @default 0 */
2660
+ rotation?: number;
2661
+ }
2662
+ declare const DEFAULT_MINEFIELD_OPTIONS: {
2663
+ mineType: "unspecified";
2664
+ sizePixels: number;
2665
+ rotation: number;
2666
+ };
2667
+ /** Creates the frame and three Modifier 1 mine glyphs around the center anchor. */
2668
+ declare function createMinefield(coordinates: Position[], options?: MinefieldOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<LineString | MultiLineString | MultiPolygon | Point>;
2669
+ //#endregion
2647
2670
  //#region src/generators/cm27-protection-areas/obstacleBypassEasy.d.ts
2648
2671
  interface ObstacleBypassEasyOptions {
2649
2672
  arrowheadLengthRatio?: number;
@@ -2804,6 +2827,7 @@ declare const DEFINITIONS: {
2804
2827
  fix: ControlMeasureDefinition<"fix", typeof createFix>;
2805
2828
  "fix-mission-task": ControlMeasureDefinition<"fix-mission-task", typeof createFixMissionTaskSymbol>;
2806
2829
  turn: ControlMeasureDefinition<"turn", typeof createTurn>;
2830
+ minefield: ControlMeasureDefinition<"minefield", typeof createMinefield>;
2807
2831
  "obstacle-bypass-easy": ControlMeasureDefinition<"obstacle-bypass-easy", typeof createObstacleBypassEasy>;
2808
2832
  "obstacle-bypass-difficult": ControlMeasureDefinition<"obstacle-bypass-difficult", typeof createObstacleBypassDifficult>;
2809
2833
  "obstacle-bypass-impossible": ControlMeasureDefinition<"obstacle-bypass-impossible", typeof createObstacleBypassImpossible>;
@@ -2900,6 +2924,15 @@ declare function freezeOrientationOptions<K extends ControlMeasureKind>(kind: K,
2900
2924
  * declares no hook (or the hook finds nothing to fold). Edit hosts call this at
2901
2925
  * a rotate/scale gesture's commit (ADR-0017).
2902
2926
  */
2927
+ /**
2928
+ * Whether `kind` persists orientation/size as options rather than in geometry —
2929
+ * i.e. declares a `transformOptions` hook. This is a *static* property of the
2930
+ * definition, constant for a whole gesture, so edit hosts can latch it once at
2931
+ * pointer-down instead of inferring it from whether a particular delta happened
2932
+ * to produce a patch (an inert delta — scale 1, no rotation — yields no patch
2933
+ * for every kind, which would otherwise flip the answer mid-drag). See ADR-0017.
2934
+ */
2935
+ declare function foldsBoxTransformOptions(kind: ControlMeasureKind): boolean;
2903
2936
  declare function applyBoxTransformOptions<K extends ControlMeasureKind>(kind: K, options: OptionsByKind[K] | undefined, delta: BoxTransformDelta): Partial<OptionsByKind[K]> | undefined;
2904
2937
  //#endregion
2905
2938
  //#region src/styleResolver.d.ts
@@ -3074,6 +3107,19 @@ declare const penetrateDrawRule: ControlMeasureDrawRule;
3074
3107
  */
3075
3108
  declare const point12DrawRule: ControlMeasureDrawRule;
3076
3109
  //#endregion
3110
+ //#region src/draw-rules/point2.d.ts
3111
+ /**
3112
+ * Point2 — a static point symbol whose center is defined by one anchor point.
3113
+ * The symbol's size and shape are carried by its options rather than additional
3114
+ * control points, so moving the sole anchor translates the complete symbol.
3115
+ *
3116
+ * Mechanically identical to Point1: it derives from the same single-anchor
3117
+ * behaviour and only re-labels it, because a definition's `rule.id` must carry
3118
+ * its `metadata.drawRule` as a prefix (see the registry invariant in
3119
+ * `__tests__/metadata-registry.spec.ts`, ADR-0013).
3120
+ */
3121
+ declare const staticPointDrawRule: ControlMeasureDrawRule;
3122
+ //#endregion
3077
3123
  //#region src/draw-rules/area7.d.ts
3078
3124
  /**
3079
3125
  * Area7 anchor draw rule for Attack By Fire.
@@ -3180,4 +3226,4 @@ interface AmbushOptions {
3180
3226
  }
3181
3227
  declare const DEFAULT_AMBUSH_OPTIONS: Required<AmbushOptions>;
3182
3228
  //#endregion
3183
- export { DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS as $, DEFAULT_SUPPORTING_ATTACK_OPTIONS as $n, BoundaryOptions as $r, CounterattackByFireOptions as $t, EPSILON as A, DEFAULT_ATTACK_BY_FIRE_OPTIONS as An, DEFAULT_DIRECTION_OF_SUPPORTING_ATTACK_OPTIONS as Ar, WithdrawOptions as At, renderControlMeasure as B, GenericCircleOptions as Bn, ControlMeasureStyle as Br, PenetrateOptions as Bt, pointOnMidpointPerpendicularAxis as C, DEFAULT_FORWARD_EDGE_OF_BATTLE_AREA_OPTIONS as Cn, StyleHints as Cr, AntitankWallOptions as Ct, BaselineFrameOptions as D, DEFAULT_FLOT_OPTIONS as Dn, SecondaryDirectionOfFireOptions as Dr, DEFAULT_WITHDRAW_UNDER_PRESSURE_OPTIONS as Dt, BaselineFrameNormal as E, PhaseLineOptions as En, SECONDARY_DIRECTION_OF_FIRE_DASH as Er, DEFAULT_ANTITANK_DITCH_OPTIONS as Et, toSimpleStyle as F, AirborneAttackOptions as Fn, DirectionOfAttackAviationOptions as Fr, DEFAULT_RETIRE_OPTIONS as Ft, CONTROL_MEASURE_METADATA as G, DEFAULT_GENERIC_LINE_OPTIONS as Gn, EngineerWorkLineOptions as Gr, DEFAULT_DISENGAGE_OPTIONS as Gt, cloneControlMeasure as H, GenericRectangleOptions as Hn, DEFAULT_GENERIC_C2_LINE_OPTIONS as Hr, GuardOptions as Ht, resolveStyleHints as I, DEFAULT_AIRBORNE_ATTACK_OPTIONS as In, DEFAULT_STRONG_POINT_OPTIONS as Ir, RetireOptions as It, OptionsByKind as J, BlockArrowOptions as Jn, LabelSizeOptions as Jr, DelayOptions as Jt, ControlMeasureId as K, GenericLineOptions as Kn, DEFAULT_LIGHT_LINE_OPTIONS as Kr, DisengageOptions as Kt, applyBoxTransformOptions as L, DEFAULT_GENERIC_TEXT_OPTIONS as Ln, StrongPointOptions as Lr, DEFAULT_REARWARD_PASSAGE_OF_LINES_OPTIONS as Lt, roundToFixed as M, SupportByFireOptions as Mn, DEFAULT_DIRECTION_OF_MAIN_ATTACK_OPTIONS as Mr, SeizeOptions as Mt, SimpleStyleProps as N, AttackHelicopterOptions as Nn, DirectionOfMainAttackOptions as Nr, DEFAULT_SCREEN_OPTIONS as Nt, BaselineFrameOrigin as O, FLOTOptions as On, DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS as Or, WithdrawUnderPressureOptions as Ot, SimpleStyleRender as P, DEFAULT_ATTACK_HELICOPTER_OPTIONS as Pn, DEFAULT_DIRECTION_OF_ATTACK_AVIATION_OPTIONS as Pr, ScreenOptions as Pt, listControlMeasureMetadata as Q, DEFAULT_CLASSIC_ARROW_OPTIONS as Qn, unproject as Qr, TacticalArrowOptions as Qt, freezeOrientationOptions as R, GenericTextOptions as Rn, BattlePositionOptions as Rr, RearwardPassageOfLinesOptions as Rt, getMidpointPerpendicularSignedDistance as S, ControlMeasureDrawRule as Si, DEFAULT_BRIDGEHEAD_LINE_OPTIONS as Sn, FeaturePartProps as Sr, FortifiedLineOptions as St, BaselineFrame as T, DEFAULT_PHASE_LINE_OPTIONS as Tn, DEFAULT_SECONDARY_DIRECTION_OF_FIRE_OPTIONS as Tr, AntitankDitchOptions as Tt, isKind as U, DEFAULT_GENERIC_POLYGON_OPTIONS as Un, GenericC2LineOptions as Ur, DEFAULT_DISRUPT_MISSION_TASK_OPTIONS as Ut, ControlMeasure as V, DEFAULT_GENERIC_RECTANGLE_OPTIONS as Vn, FillPattern as Vr, DEFAULT_GUARD_OPTIONS as Vt, CONTROL_MEASURE_IDS as W, GenericPolygonOptions as Wn, DEFAULT_ENGINEER_WORK_LINE_OPTIONS as Wr, DisruptMissionTaskOptions as Wt, getControlMeasureMetadataByValue as X, ClassicArrowHeadStyle as Xn, haversineDistance as Xr, DEFAULT_COVER_OPTIONS as Xt, getControlMeasureMetadata as Y, DEFAULT_BLOCK_ARROW_OPTIONS as Yn, Point2D as Yr, CoverOptions as Yt, getDefaultOptions as Z, ClassicArrowOptions as Zn, project as Zr, DEFAULT_TACTICAL_ARROW_OPTIONS as Zt, disruptDrawRule as _, TextAmplifiers as _i, DEFAULT_RELEASE_LINE_OPTIONS as _n, DEFAULT_ENCIRCLEMENT_OPTIONS as _r, DEFAULT_FRONTAL_ATTACK_OPTIONS as _t, supportByFireDrawRule as a, ControlMeasureMetadata as ai, CanalizeOptions as an, AreaOfOperationsOptions as ar, DEFAULT_TURN_OPTIONS as at, computeDefaultMidpointPerpendicularPoint as b, resolveAmplifierPlacement as bi, HoldingLineOptions as bn, FinalProtectiveFireOptions as br, FortifiedAreaOptions as bt, line24DrawRule as c, TextAmplifierDescriptor as ci, DEFAULT_BYPASS_OPTIONS as cn, PickupZoneOptions as cr, FixMissionTaskOptions as ct, line1DrawRule as d, CanonicalTextAmplifiers as di, BlockMissionTaskOptions as dn, DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS as dr, DEFAULT_DISRUPT_OPTIONS as dt, DEFAULT_BOUNDARY_OPTIONS as ei, DEFAULT_COUNTERATTACK_BY_FIRE_OPTIONS as en, SupportingAttackOptions as er, ObstacleBypassImpossibleOptions as et, ambushDrawRule as f, GeneratedLabelKey as fi, DEFAULT_BLOCK_MISSION_TASK_OPTIONS as fn, JointTacticalActionAreaOptions as fr, DisruptOptions as ft, centerRadiusDrawRule as g, TextAmplifierKey as gi, HandoverLineOptions as gn, DEFAULT_AREA_DEFENSE_OPTIONS as gr, TurningMovementOptions as gt, penetrateDrawRule as h, TextAmplifierField as hi, DEFAULT_HANDOVER_LINE_OPTIONS as hn, AreaDefenseOptions as hr, DEFAULT_TURNING_MOVEMENT_OPTIONS as ht, axis1DrawRule as i, ControlMeasureGeometryType as ii, DEFAULT_CLEAR_OPTIONS as in, computeInitialWidthPoint as ir, ObstacleBypassEasyOptions as it, getMetersPerPixel as j, DEFAULT_SUPPORT_BY_FIRE_OPTIONS as jn, DirectionOfSupportingAttackOptions as jr, DEFAULT_SEIZE_OPTIONS as jt, createBaselineFrame as k, AttackByFireOptions as kn, PrincipalDirectionOfFireOptions as kr, DEFAULT_WITHDRAW_OPTIONS as kt, line23DrawRule as l, AmplifierPlacement as li, BreachOptions as ln, DEFAULT_LANDING_ZONE_OPTIONS as lr, DEFAULT_FIX_OPTIONS as lt, point12DrawRule as m, TEXT_AMPLIFIER_FIELDS as mi, DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS as mn, DEFAULT_ASSEMBLY_AREA_OPTIONS as mr, DEFAULT_BLOCK_OPTIONS as mt, DEFAULT_AMBUSH_OPTIONS as n, ControlMeasureFillCapability as ni, DEFAULT_COUNTERATTACK_OPTIONS as nn, MainAttackOptions as nr, ObstacleBypassDifficultOptions as nt, line27DrawRule as o, ControlMeasurePaintCapability as oi, DEFAULT_CANALIZE_OPTIONS as on, DEFAULT_AREA_OF_OPERATIONS_OPTIONS as or, TurnOptions as ot, attackByFireDrawRule as p, LabelPlacementOverride as pi, BattleHandoverLineOptions as pn, AssemblyAreaOptions as pr, BlockOptions as pt, ControlMeasureKind as q, BlockArrowHeadStyle as qn, LightLineOptions as qr, DEFAULT_DELAY_OPTIONS as qt, rectangleDrawRule as r, ControlMeasureGeometry as ri, ClearOptions as rn, calculateMetrics as rr, DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS as rt, line26DrawRule as s, ParamDescriptor as si, BypassOptions as sn, DEFAULT_PICKUP_ZONE_OPTIONS as sr, DEFAULT_FIX_MISSION_TASK_OPTIONS as st, AmbushOptions as t, BoxTransformDelta as ti, CounterattackOptions as tn, DEFAULT_MAIN_ATTACK_OPTIONS as tr, DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS as tt, turnDrawRule as u, AmplifierPlacements as ui, DEFAULT_BREACH_OPTIONS as un, LandingZoneOptions as ur, FixOptions as ut, blockDrawRule as v, canonicalTextAmplifierKey as vi, ReleaseLineOptions as vn, EncirclementOptions as vr, FrontalAttackOptions as vt, snapToMidpointPerpendicular as w, ForwardEdgeOfBattleAreaOptions as wn, controlMeasureIdFromFeature as wr, DEFAULT_ANTITANK_WALL_OPTIONS as wt, createMidpointPerpendicularDrawRule as x, AnchorTransformEvent as xi, BridgeheadLineOptions as xn, ControlMeasureRender as xr, DEFAULT_FORTIFIED_LINE_OPTIONS as xt, MidpointPerpendicularDrawRuleOptions as y, normalizeTextAmplifiers as yi, DEFAULT_HOLDING_LINE_OPTIONS as yn, DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS as yr, DEFAULT_FORTIFIED_AREA_OPTIONS as yt, RenderOptions as z, DEFAULT_GENERIC_CIRCLE_OPTIONS as zn, DEFAULT_BATTLE_POSITION_OPTIONS as zr, DEFAULT_PENETRATE_OPTIONS as zt };
3229
+ export { getDefaultOptions as $, BlockArrowOptions as $n, LabelSizeOptions as $r, DelayOptions as $t, createBaselineFrame as A, DEFAULT_PHASE_LINE_OPTIONS as An, DEFAULT_SECONDARY_DIRECTION_OF_FIRE_OPTIONS as Ar, AntitankDitchOptions as At, freezeOrientationOptions as B, AirborneAttackOptions as Bn, DirectionOfAttackAviationOptions as Br, DEFAULT_RETIRE_OPTIONS as Bt, getMidpointPerpendicularSignedDistance as C, canonicalTextAmplifierKey as Ci, ReleaseLineOptions as Cn, EncirclementOptions as Cr, FrontalAttackOptions as Ct, BaselineFrameNormal as D, ControlMeasureDrawRule as Di, DEFAULT_BRIDGEHEAD_LINE_OPTIONS as Dn, FeaturePartProps as Dr, FortifiedLineOptions as Dt, BaselineFrame as E, AnchorTransformEvent as Ei, BridgeheadLineOptions as En, ControlMeasureRender as Er, DEFAULT_FORTIFIED_LINE_OPTIONS as Et, SimpleStyleRender as F, DEFAULT_ATTACK_BY_FIRE_OPTIONS as Fn, DEFAULT_DIRECTION_OF_SUPPORTING_ATTACK_OPTIONS as Fr, WithdrawOptions as Ft, isKind as G, GenericCircleOptions as Gn, ControlMeasureStyle as Gr, PenetrateOptions as Gt, renderControlMeasure as H, DEFAULT_GENERIC_TEXT_OPTIONS as Hn, StrongPointOptions as Hr, DEFAULT_REARWARD_PASSAGE_OF_LINES_OPTIONS as Ht, toSimpleStyle as I, DEFAULT_SUPPORT_BY_FIRE_OPTIONS as In, DirectionOfSupportingAttackOptions as Ir, DEFAULT_SEIZE_OPTIONS as It, ControlMeasureId as J, DEFAULT_GENERIC_POLYGON_OPTIONS as Jn, GenericC2LineOptions as Jr, DEFAULT_DISRUPT_MISSION_TASK_OPTIONS as Jt, CONTROL_MEASURE_IDS as K, DEFAULT_GENERIC_RECTANGLE_OPTIONS as Kn, FillPattern as Kr, DEFAULT_GUARD_OPTIONS as Kt, resolveStyleHints as L, SupportByFireOptions as Ln, DEFAULT_DIRECTION_OF_MAIN_ATTACK_OPTIONS as Lr, SeizeOptions as Lt, getMetersPerPixel as M, DEFAULT_FLOT_OPTIONS as Mn, SecondaryDirectionOfFireOptions as Mr, DEFAULT_WITHDRAW_UNDER_PRESSURE_OPTIONS as Mt, roundToFixed as N, FLOTOptions as Nn, DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS as Nr, WithdrawUnderPressureOptions as Nt, BaselineFrameOptions as O, DEFAULT_FORWARD_EDGE_OF_BATTLE_AREA_OPTIONS as On, StyleHints as Or, AntitankWallOptions as Ot, SimpleStyleProps as P, AttackByFireOptions as Pn, PrincipalDirectionOfFireOptions as Pr, DEFAULT_WITHDRAW_OPTIONS as Pt, getControlMeasureMetadataByValue as Q, BlockArrowHeadStyle as Qn, LightLineOptions as Qr, DEFAULT_DELAY_OPTIONS as Qt, applyBoxTransformOptions as R, AttackHelicopterOptions as Rn, DirectionOfMainAttackOptions as Rr, DEFAULT_SCREEN_OPTIONS as Rt, createMidpointPerpendicularDrawRule as S, TextAmplifiers as Si, DEFAULT_RELEASE_LINE_OPTIONS as Sn, DEFAULT_ENCIRCLEMENT_OPTIONS as Sr, DEFAULT_FRONTAL_ATTACK_OPTIONS as St, snapToMidpointPerpendicular as T, resolveAmplifierPlacement as Ti, HoldingLineOptions as Tn, FinalProtectiveFireOptions as Tr, FortifiedAreaOptions as Tt, ControlMeasure as U, GenericTextOptions as Un, BattlePositionOptions as Ur, RearwardPassageOfLinesOptions as Ut, RenderOptions as V, DEFAULT_AIRBORNE_ATTACK_OPTIONS as Vn, DEFAULT_STRONG_POINT_OPTIONS as Vr, RetireOptions as Vt, cloneControlMeasure as W, DEFAULT_GENERIC_CIRCLE_OPTIONS as Wn, DEFAULT_BATTLE_POSITION_OPTIONS as Wr, DEFAULT_PENETRATE_OPTIONS as Wt, OptionsByKind as X, DEFAULT_GENERIC_LINE_OPTIONS as Xn, EngineerWorkLineOptions as Xr, DEFAULT_DISENGAGE_OPTIONS as Xt, ControlMeasureKind as Y, GenericPolygonOptions as Yn, DEFAULT_ENGINEER_WORK_LINE_OPTIONS as Yr, DisruptMissionTaskOptions as Yt, getControlMeasureMetadata as Z, GenericLineOptions as Zn, DEFAULT_LIGHT_LINE_OPTIONS as Zr, DisengageOptions as Zt, centerRadiusDrawRule as _, GeneratedLabelKey as _i, DEFAULT_BLOCK_MISSION_TASK_OPTIONS as _n, JointTacticalActionAreaOptions as _r, DisruptOptions as _t, supportByFireDrawRule as a, DEFAULT_BOUNDARY_OPTIONS as ai, DEFAULT_COUNTERATTACK_BY_FIRE_OPTIONS as an, SupportingAttackOptions as ar, DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS as at, MidpointPerpendicularDrawRuleOptions as b, TextAmplifierField as bi, DEFAULT_HANDOVER_LINE_OPTIONS as bn, AreaDefenseOptions as br, DEFAULT_TURNING_MOVEMENT_OPTIONS as bt, line24DrawRule as c, ControlMeasureGeometry as ci, ClearOptions as cn, calculateMetrics as cr, MineType as ct, line1DrawRule as d, ControlMeasurePaintCapability as di, DEFAULT_CANALIZE_OPTIONS as dn, DEFAULT_AREA_OF_OPERATIONS_OPTIONS as dr, TurnOptions as dt, Point2D as ei, CoverOptions as en, DEFAULT_BLOCK_ARROW_OPTIONS as er, listControlMeasureMetadata as et, ambushDrawRule as f, ParamDescriptor as fi, BypassOptions as fn, DEFAULT_PICKUP_ZONE_OPTIONS as fr, DEFAULT_FIX_MISSION_TASK_OPTIONS as ft, penetrateDrawRule as g, CanonicalTextAmplifiers as gi, BlockMissionTaskOptions as gn, DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS as gr, DEFAULT_DISRUPT_OPTIONS as gt, point12DrawRule as h, AmplifierPlacements as hi, DEFAULT_BREACH_OPTIONS as hn, LandingZoneOptions as hr, FixOptions as ht, axis1DrawRule as i, BoundaryOptions as ii, CounterattackByFireOptions as in, DEFAULT_SUPPORTING_ATTACK_OPTIONS as ir, ObstacleBypassDifficultOptions as it, EPSILON as j, PhaseLineOptions as jn, SECONDARY_DIRECTION_OF_FIRE_DASH as jr, DEFAULT_ANTITANK_DITCH_OPTIONS as jt, BaselineFrameOrigin as k, ForwardEdgeOfBattleAreaOptions as kn, controlMeasureIdFromFeature as kr, DEFAULT_ANTITANK_WALL_OPTIONS as kt, line23DrawRule as l, ControlMeasureGeometryType as li, DEFAULT_CLEAR_OPTIONS as ln, computeInitialWidthPoint as lr, MinefieldOptions as lt, staticPointDrawRule as m, AmplifierPlacement as mi, BreachOptions as mn, DEFAULT_LANDING_ZONE_OPTIONS as mr, DEFAULT_FIX_OPTIONS as mt, DEFAULT_AMBUSH_OPTIONS as n, project as ni, DEFAULT_TACTICAL_ARROW_OPTIONS as nn, ClassicArrowOptions as nr, ObstacleBypassImpossibleOptions as nt, line27DrawRule as o, BoxTransformDelta as oi, CounterattackOptions as on, DEFAULT_MAIN_ATTACK_OPTIONS as or, ObstacleBypassEasyOptions as ot, attackByFireDrawRule as p, TextAmplifierDescriptor as pi, DEFAULT_BYPASS_OPTIONS as pn, PickupZoneOptions as pr, FixMissionTaskOptions as pt, CONTROL_MEASURE_METADATA as q, GenericRectangleOptions as qn, DEFAULT_GENERIC_C2_LINE_OPTIONS as qr, GuardOptions as qt, rectangleDrawRule as r, unproject as ri, TacticalArrowOptions as rn, DEFAULT_CLASSIC_ARROW_OPTIONS as rr, DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS as rt, line26DrawRule as s, ControlMeasureFillCapability as si, DEFAULT_COUNTERATTACK_OPTIONS as sn, MainAttackOptions as sr, DEFAULT_MINEFIELD_OPTIONS as st, AmbushOptions as t, haversineDistance as ti, DEFAULT_COVER_OPTIONS as tn, ClassicArrowHeadStyle as tr, DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS as tt, turnDrawRule as u, ControlMeasureMetadata as ui, CanalizeOptions as un, AreaOfOperationsOptions as ur, DEFAULT_TURN_OPTIONS as ut, disruptDrawRule as v, LabelPlacementOverride as vi, BattleHandoverLineOptions as vn, AssemblyAreaOptions as vr, BlockOptions as vt, pointOnMidpointPerpendicularAxis as w, normalizeTextAmplifiers as wi, DEFAULT_HOLDING_LINE_OPTIONS as wn, DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS as wr, DEFAULT_FORTIFIED_AREA_OPTIONS as wt, computeDefaultMidpointPerpendicularPoint as x, TextAmplifierKey as xi, HandoverLineOptions as xn, DEFAULT_AREA_DEFENSE_OPTIONS as xr, TurningMovementOptions as xt, blockDrawRule as y, TEXT_AMPLIFIER_FIELDS as yi, DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS as yn, DEFAULT_ASSEMBLY_AREA_OPTIONS as yr, DEFAULT_BLOCK_OPTIONS as yt, foldsBoxTransformOptions as z, DEFAULT_ATTACK_HELICOPTER_OPTIONS as zn, DEFAULT_DIRECTION_OF_ATTACK_AVIATION_OPTIONS as zr, ScreenOptions as zt };
package/dist/index.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { $ as DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS, $n as DEFAULT_SUPPORTING_ATTACK_OPTIONS, $r as BoundaryOptions, $t as CounterattackByFireOptions, A as EPSILON, An as DEFAULT_ATTACK_BY_FIRE_OPTIONS, Ar as DEFAULT_DIRECTION_OF_SUPPORTING_ATTACK_OPTIONS, At as WithdrawOptions, B as renderControlMeasure, Bn as GenericCircleOptions, Br as ControlMeasureStyle, Bt as PenetrateOptions, C as pointOnMidpointPerpendicularAxis, Cn as DEFAULT_FORWARD_EDGE_OF_BATTLE_AREA_OPTIONS, Cr as StyleHints, Ct as AntitankWallOptions, D as BaselineFrameOptions, Dn as DEFAULT_FLOT_OPTIONS, Dr as SecondaryDirectionOfFireOptions, Dt as DEFAULT_WITHDRAW_UNDER_PRESSURE_OPTIONS, E as BaselineFrameNormal, En as PhaseLineOptions, Er as SECONDARY_DIRECTION_OF_FIRE_DASH, Et as DEFAULT_ANTITANK_DITCH_OPTIONS, F as toSimpleStyle, Fn as AirborneAttackOptions, Fr as DirectionOfAttackAviationOptions, Ft as DEFAULT_RETIRE_OPTIONS, G as CONTROL_MEASURE_METADATA, Gn as DEFAULT_GENERIC_LINE_OPTIONS, Gr as EngineerWorkLineOptions, Gt as DEFAULT_DISENGAGE_OPTIONS, H as cloneControlMeasure, Hn as GenericRectangleOptions, Hr as DEFAULT_GENERIC_C2_LINE_OPTIONS, Ht as GuardOptions, I as resolveStyleHints, In as DEFAULT_AIRBORNE_ATTACK_OPTIONS, Ir as DEFAULT_STRONG_POINT_OPTIONS, It as RetireOptions, J as OptionsByKind, Jn as BlockArrowOptions, Jr as LabelSizeOptions, Jt as DelayOptions, K as ControlMeasureId, Kn as GenericLineOptions, Kr as DEFAULT_LIGHT_LINE_OPTIONS, Kt as DisengageOptions, L as applyBoxTransformOptions, Ln as DEFAULT_GENERIC_TEXT_OPTIONS, Lr as StrongPointOptions, Lt as DEFAULT_REARWARD_PASSAGE_OF_LINES_OPTIONS, M as roundToFixed, Mn as SupportByFireOptions, Mr as DEFAULT_DIRECTION_OF_MAIN_ATTACK_OPTIONS, Mt as SeizeOptions, N as SimpleStyleProps, Nn as AttackHelicopterOptions, Nr as DirectionOfMainAttackOptions, Nt as DEFAULT_SCREEN_OPTIONS, O as BaselineFrameOrigin, On as FLOTOptions, Or as DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, Ot as WithdrawUnderPressureOptions, P as SimpleStyleRender, Pn as DEFAULT_ATTACK_HELICOPTER_OPTIONS, Pr as DEFAULT_DIRECTION_OF_ATTACK_AVIATION_OPTIONS, Pt as ScreenOptions, Q as listControlMeasureMetadata, Qn as DEFAULT_CLASSIC_ARROW_OPTIONS, Qr as unproject, Qt as TacticalArrowOptions, R as freezeOrientationOptions, Rn as GenericTextOptions, Rr as BattlePositionOptions, Rt as RearwardPassageOfLinesOptions, S as getMidpointPerpendicularSignedDistance, Si as ControlMeasureDrawRule, Sn as DEFAULT_BRIDGEHEAD_LINE_OPTIONS, Sr as FeaturePartProps, St as FortifiedLineOptions, T as BaselineFrame, Tn as DEFAULT_PHASE_LINE_OPTIONS, Tr as DEFAULT_SECONDARY_DIRECTION_OF_FIRE_OPTIONS, Tt as AntitankDitchOptions, U as isKind, Un as DEFAULT_GENERIC_POLYGON_OPTIONS, Ur as GenericC2LineOptions, Ut as DEFAULT_DISRUPT_MISSION_TASK_OPTIONS, V as ControlMeasure, Vn as DEFAULT_GENERIC_RECTANGLE_OPTIONS, Vr as FillPattern, Vt as DEFAULT_GUARD_OPTIONS, W as CONTROL_MEASURE_IDS, Wn as GenericPolygonOptions, Wr as DEFAULT_ENGINEER_WORK_LINE_OPTIONS, Wt as DisruptMissionTaskOptions, X as getControlMeasureMetadataByValue, Xn as ClassicArrowHeadStyle, Xr as haversineDistance, Xt as DEFAULT_COVER_OPTIONS, Y as getControlMeasureMetadata, Yn as DEFAULT_BLOCK_ARROW_OPTIONS, Yr as Point2D, Yt as CoverOptions, Z as getDefaultOptions, Zn as ClassicArrowOptions, Zr as project, Zt as DEFAULT_TACTICAL_ARROW_OPTIONS, _ as disruptDrawRule, _i as TextAmplifiers, _n as DEFAULT_RELEASE_LINE_OPTIONS, _r as DEFAULT_ENCIRCLEMENT_OPTIONS, _t as DEFAULT_FRONTAL_ATTACK_OPTIONS, a as supportByFireDrawRule, ai as ControlMeasureMetadata, an as CanalizeOptions, ar as AreaOfOperationsOptions, at as DEFAULT_TURN_OPTIONS, b as computeDefaultMidpointPerpendicularPoint, bi as resolveAmplifierPlacement, bn as HoldingLineOptions, br as FinalProtectiveFireOptions, bt as FortifiedAreaOptions, c as line24DrawRule, ci as TextAmplifierDescriptor, cn as DEFAULT_BYPASS_OPTIONS, cr as PickupZoneOptions, ct as FixMissionTaskOptions, d as line1DrawRule, di as CanonicalTextAmplifiers, dn as BlockMissionTaskOptions, dr as DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS, dt as DEFAULT_DISRUPT_OPTIONS, ei as DEFAULT_BOUNDARY_OPTIONS, en as DEFAULT_COUNTERATTACK_BY_FIRE_OPTIONS, er as SupportingAttackOptions, et as ObstacleBypassImpossibleOptions, f as ambushDrawRule, fi as GeneratedLabelKey, fn as DEFAULT_BLOCK_MISSION_TASK_OPTIONS, fr as JointTacticalActionAreaOptions, ft as DisruptOptions, g as centerRadiusDrawRule, gi as TextAmplifierKey, gn as HandoverLineOptions, gr as DEFAULT_AREA_DEFENSE_OPTIONS, gt as TurningMovementOptions, h as penetrateDrawRule, hi as TextAmplifierField, hn as DEFAULT_HANDOVER_LINE_OPTIONS, hr as AreaDefenseOptions, ht as DEFAULT_TURNING_MOVEMENT_OPTIONS, i as axis1DrawRule, ii as ControlMeasureGeometryType, in as DEFAULT_CLEAR_OPTIONS, ir as computeInitialWidthPoint, it as ObstacleBypassEasyOptions, j as getMetersPerPixel, jn as DEFAULT_SUPPORT_BY_FIRE_OPTIONS, jr as DirectionOfSupportingAttackOptions, jt as DEFAULT_SEIZE_OPTIONS, k as createBaselineFrame, kn as AttackByFireOptions, kr as PrincipalDirectionOfFireOptions, kt as DEFAULT_WITHDRAW_OPTIONS, l as line23DrawRule, li as AmplifierPlacement, ln as BreachOptions, lr as DEFAULT_LANDING_ZONE_OPTIONS, lt as DEFAULT_FIX_OPTIONS, m as point12DrawRule, mi as TEXT_AMPLIFIER_FIELDS, mn as DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS, mr as DEFAULT_ASSEMBLY_AREA_OPTIONS, mt as DEFAULT_BLOCK_OPTIONS, n as DEFAULT_AMBUSH_OPTIONS, ni as ControlMeasureFillCapability, nn as DEFAULT_COUNTERATTACK_OPTIONS, nr as MainAttackOptions, nt as ObstacleBypassDifficultOptions, o as line27DrawRule, oi as ControlMeasurePaintCapability, on as DEFAULT_CANALIZE_OPTIONS, or as DEFAULT_AREA_OF_OPERATIONS_OPTIONS, ot as TurnOptions, p as attackByFireDrawRule, pi as LabelPlacementOverride, pn as BattleHandoverLineOptions, pr as AssemblyAreaOptions, pt as BlockOptions, q as ControlMeasureKind, qn as BlockArrowHeadStyle, qr as LightLineOptions, qt as DEFAULT_DELAY_OPTIONS, r as rectangleDrawRule, ri as ControlMeasureGeometry, rn as ClearOptions, rr as calculateMetrics, rt as DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS, s as line26DrawRule, si as ParamDescriptor, sn as BypassOptions, sr as DEFAULT_PICKUP_ZONE_OPTIONS, st as DEFAULT_FIX_MISSION_TASK_OPTIONS, t as AmbushOptions, ti as BoxTransformDelta, tn as CounterattackOptions, tr as DEFAULT_MAIN_ATTACK_OPTIONS, tt as DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS, u as turnDrawRule, ui as AmplifierPlacements, un as DEFAULT_BREACH_OPTIONS, ur as LandingZoneOptions, ut as FixOptions, v as blockDrawRule, vi as canonicalTextAmplifierKey, vn as ReleaseLineOptions, vr as EncirclementOptions, vt as FrontalAttackOptions, w as snapToMidpointPerpendicular, wn as ForwardEdgeOfBattleAreaOptions, wr as controlMeasureIdFromFeature, wt as DEFAULT_ANTITANK_WALL_OPTIONS, x as createMidpointPerpendicularDrawRule, xi as AnchorTransformEvent, xn as BridgeheadLineOptions, xr as ControlMeasureRender, xt as DEFAULT_FORTIFIED_LINE_OPTIONS, y as MidpointPerpendicularDrawRuleOptions, yi as normalizeTextAmplifiers, yn as DEFAULT_HOLDING_LINE_OPTIONS, yr as DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS, yt as DEFAULT_FORTIFIED_AREA_OPTIONS, z as RenderOptions, zn as DEFAULT_GENERIC_CIRCLE_OPTIONS, zr as DEFAULT_BATTLE_POSITION_OPTIONS, zt as DEFAULT_PENETRATE_OPTIONS } from "./index-85rqbfeE.mjs";
2
- export { type AirborneAttackOptions, type AmbushOptions, type AmplifierPlacement, type AmplifierPlacements, type AnchorTransformEvent, type AntitankDitchOptions, type AntitankWallOptions, type AreaDefenseOptions, 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 BoxTransformDelta, type BreachOptions, type BridgeheadLineOptions, type BypassOptions, CONTROL_MEASURE_IDS, CONTROL_MEASURE_METADATA, type CanalizeOptions, type CanonicalTextAmplifiers, type ClassicArrowHeadStyle, type ClassicArrowOptions, type ClearOptions, type ControlMeasure, type ControlMeasureDrawRule, type ControlMeasureFillCapability, type ControlMeasureGeometry, type ControlMeasureGeometryType, type ControlMeasureId, type ControlMeasureKind, type ControlMeasureMetadata, type ControlMeasurePaintCapability, type ControlMeasureRender, type ControlMeasureStyle, type CounterattackByFireOptions, type CounterattackOptions, type CoverOptions, DEFAULT_AIRBORNE_ATTACK_OPTIONS, DEFAULT_AMBUSH_OPTIONS, DEFAULT_ANTITANK_DITCH_OPTIONS, DEFAULT_ANTITANK_WALL_OPTIONS, DEFAULT_AREA_DEFENSE_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_BRIDGEHEAD_LINE_OPTIONS, DEFAULT_BYPASS_OPTIONS, DEFAULT_CANALIZE_OPTIONS, DEFAULT_CLASSIC_ARROW_OPTIONS, DEFAULT_CLEAR_OPTIONS, DEFAULT_COUNTERATTACK_BY_FIRE_OPTIONS, DEFAULT_COUNTERATTACK_OPTIONS, DEFAULT_COVER_OPTIONS, DEFAULT_DELAY_OPTIONS, DEFAULT_DIRECTION_OF_ATTACK_AVIATION_OPTIONS, DEFAULT_DIRECTION_OF_MAIN_ATTACK_OPTIONS, DEFAULT_DIRECTION_OF_SUPPORTING_ATTACK_OPTIONS, DEFAULT_DISENGAGE_OPTIONS, DEFAULT_DISRUPT_MISSION_TASK_OPTIONS, DEFAULT_DISRUPT_OPTIONS, DEFAULT_ENCIRCLEMENT_OPTIONS, DEFAULT_ENGINEER_WORK_LINE_OPTIONS, DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS, DEFAULT_FIX_MISSION_TASK_OPTIONS, DEFAULT_FIX_OPTIONS, DEFAULT_FLOT_OPTIONS, DEFAULT_FORTIFIED_AREA_OPTIONS, DEFAULT_FORTIFIED_LINE_OPTIONS, DEFAULT_FORWARD_EDGE_OF_BATTLE_AREA_OPTIONS, DEFAULT_FRONTAL_ATTACK_OPTIONS, DEFAULT_GENERIC_C2_LINE_OPTIONS, DEFAULT_GENERIC_CIRCLE_OPTIONS, DEFAULT_GENERIC_LINE_OPTIONS, DEFAULT_GENERIC_POLYGON_OPTIONS, DEFAULT_GENERIC_RECTANGLE_OPTIONS, DEFAULT_GENERIC_TEXT_OPTIONS, DEFAULT_GUARD_OPTIONS, DEFAULT_HANDOVER_LINE_OPTIONS, DEFAULT_HOLDING_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_PENETRATE_OPTIONS, DEFAULT_PHASE_LINE_OPTIONS, DEFAULT_PICKUP_ZONE_OPTIONS, DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, DEFAULT_REARWARD_PASSAGE_OF_LINES_OPTIONS, DEFAULT_RELEASE_LINE_OPTIONS, DEFAULT_RETIRE_OPTIONS, DEFAULT_SCREEN_OPTIONS, DEFAULT_SECONDARY_DIRECTION_OF_FIRE_OPTIONS, DEFAULT_SEIZE_OPTIONS, DEFAULT_STRONG_POINT_OPTIONS, DEFAULT_SUPPORTING_ATTACK_OPTIONS, DEFAULT_SUPPORT_BY_FIRE_OPTIONS, DEFAULT_TACTICAL_ARROW_OPTIONS, DEFAULT_TURNING_MOVEMENT_OPTIONS, DEFAULT_TURN_OPTIONS, DEFAULT_WITHDRAW_OPTIONS, DEFAULT_WITHDRAW_UNDER_PRESSURE_OPTIONS, type DelayOptions, type DirectionOfAttackAviationOptions, type DirectionOfMainAttackOptions, type DirectionOfSupportingAttackOptions, type DisengageOptions, type DisruptMissionTaskOptions, type DisruptOptions, EPSILON, type EncirclementOptions, type EngineerWorkLineOptions, type FLOTOptions, type FeaturePartProps, type FillPattern, type FinalProtectiveFireOptions, type FixMissionTaskOptions, type FixOptions, type FortifiedAreaOptions, type FortifiedLineOptions, type ForwardEdgeOfBattleAreaOptions, type FrontalAttackOptions, type GeneratedLabelKey, type GenericC2LineOptions, type GenericCircleOptions, type GenericLineOptions, type GenericPolygonOptions, type GenericRectangleOptions, type GenericTextOptions, type GuardOptions, type HandoverLineOptions, type HoldingLineOptions, type JointTacticalActionAreaOptions, type LabelPlacementOverride, type LabelSizeOptions, type LandingZoneOptions, type LightLineOptions, type MainAttackOptions, type MidpointPerpendicularDrawRuleOptions, type ObstacleBypassDifficultOptions, type ObstacleBypassEasyOptions, type ObstacleBypassImpossibleOptions, type OptionsByKind, type ParamDescriptor, type PenetrateOptions, type PhaseLineOptions, type PickupZoneOptions, type Point2D, type PrincipalDirectionOfFireOptions, type RearwardPassageOfLinesOptions, type ReleaseLineOptions, type RenderOptions, type RetireOptions, SECONDARY_DIRECTION_OF_FIRE_DASH, type ScreenOptions, type SecondaryDirectionOfFireOptions, type SeizeOptions, 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, type TurningMovementOptions, type WithdrawOptions, type WithdrawUnderPressureOptions, ambushDrawRule, applyBoxTransformOptions, attackByFireDrawRule, axis1DrawRule, blockDrawRule, calculateMetrics, canonicalTextAmplifierKey, centerRadiusDrawRule, cloneControlMeasure, computeDefaultMidpointPerpendicularPoint, computeInitialWidthPoint, controlMeasureIdFromFeature, createBaselineFrame, createMidpointPerpendicularDrawRule, disruptDrawRule, freezeOrientationOptions, getControlMeasureMetadata, getControlMeasureMetadataByValue, getDefaultOptions, getMetersPerPixel, getMidpointPerpendicularSignedDistance, haversineDistance, isKind, line1DrawRule, line23DrawRule, line24DrawRule, line26DrawRule, line27DrawRule, listControlMeasureMetadata, normalizeTextAmplifiers, penetrateDrawRule, point12DrawRule, pointOnMidpointPerpendicularAxis, project, rectangleDrawRule, renderControlMeasure, resolveAmplifierPlacement, resolveStyleHints, roundToFixed, snapToMidpointPerpendicular, supportByFireDrawRule, toSimpleStyle, turnDrawRule, unproject };
1
+ import { $ as getDefaultOptions, $n as BlockArrowOptions, $r as LabelSizeOptions, $t as DelayOptions, A as createBaselineFrame, An as DEFAULT_PHASE_LINE_OPTIONS, Ar as DEFAULT_SECONDARY_DIRECTION_OF_FIRE_OPTIONS, At as AntitankDitchOptions, B as freezeOrientationOptions, Bn as AirborneAttackOptions, Br as DirectionOfAttackAviationOptions, Bt as DEFAULT_RETIRE_OPTIONS, C as getMidpointPerpendicularSignedDistance, Ci as canonicalTextAmplifierKey, Cn as ReleaseLineOptions, Cr as EncirclementOptions, Ct as FrontalAttackOptions, D as BaselineFrameNormal, Di as ControlMeasureDrawRule, Dn as DEFAULT_BRIDGEHEAD_LINE_OPTIONS, Dr as FeaturePartProps, Dt as FortifiedLineOptions, E as BaselineFrame, Ei as AnchorTransformEvent, En as BridgeheadLineOptions, Er as ControlMeasureRender, Et as DEFAULT_FORTIFIED_LINE_OPTIONS, F as SimpleStyleRender, Fn as DEFAULT_ATTACK_BY_FIRE_OPTIONS, Fr as DEFAULT_DIRECTION_OF_SUPPORTING_ATTACK_OPTIONS, Ft as WithdrawOptions, G as isKind, Gn as GenericCircleOptions, Gr as ControlMeasureStyle, Gt as PenetrateOptions, H as renderControlMeasure, Hn as DEFAULT_GENERIC_TEXT_OPTIONS, Hr as StrongPointOptions, Ht as DEFAULT_REARWARD_PASSAGE_OF_LINES_OPTIONS, I as toSimpleStyle, In as DEFAULT_SUPPORT_BY_FIRE_OPTIONS, Ir as DirectionOfSupportingAttackOptions, It as DEFAULT_SEIZE_OPTIONS, J as ControlMeasureId, Jn as DEFAULT_GENERIC_POLYGON_OPTIONS, Jr as GenericC2LineOptions, Jt as DEFAULT_DISRUPT_MISSION_TASK_OPTIONS, K as CONTROL_MEASURE_IDS, Kn as DEFAULT_GENERIC_RECTANGLE_OPTIONS, Kr as FillPattern, Kt as DEFAULT_GUARD_OPTIONS, L as resolveStyleHints, Ln as SupportByFireOptions, Lr as DEFAULT_DIRECTION_OF_MAIN_ATTACK_OPTIONS, Lt as SeizeOptions, M as getMetersPerPixel, Mn as DEFAULT_FLOT_OPTIONS, Mr as SecondaryDirectionOfFireOptions, Mt as DEFAULT_WITHDRAW_UNDER_PRESSURE_OPTIONS, N as roundToFixed, Nn as FLOTOptions, Nr as DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, Nt as WithdrawUnderPressureOptions, O as BaselineFrameOptions, On as DEFAULT_FORWARD_EDGE_OF_BATTLE_AREA_OPTIONS, Or as StyleHints, Ot as AntitankWallOptions, P as SimpleStyleProps, Pn as AttackByFireOptions, Pr as PrincipalDirectionOfFireOptions, Pt as DEFAULT_WITHDRAW_OPTIONS, Q as getControlMeasureMetadataByValue, Qn as BlockArrowHeadStyle, Qr as LightLineOptions, Qt as DEFAULT_DELAY_OPTIONS, R as applyBoxTransformOptions, Rn as AttackHelicopterOptions, Rr as DirectionOfMainAttackOptions, Rt as DEFAULT_SCREEN_OPTIONS, S as createMidpointPerpendicularDrawRule, Si as TextAmplifiers, Sn as DEFAULT_RELEASE_LINE_OPTIONS, Sr as DEFAULT_ENCIRCLEMENT_OPTIONS, St as DEFAULT_FRONTAL_ATTACK_OPTIONS, T as snapToMidpointPerpendicular, Ti as resolveAmplifierPlacement, Tn as HoldingLineOptions, Tr as FinalProtectiveFireOptions, Tt as FortifiedAreaOptions, U as ControlMeasure, Un as GenericTextOptions, Ur as BattlePositionOptions, Ut as RearwardPassageOfLinesOptions, V as RenderOptions, Vn as DEFAULT_AIRBORNE_ATTACK_OPTIONS, Vr as DEFAULT_STRONG_POINT_OPTIONS, Vt as RetireOptions, W as cloneControlMeasure, Wn as DEFAULT_GENERIC_CIRCLE_OPTIONS, Wr as DEFAULT_BATTLE_POSITION_OPTIONS, Wt as DEFAULT_PENETRATE_OPTIONS, X as OptionsByKind, Xn as DEFAULT_GENERIC_LINE_OPTIONS, Xr as EngineerWorkLineOptions, Xt as DEFAULT_DISENGAGE_OPTIONS, Y as ControlMeasureKind, Yn as GenericPolygonOptions, Yr as DEFAULT_ENGINEER_WORK_LINE_OPTIONS, Yt as DisruptMissionTaskOptions, Z as getControlMeasureMetadata, Zn as GenericLineOptions, Zr as DEFAULT_LIGHT_LINE_OPTIONS, Zt as DisengageOptions, _ as centerRadiusDrawRule, _i as GeneratedLabelKey, _n as DEFAULT_BLOCK_MISSION_TASK_OPTIONS, _r as JointTacticalActionAreaOptions, _t as DisruptOptions, a as supportByFireDrawRule, ai as DEFAULT_BOUNDARY_OPTIONS, an as DEFAULT_COUNTERATTACK_BY_FIRE_OPTIONS, ar as SupportingAttackOptions, at as DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS, b as MidpointPerpendicularDrawRuleOptions, bi as TextAmplifierField, bn as DEFAULT_HANDOVER_LINE_OPTIONS, br as AreaDefenseOptions, bt as DEFAULT_TURNING_MOVEMENT_OPTIONS, c as line24DrawRule, ci as ControlMeasureGeometry, cn as ClearOptions, cr as calculateMetrics, ct as MineType, d as line1DrawRule, di as ControlMeasurePaintCapability, dn as DEFAULT_CANALIZE_OPTIONS, dr as DEFAULT_AREA_OF_OPERATIONS_OPTIONS, dt as TurnOptions, ei as Point2D, en as CoverOptions, er as DEFAULT_BLOCK_ARROW_OPTIONS, et as listControlMeasureMetadata, f as ambushDrawRule, fi as ParamDescriptor, fn as BypassOptions, fr as DEFAULT_PICKUP_ZONE_OPTIONS, ft as DEFAULT_FIX_MISSION_TASK_OPTIONS, g as penetrateDrawRule, gi as CanonicalTextAmplifiers, gn as BlockMissionTaskOptions, gr as DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS, gt as DEFAULT_DISRUPT_OPTIONS, h as point12DrawRule, hi as AmplifierPlacements, hn as DEFAULT_BREACH_OPTIONS, hr as LandingZoneOptions, ht as FixOptions, i as axis1DrawRule, ii as BoundaryOptions, in as CounterattackByFireOptions, ir as DEFAULT_SUPPORTING_ATTACK_OPTIONS, it as ObstacleBypassDifficultOptions, j as EPSILON, jn as PhaseLineOptions, jr as SECONDARY_DIRECTION_OF_FIRE_DASH, jt as DEFAULT_ANTITANK_DITCH_OPTIONS, k as BaselineFrameOrigin, kn as ForwardEdgeOfBattleAreaOptions, kr as controlMeasureIdFromFeature, kt as DEFAULT_ANTITANK_WALL_OPTIONS, l as line23DrawRule, li as ControlMeasureGeometryType, ln as DEFAULT_CLEAR_OPTIONS, lr as computeInitialWidthPoint, lt as MinefieldOptions, m as staticPointDrawRule, mi as AmplifierPlacement, mn as BreachOptions, mr as DEFAULT_LANDING_ZONE_OPTIONS, mt as DEFAULT_FIX_OPTIONS, n as DEFAULT_AMBUSH_OPTIONS, ni as project, nn as DEFAULT_TACTICAL_ARROW_OPTIONS, nr as ClassicArrowOptions, nt as ObstacleBypassImpossibleOptions, o as line27DrawRule, oi as BoxTransformDelta, on as CounterattackOptions, or as DEFAULT_MAIN_ATTACK_OPTIONS, ot as ObstacleBypassEasyOptions, p as attackByFireDrawRule, pi as TextAmplifierDescriptor, pn as DEFAULT_BYPASS_OPTIONS, pr as PickupZoneOptions, pt as FixMissionTaskOptions, q as CONTROL_MEASURE_METADATA, qn as GenericRectangleOptions, qr as DEFAULT_GENERIC_C2_LINE_OPTIONS, qt as GuardOptions, r as rectangleDrawRule, ri as unproject, rn as TacticalArrowOptions, rr as DEFAULT_CLASSIC_ARROW_OPTIONS, rt as DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS, s as line26DrawRule, si as ControlMeasureFillCapability, sn as DEFAULT_COUNTERATTACK_OPTIONS, sr as MainAttackOptions, st as DEFAULT_MINEFIELD_OPTIONS, t as AmbushOptions, ti as haversineDistance, tn as DEFAULT_COVER_OPTIONS, tr as ClassicArrowHeadStyle, tt as DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS, u as turnDrawRule, ui as ControlMeasureMetadata, un as CanalizeOptions, ur as AreaOfOperationsOptions, ut as DEFAULT_TURN_OPTIONS, v as disruptDrawRule, vi as LabelPlacementOverride, vn as BattleHandoverLineOptions, vr as AssemblyAreaOptions, vt as BlockOptions, w as pointOnMidpointPerpendicularAxis, wi as normalizeTextAmplifiers, wn as DEFAULT_HOLDING_LINE_OPTIONS, wr as DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS, wt as DEFAULT_FORTIFIED_AREA_OPTIONS, x as computeDefaultMidpointPerpendicularPoint, xi as TextAmplifierKey, xn as HandoverLineOptions, xr as DEFAULT_AREA_DEFENSE_OPTIONS, xt as TurningMovementOptions, y as blockDrawRule, yi as TEXT_AMPLIFIER_FIELDS, yn as DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS, yr as DEFAULT_ASSEMBLY_AREA_OPTIONS, yt as DEFAULT_BLOCK_OPTIONS, z as foldsBoxTransformOptions, zn as DEFAULT_ATTACK_HELICOPTER_OPTIONS, zr as DEFAULT_DIRECTION_OF_ATTACK_AVIATION_OPTIONS, zt as ScreenOptions } from "./index-D2Osbvgz.mjs";
2
+ export { type AirborneAttackOptions, type AmbushOptions, type AmplifierPlacement, type AmplifierPlacements, type AnchorTransformEvent, type AntitankDitchOptions, type AntitankWallOptions, type AreaDefenseOptions, 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 BoxTransformDelta, type BreachOptions, type BridgeheadLineOptions, type BypassOptions, CONTROL_MEASURE_IDS, CONTROL_MEASURE_METADATA, type CanalizeOptions, type CanonicalTextAmplifiers, type ClassicArrowHeadStyle, type ClassicArrowOptions, type ClearOptions, type ControlMeasure, type ControlMeasureDrawRule, type ControlMeasureFillCapability, type ControlMeasureGeometry, type ControlMeasureGeometryType, type ControlMeasureId, type ControlMeasureKind, type ControlMeasureMetadata, type ControlMeasurePaintCapability, type ControlMeasureRender, type ControlMeasureStyle, type CounterattackByFireOptions, type CounterattackOptions, type CoverOptions, DEFAULT_AIRBORNE_ATTACK_OPTIONS, DEFAULT_AMBUSH_OPTIONS, DEFAULT_ANTITANK_DITCH_OPTIONS, DEFAULT_ANTITANK_WALL_OPTIONS, DEFAULT_AREA_DEFENSE_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_BRIDGEHEAD_LINE_OPTIONS, DEFAULT_BYPASS_OPTIONS, DEFAULT_CANALIZE_OPTIONS, DEFAULT_CLASSIC_ARROW_OPTIONS, DEFAULT_CLEAR_OPTIONS, DEFAULT_COUNTERATTACK_BY_FIRE_OPTIONS, DEFAULT_COUNTERATTACK_OPTIONS, DEFAULT_COVER_OPTIONS, DEFAULT_DELAY_OPTIONS, DEFAULT_DIRECTION_OF_ATTACK_AVIATION_OPTIONS, DEFAULT_DIRECTION_OF_MAIN_ATTACK_OPTIONS, DEFAULT_DIRECTION_OF_SUPPORTING_ATTACK_OPTIONS, DEFAULT_DISENGAGE_OPTIONS, DEFAULT_DISRUPT_MISSION_TASK_OPTIONS, DEFAULT_DISRUPT_OPTIONS, DEFAULT_ENCIRCLEMENT_OPTIONS, DEFAULT_ENGINEER_WORK_LINE_OPTIONS, DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS, DEFAULT_FIX_MISSION_TASK_OPTIONS, DEFAULT_FIX_OPTIONS, DEFAULT_FLOT_OPTIONS, DEFAULT_FORTIFIED_AREA_OPTIONS, DEFAULT_FORTIFIED_LINE_OPTIONS, DEFAULT_FORWARD_EDGE_OF_BATTLE_AREA_OPTIONS, DEFAULT_FRONTAL_ATTACK_OPTIONS, DEFAULT_GENERIC_C2_LINE_OPTIONS, DEFAULT_GENERIC_CIRCLE_OPTIONS, DEFAULT_GENERIC_LINE_OPTIONS, DEFAULT_GENERIC_POLYGON_OPTIONS, DEFAULT_GENERIC_RECTANGLE_OPTIONS, DEFAULT_GENERIC_TEXT_OPTIONS, DEFAULT_GUARD_OPTIONS, DEFAULT_HANDOVER_LINE_OPTIONS, DEFAULT_HOLDING_LINE_OPTIONS, DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS, DEFAULT_LANDING_ZONE_OPTIONS, DEFAULT_LIGHT_LINE_OPTIONS, DEFAULT_MAIN_ATTACK_OPTIONS, DEFAULT_MINEFIELD_OPTIONS, DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS, DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS, DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS, DEFAULT_PENETRATE_OPTIONS, DEFAULT_PHASE_LINE_OPTIONS, DEFAULT_PICKUP_ZONE_OPTIONS, DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, DEFAULT_REARWARD_PASSAGE_OF_LINES_OPTIONS, DEFAULT_RELEASE_LINE_OPTIONS, DEFAULT_RETIRE_OPTIONS, DEFAULT_SCREEN_OPTIONS, DEFAULT_SECONDARY_DIRECTION_OF_FIRE_OPTIONS, DEFAULT_SEIZE_OPTIONS, DEFAULT_STRONG_POINT_OPTIONS, DEFAULT_SUPPORTING_ATTACK_OPTIONS, DEFAULT_SUPPORT_BY_FIRE_OPTIONS, DEFAULT_TACTICAL_ARROW_OPTIONS, DEFAULT_TURNING_MOVEMENT_OPTIONS, DEFAULT_TURN_OPTIONS, DEFAULT_WITHDRAW_OPTIONS, DEFAULT_WITHDRAW_UNDER_PRESSURE_OPTIONS, type DelayOptions, type DirectionOfAttackAviationOptions, type DirectionOfMainAttackOptions, type DirectionOfSupportingAttackOptions, type DisengageOptions, type DisruptMissionTaskOptions, type DisruptOptions, EPSILON, type EncirclementOptions, type EngineerWorkLineOptions, type FLOTOptions, type FeaturePartProps, type FillPattern, type FinalProtectiveFireOptions, type FixMissionTaskOptions, type FixOptions, type FortifiedAreaOptions, type FortifiedLineOptions, type ForwardEdgeOfBattleAreaOptions, type FrontalAttackOptions, type GeneratedLabelKey, type GenericC2LineOptions, type GenericCircleOptions, type GenericLineOptions, type GenericPolygonOptions, type GenericRectangleOptions, type GenericTextOptions, type GuardOptions, type HandoverLineOptions, type HoldingLineOptions, type JointTacticalActionAreaOptions, type LabelPlacementOverride, type LabelSizeOptions, type LandingZoneOptions, type LightLineOptions, type MainAttackOptions, type MidpointPerpendicularDrawRuleOptions, type MineType, type MinefieldOptions, type ObstacleBypassDifficultOptions, type ObstacleBypassEasyOptions, type ObstacleBypassImpossibleOptions, type OptionsByKind, type ParamDescriptor, type PenetrateOptions, type PhaseLineOptions, type PickupZoneOptions, type Point2D, type PrincipalDirectionOfFireOptions, type RearwardPassageOfLinesOptions, type ReleaseLineOptions, type RenderOptions, type RetireOptions, SECONDARY_DIRECTION_OF_FIRE_DASH, type ScreenOptions, type SecondaryDirectionOfFireOptions, type SeizeOptions, 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, type TurningMovementOptions, type WithdrawOptions, type WithdrawUnderPressureOptions, ambushDrawRule, applyBoxTransformOptions, attackByFireDrawRule, axis1DrawRule, blockDrawRule, calculateMetrics, canonicalTextAmplifierKey, centerRadiusDrawRule, cloneControlMeasure, computeDefaultMidpointPerpendicularPoint, computeInitialWidthPoint, controlMeasureIdFromFeature, createBaselineFrame, createMidpointPerpendicularDrawRule, disruptDrawRule, foldsBoxTransformOptions, freezeOrientationOptions, getControlMeasureMetadata, getControlMeasureMetadataByValue, getDefaultOptions, getMetersPerPixel, getMidpointPerpendicularSignedDistance, haversineDistance, isKind, line1DrawRule, line23DrawRule, line24DrawRule, line26DrawRule, line27DrawRule, listControlMeasureMetadata, normalizeTextAmplifiers, penetrateDrawRule, point12DrawRule, pointOnMidpointPerpendicularAxis, project, rectangleDrawRule, renderControlMeasure, resolveAmplifierPlacement, resolveStyleHints, roundToFixed, snapToMidpointPerpendicular, staticPointDrawRule, supportByFireDrawRule, toSimpleStyle, turnDrawRule, unproject };
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as DEFAULT_COUNTERATTACK_BY_FIRE_OPTIONS, $t as createMidpointPerpendicularDrawRule, A as DEFAULT_PENETRATE_OPTIONS, At as TEXT_AMPLIFIER_FIELDS, B as DEFAULT_PHASE_LINE_OPTIONS, Bt as line26DrawRule, C as DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS, Ct as DEFAULT_ANTITANK_DITCH_OPTIONS, D as DEFAULT_SCREEN_OPTIONS, Dt as DEFAULT_DIRECTION_OF_SUPPORTING_ATTACK_OPTIONS, E as DEFAULT_SEIZE_OPTIONS, Et as DEFAULT_AREA_DEFENSE_OPTIONS, F as DEFAULT_HANDOVER_LINE_OPTIONS, Ft as DEFAULT_AIRBORNE_ATTACK_OPTIONS, G as DEFAULT_ENCIRCLEMENT_OPTIONS, Gt as ambushDrawRule, H as DEFAULT_FIX_MISSION_TASK_OPTIONS, Ht as line23DrawRule, I as DEFAULT_FORWARD_EDGE_OF_BATTLE_AREA_OPTIONS, It as rectangleDrawRule, J as DEFAULT_DISRUPT_MISSION_TASK_OPTIONS, Jt as penetrateDrawRule, K as DEFAULT_DISRUPT_OPTIONS, Kt as attackByFireDrawRule, L as DEFAULT_RELEASE_LINE_OPTIONS, Lt as axis1DrawRule, M as DEFAULT_FORTIFIED_AREA_OPTIONS, Mt as normalizeTextAmplifiers, N as DEFAULT_FORTIFIED_LINE_OPTIONS, Nt as resolveAmplifierPlacement, O as DEFAULT_RETIRE_OPTIONS, Ot as DEFAULT_DIRECTION_OF_MAIN_ATTACK_OPTIONS, P as DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS, Pt as DEFAULT_AMBUSH_OPTIONS, Q as DEFAULT_TACTICAL_ARROW_OPTIONS, Qt as computeDefaultMidpointPerpendicularPoint, R as DEFAULT_HOLDING_LINE_OPTIONS, Rt as supportByFireDrawRule, S as DEFAULT_LANDING_ZONE_OPTIONS, St as DEFAULT_ANTITANK_WALL_OPTIONS, T as DEFAULT_WITHDRAW_OPTIONS, Tt as DEFAULT_AREA_OF_OPERATIONS_OPTIONS, U as DEFAULT_FIX_OPTIONS, Ut as turnDrawRule, V as DEFAULT_FLOT_OPTIONS, Vt as line24DrawRule, W as DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS, Wt as line1DrawRule, X as DEFAULT_DELAY_OPTIONS, Xt as disruptDrawRule, Y as DEFAULT_DISENGAGE_OPTIONS, Yt as centerRadiusDrawRule, Z as DEFAULT_COVER_OPTIONS, Zt as blockDrawRule, _ as DEFAULT_PICKUP_ZONE_OPTIONS, _t as DEFAULT_BLOCK_ARROW_OPTIONS, a as DEFINITIONS, an as computeInitialWidthPoint, at as DEFAULT_GENERIC_POLYGON_OPTIONS, b as DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS, bt as DEFAULT_ATTACK_HELICOPTER_OPTIONS, c as getDefaultOptions, cn as unproject, ct as DEFAULT_CLASSIC_ARROW_OPTIONS, d as DEFAULT_TURN_OPTIONS, dn as roundToFixed, dt as DEFAULT_BREACH_OPTIONS, en as getMidpointPerpendicularSignedDistance, et as DEFAULT_COUNTERATTACK_OPTIONS, f as DEFAULT_SUPPORT_BY_FIRE_OPTIONS, ft as DEFAULT_BLOCK_MISSION_TASK_OPTIONS, g as DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, gt as DEFAULT_BOUNDARY_OPTIONS, h as SECONDARY_DIRECTION_OF_FIRE_DASH, ht as DEFAULT_LIGHT_LINE_OPTIONS, i as CONTROL_MEASURE_METADATA, in as calculateMetrics, it as DEFAULT_GENERIC_RECTANGLE_OPTIONS, j as DEFAULT_FRONTAL_ATTACK_OPTIONS, jt as canonicalTextAmplifierKey, k as DEFAULT_REARWARD_PASSAGE_OF_LINES_OPTIONS, kt as DEFAULT_DIRECTION_OF_ATTACK_AVIATION_OPTIONS, l as listControlMeasureMetadata, ln as EPSILON, lt as DEFAULT_CANALIZE_OPTIONS, m as DEFAULT_SECONDARY_DIRECTION_OF_FIRE_OPTIONS, mt as DEFAULT_ENGINEER_WORK_LINE_OPTIONS, n as resolveStyleHints, nn as snapToMidpointPerpendicular, nt as DEFAULT_CLEAR_OPTIONS, o as getControlMeasureMetadata, on as haversineDistance, ot as DEFAULT_GENERIC_LINE_OPTIONS, p as DEFAULT_STRONG_POINT_OPTIONS, pt as DEFAULT_GENERIC_C2_LINE_OPTIONS, q as DEFAULT_GUARD_OPTIONS, qt as point12DrawRule, r as CONTROL_MEASURE_IDS, rn as createBaselineFrame, rt as DEFAULT_GENERIC_TEXT_OPTIONS, s as getControlMeasureMetadataByValue, sn as project, st as DEFAULT_GENERIC_CIRCLE_OPTIONS, t as renderControlMeasure, tn as pointOnMidpointPerpendicularAxis, tt as DEFAULT_SUPPORTING_ATTACK_OPTIONS, u as DEFAULT_TURNING_MOVEMENT_OPTIONS, un as getMetersPerPixel, ut as DEFAULT_BYPASS_OPTIONS, v as DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS, vt as DEFAULT_BLOCK_OPTIONS, w as DEFAULT_WITHDRAW_UNDER_PRESSURE_OPTIONS, wt as DEFAULT_ASSEMBLY_AREA_OPTIONS, x as DEFAULT_MAIN_ATTACK_OPTIONS, xt as DEFAULT_ATTACK_BY_FIRE_OPTIONS, y as DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS, yt as DEFAULT_BATTLE_POSITION_OPTIONS, z as DEFAULT_BRIDGEHEAD_LINE_OPTIONS, zt as line27DrawRule } from "./renderControlMeasure-CjSKeoV0.mjs";
1
+ import { $ as DEFAULT_TACTICAL_ARROW_OPTIONS, $t as blockDrawRule, A as DEFAULT_REARWARD_PASSAGE_OF_LINES_OPTIONS, At as DEFAULT_DIRECTION_OF_ATTACK_AVIATION_OPTIONS, B as DEFAULT_BRIDGEHEAD_LINE_OPTIONS, Bt as line27DrawRule, C as DEFAULT_LANDING_ZONE_OPTIONS, Ct as DEFAULT_ANTITANK_WALL_OPTIONS, D as DEFAULT_SEIZE_OPTIONS, Dt as DEFAULT_AREA_DEFENSE_OPTIONS, E as DEFAULT_WITHDRAW_OPTIONS, Et as DEFAULT_AREA_OF_OPERATIONS_OPTIONS, F as DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS, Ft as DEFAULT_AMBUSH_OPTIONS, G as DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS, Gt as line1DrawRule, H as DEFAULT_FLOT_OPTIONS, Ht as line24DrawRule, I as DEFAULT_HANDOVER_LINE_OPTIONS, It as DEFAULT_AIRBORNE_ATTACK_OPTIONS, J as DEFAULT_GUARD_OPTIONS, Jt as staticPointDrawRule, K as DEFAULT_ENCIRCLEMENT_OPTIONS, Kt as ambushDrawRule, L as DEFAULT_FORWARD_EDGE_OF_BATTLE_AREA_OPTIONS, Lt as rectangleDrawRule, M as DEFAULT_FRONTAL_ATTACK_OPTIONS, Mt as canonicalTextAmplifierKey, N as DEFAULT_FORTIFIED_AREA_OPTIONS, Nt as normalizeTextAmplifiers, O as DEFAULT_SCREEN_OPTIONS, Ot as DEFAULT_DIRECTION_OF_SUPPORTING_ATTACK_OPTIONS, P as DEFAULT_FORTIFIED_LINE_OPTIONS, Pt as resolveAmplifierPlacement, Q as DEFAULT_COVER_OPTIONS, Qt as disruptDrawRule, R as DEFAULT_RELEASE_LINE_OPTIONS, Rt as axis1DrawRule, S as DEFAULT_MAIN_ATTACK_OPTIONS, St as DEFAULT_ATTACK_BY_FIRE_OPTIONS, T as DEFAULT_WITHDRAW_UNDER_PRESSURE_OPTIONS, Tt as DEFAULT_ASSEMBLY_AREA_OPTIONS, U as DEFAULT_FIX_MISSION_TASK_OPTIONS, Ut as line23DrawRule, V as DEFAULT_PHASE_LINE_OPTIONS, Vt as line26DrawRule, W as DEFAULT_FIX_OPTIONS, Wt as turnDrawRule, X as DEFAULT_DISENGAGE_OPTIONS, Xt as penetrateDrawRule, Y as DEFAULT_DISRUPT_MISSION_TASK_OPTIONS, Yt as point12DrawRule, Z as DEFAULT_DELAY_OPTIONS, Zt as centerRadiusDrawRule, _ as DEFAULT_PICKUP_ZONE_OPTIONS, _t as DEFAULT_BOUNDARY_OPTIONS, a as DEFINITIONS, an as createBaselineFrame, at as DEFAULT_GENERIC_RECTANGLE_OPTIONS, b as DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS, bt as DEFAULT_BATTLE_POSITION_OPTIONS, c as getDefaultOptions, cn as haversineDistance, ct as DEFAULT_GENERIC_CIRCLE_OPTIONS, d as DEFAULT_TURN_OPTIONS, dn as EPSILON, dt as DEFAULT_BYPASS_OPTIONS, en as computeDefaultMidpointPerpendicularPoint, et as DEFAULT_COUNTERATTACK_BY_FIRE_OPTIONS, f as DEFAULT_SUPPORT_BY_FIRE_OPTIONS, fn as getMetersPerPixel, ft as DEFAULT_BREACH_OPTIONS, g as DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, gt as DEFAULT_LIGHT_LINE_OPTIONS, h as SECONDARY_DIRECTION_OF_FIRE_DASH, ht as DEFAULT_ENGINEER_WORK_LINE_OPTIONS, i as CONTROL_MEASURE_METADATA, in as snapToMidpointPerpendicular, it as DEFAULT_GENERIC_TEXT_OPTIONS, j as DEFAULT_PENETRATE_OPTIONS, jt as TEXT_AMPLIFIER_FIELDS, k as DEFAULT_RETIRE_OPTIONS, kt as DEFAULT_DIRECTION_OF_MAIN_ATTACK_OPTIONS, l as listControlMeasureMetadata, ln as project, lt as DEFAULT_CLASSIC_ARROW_OPTIONS, m as DEFAULT_SECONDARY_DIRECTION_OF_FIRE_OPTIONS, mt as DEFAULT_GENERIC_C2_LINE_OPTIONS, n as resolveStyleHints, nn as getMidpointPerpendicularSignedDistance, nt as DEFAULT_SUPPORTING_ATTACK_OPTIONS, o as getControlMeasureMetadata, on as calculateMetrics, ot as DEFAULT_GENERIC_POLYGON_OPTIONS, p as DEFAULT_STRONG_POINT_OPTIONS, pn as roundToFixed, pt as DEFAULT_BLOCK_MISSION_TASK_OPTIONS, q as DEFAULT_DISRUPT_OPTIONS, qt as attackByFireDrawRule, r as CONTROL_MEASURE_IDS, rn as pointOnMidpointPerpendicularAxis, rt as DEFAULT_CLEAR_OPTIONS, s as getControlMeasureMetadataByValue, sn as computeInitialWidthPoint, st as DEFAULT_GENERIC_LINE_OPTIONS, t as renderControlMeasure, tn as createMidpointPerpendicularDrawRule, tt as DEFAULT_COUNTERATTACK_OPTIONS, u as DEFAULT_TURNING_MOVEMENT_OPTIONS, un as unproject, ut as DEFAULT_CANALIZE_OPTIONS, v as DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS, vt as DEFAULT_BLOCK_ARROW_OPTIONS, w as DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS, wt as DEFAULT_ANTITANK_DITCH_OPTIONS, x as DEFAULT_MINEFIELD_OPTIONS, xt as DEFAULT_ATTACK_HELICOPTER_OPTIONS, y as DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS, yt as DEFAULT_BLOCK_OPTIONS, z as DEFAULT_HOLDING_LINE_OPTIONS, zt as supportByFireDrawRule } from "./renderControlMeasure-DUGzcmdb.mjs";
2
2
  //#region src/freeze-orientation.ts
3
3
  /**
4
4
  * Dispatches to a measure kind's `freezeOrientation` hook (see
@@ -22,6 +22,17 @@ function freezeOrientationOptions(kind, controlPoints, options) {
22
22
  * declares no hook (or the hook finds nothing to fold). Edit hosts call this at
23
23
  * a rotate/scale gesture's commit (ADR-0017).
24
24
  */
25
+ /**
26
+ * Whether `kind` persists orientation/size as options rather than in geometry —
27
+ * i.e. declares a `transformOptions` hook. This is a *static* property of the
28
+ * definition, constant for a whole gesture, so edit hosts can latch it once at
29
+ * pointer-down instead of inferring it from whether a particular delta happened
30
+ * to produce a patch (an inert delta — scale 1, no rotation — yields no patch
31
+ * for every kind, which would otherwise flip the answer mid-drag). See ADR-0017.
32
+ */
33
+ function foldsBoxTransformOptions(kind) {
34
+ return DEFINITIONS[kind].transformOptions !== void 0;
35
+ }
25
36
  function applyBoxTransformOptions(kind, options, delta) {
26
37
  const definition = DEFINITIONS[kind];
27
38
  if (!definition.transformOptions) return void 0;
@@ -129,4 +140,4 @@ function toHexChannel(value) {
129
140
  return Math.max(0, Math.min(255, Math.round(value))).toString(16).padStart(2, "0");
130
141
  }
131
142
  //#endregion
132
- export { CONTROL_MEASURE_IDS, CONTROL_MEASURE_METADATA, DEFAULT_AIRBORNE_ATTACK_OPTIONS, DEFAULT_AMBUSH_OPTIONS, DEFAULT_ANTITANK_DITCH_OPTIONS, DEFAULT_ANTITANK_WALL_OPTIONS, DEFAULT_AREA_DEFENSE_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_BRIDGEHEAD_LINE_OPTIONS, DEFAULT_BYPASS_OPTIONS, DEFAULT_CANALIZE_OPTIONS, DEFAULT_CLASSIC_ARROW_OPTIONS, DEFAULT_CLEAR_OPTIONS, DEFAULT_COUNTERATTACK_BY_FIRE_OPTIONS, DEFAULT_COUNTERATTACK_OPTIONS, DEFAULT_COVER_OPTIONS, DEFAULT_DELAY_OPTIONS, DEFAULT_DIRECTION_OF_ATTACK_AVIATION_OPTIONS, DEFAULT_DIRECTION_OF_MAIN_ATTACK_OPTIONS, DEFAULT_DIRECTION_OF_SUPPORTING_ATTACK_OPTIONS, DEFAULT_DISENGAGE_OPTIONS, DEFAULT_DISRUPT_MISSION_TASK_OPTIONS, DEFAULT_DISRUPT_OPTIONS, DEFAULT_ENCIRCLEMENT_OPTIONS, DEFAULT_ENGINEER_WORK_LINE_OPTIONS, DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS, DEFAULT_FIX_MISSION_TASK_OPTIONS, DEFAULT_FIX_OPTIONS, DEFAULT_FLOT_OPTIONS, DEFAULT_FORTIFIED_AREA_OPTIONS, DEFAULT_FORTIFIED_LINE_OPTIONS, DEFAULT_FORWARD_EDGE_OF_BATTLE_AREA_OPTIONS, DEFAULT_FRONTAL_ATTACK_OPTIONS, DEFAULT_GENERIC_C2_LINE_OPTIONS, DEFAULT_GENERIC_CIRCLE_OPTIONS, DEFAULT_GENERIC_LINE_OPTIONS, DEFAULT_GENERIC_POLYGON_OPTIONS, DEFAULT_GENERIC_RECTANGLE_OPTIONS, DEFAULT_GENERIC_TEXT_OPTIONS, DEFAULT_GUARD_OPTIONS, DEFAULT_HANDOVER_LINE_OPTIONS, DEFAULT_HOLDING_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_PENETRATE_OPTIONS, DEFAULT_PHASE_LINE_OPTIONS, DEFAULT_PICKUP_ZONE_OPTIONS, DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, DEFAULT_REARWARD_PASSAGE_OF_LINES_OPTIONS, DEFAULT_RELEASE_LINE_OPTIONS, DEFAULT_RETIRE_OPTIONS, DEFAULT_SCREEN_OPTIONS, DEFAULT_SECONDARY_DIRECTION_OF_FIRE_OPTIONS, DEFAULT_SEIZE_OPTIONS, DEFAULT_STRONG_POINT_OPTIONS, DEFAULT_SUPPORTING_ATTACK_OPTIONS, DEFAULT_SUPPORT_BY_FIRE_OPTIONS, DEFAULT_TACTICAL_ARROW_OPTIONS, DEFAULT_TURNING_MOVEMENT_OPTIONS, DEFAULT_TURN_OPTIONS, DEFAULT_WITHDRAW_OPTIONS, DEFAULT_WITHDRAW_UNDER_PRESSURE_OPTIONS, EPSILON, SECONDARY_DIRECTION_OF_FIRE_DASH, TEXT_AMPLIFIER_FIELDS, ambushDrawRule, applyBoxTransformOptions, attackByFireDrawRule, axis1DrawRule, blockDrawRule, calculateMetrics, canonicalTextAmplifierKey, centerRadiusDrawRule, cloneControlMeasure, computeDefaultMidpointPerpendicularPoint, computeInitialWidthPoint, controlMeasureIdFromFeature, createBaselineFrame, createMidpointPerpendicularDrawRule, disruptDrawRule, freezeOrientationOptions, getControlMeasureMetadata, getControlMeasureMetadataByValue, getDefaultOptions, getMetersPerPixel, getMidpointPerpendicularSignedDistance, haversineDistance, isKind, line1DrawRule, line23DrawRule, line24DrawRule, line26DrawRule, line27DrawRule, listControlMeasureMetadata, normalizeTextAmplifiers, penetrateDrawRule, point12DrawRule, pointOnMidpointPerpendicularAxis, project, rectangleDrawRule, renderControlMeasure, resolveAmplifierPlacement, resolveStyleHints, roundToFixed, snapToMidpointPerpendicular, supportByFireDrawRule, toSimpleStyle, turnDrawRule, unproject };
143
+ export { CONTROL_MEASURE_IDS, CONTROL_MEASURE_METADATA, DEFAULT_AIRBORNE_ATTACK_OPTIONS, DEFAULT_AMBUSH_OPTIONS, DEFAULT_ANTITANK_DITCH_OPTIONS, DEFAULT_ANTITANK_WALL_OPTIONS, DEFAULT_AREA_DEFENSE_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_BRIDGEHEAD_LINE_OPTIONS, DEFAULT_BYPASS_OPTIONS, DEFAULT_CANALIZE_OPTIONS, DEFAULT_CLASSIC_ARROW_OPTIONS, DEFAULT_CLEAR_OPTIONS, DEFAULT_COUNTERATTACK_BY_FIRE_OPTIONS, DEFAULT_COUNTERATTACK_OPTIONS, DEFAULT_COVER_OPTIONS, DEFAULT_DELAY_OPTIONS, DEFAULT_DIRECTION_OF_ATTACK_AVIATION_OPTIONS, DEFAULT_DIRECTION_OF_MAIN_ATTACK_OPTIONS, DEFAULT_DIRECTION_OF_SUPPORTING_ATTACK_OPTIONS, DEFAULT_DISENGAGE_OPTIONS, DEFAULT_DISRUPT_MISSION_TASK_OPTIONS, DEFAULT_DISRUPT_OPTIONS, DEFAULT_ENCIRCLEMENT_OPTIONS, DEFAULT_ENGINEER_WORK_LINE_OPTIONS, DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS, DEFAULT_FIX_MISSION_TASK_OPTIONS, DEFAULT_FIX_OPTIONS, DEFAULT_FLOT_OPTIONS, DEFAULT_FORTIFIED_AREA_OPTIONS, DEFAULT_FORTIFIED_LINE_OPTIONS, DEFAULT_FORWARD_EDGE_OF_BATTLE_AREA_OPTIONS, DEFAULT_FRONTAL_ATTACK_OPTIONS, DEFAULT_GENERIC_C2_LINE_OPTIONS, DEFAULT_GENERIC_CIRCLE_OPTIONS, DEFAULT_GENERIC_LINE_OPTIONS, DEFAULT_GENERIC_POLYGON_OPTIONS, DEFAULT_GENERIC_RECTANGLE_OPTIONS, DEFAULT_GENERIC_TEXT_OPTIONS, DEFAULT_GUARD_OPTIONS, DEFAULT_HANDOVER_LINE_OPTIONS, DEFAULT_HOLDING_LINE_OPTIONS, DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS, DEFAULT_LANDING_ZONE_OPTIONS, DEFAULT_LIGHT_LINE_OPTIONS, DEFAULT_MAIN_ATTACK_OPTIONS, DEFAULT_MINEFIELD_OPTIONS, DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS, DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS, DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS, DEFAULT_PENETRATE_OPTIONS, DEFAULT_PHASE_LINE_OPTIONS, DEFAULT_PICKUP_ZONE_OPTIONS, DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, DEFAULT_REARWARD_PASSAGE_OF_LINES_OPTIONS, DEFAULT_RELEASE_LINE_OPTIONS, DEFAULT_RETIRE_OPTIONS, DEFAULT_SCREEN_OPTIONS, DEFAULT_SECONDARY_DIRECTION_OF_FIRE_OPTIONS, DEFAULT_SEIZE_OPTIONS, DEFAULT_STRONG_POINT_OPTIONS, DEFAULT_SUPPORTING_ATTACK_OPTIONS, DEFAULT_SUPPORT_BY_FIRE_OPTIONS, DEFAULT_TACTICAL_ARROW_OPTIONS, DEFAULT_TURNING_MOVEMENT_OPTIONS, DEFAULT_TURN_OPTIONS, DEFAULT_WITHDRAW_OPTIONS, DEFAULT_WITHDRAW_UNDER_PRESSURE_OPTIONS, EPSILON, SECONDARY_DIRECTION_OF_FIRE_DASH, TEXT_AMPLIFIER_FIELDS, ambushDrawRule, applyBoxTransformOptions, attackByFireDrawRule, axis1DrawRule, blockDrawRule, calculateMetrics, canonicalTextAmplifierKey, centerRadiusDrawRule, cloneControlMeasure, computeDefaultMidpointPerpendicularPoint, computeInitialWidthPoint, controlMeasureIdFromFeature, createBaselineFrame, createMidpointPerpendicularDrawRule, disruptDrawRule, foldsBoxTransformOptions, freezeOrientationOptions, getControlMeasureMetadata, getControlMeasureMetadataByValue, getDefaultOptions, getMetersPerPixel, getMidpointPerpendicularSignedDistance, haversineDistance, isKind, line1DrawRule, line23DrawRule, line24DrawRule, line26DrawRule, line27DrawRule, listControlMeasureMetadata, normalizeTextAmplifiers, penetrateDrawRule, point12DrawRule, pointOnMidpointPerpendicularAxis, project, rectangleDrawRule, renderControlMeasure, resolveAmplifierPlacement, resolveStyleHints, roundToFixed, snapToMidpointPerpendicular, staticPointDrawRule, supportByFireDrawRule, toSimpleStyle, turnDrawRule, unproject };
@@ -1,4 +1,4 @@
1
- import { K as ControlMeasureId, Vr as FillPattern, _i as TextAmplifiers } from "../index-85rqbfeE.mjs";
1
+ import { J as ControlMeasureId, Kr as FillPattern, Si as TextAmplifiers } from "../index-D2Osbvgz.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-CjSKeoV0.mjs";
1
+ import { a as DEFINITIONS, t as renderControlMeasure } from "../renderControlMeasure-DUGzcmdb.mjs";
2
2
  //#region src/preview/index.ts
3
3
  /** Side length (SVG units) of the repeating hatch tile in {@link PREVIEW_FILL_PATTERNS}. */
4
4
  const PREVIEW_PATTERN_TILE = 8;
@@ -80,6 +80,8 @@ const unproject = (x, y) => {
80
80
  lat = 180 / Math.PI * (2 * Math.atan(Math.exp(lat * Math.PI / 180)) - Math.PI / 2);
81
81
  return [roundToFixed(lon), roundToFixed(lat)];
82
82
  };
83
+ /** Unprojects a point in Web Mercator meters back to a GeoJSON position. */
84
+ const toPosition = (point) => unproject(point[0], point[1]);
83
85
  /**
84
86
  * Great-circle distance in meters between two lon/lat positions (haversine on
85
87
  * the WGS84 mean-radius sphere). Accurate at all scales — use this for
@@ -671,6 +673,22 @@ const pointDrawRule = {
671
673
  }
672
674
  };
673
675
  //#endregion
676
+ //#region src/draw-rules/point2.ts
677
+ /**
678
+ * Point2 — a static point symbol whose center is defined by one anchor point.
679
+ * The symbol's size and shape are carried by its options rather than additional
680
+ * control points, so moving the sole anchor translates the complete symbol.
681
+ *
682
+ * Mechanically identical to Point1: it derives from the same single-anchor
683
+ * behaviour and only re-labels it, because a definition's `rule.id` must carry
684
+ * its `metadata.drawRule` as a prefix (see the registry invariant in
685
+ * `__tests__/metadata-registry.spec.ts`, ADR-0013).
686
+ */
687
+ const staticPointDrawRule = {
688
+ ...pointDrawRule,
689
+ id: "point2:static-anchor"
690
+ };
691
+ //#endregion
674
692
  //#region src/draw-rules/area7.ts
675
693
  /**
676
694
  * Area7 anchor draw rule for Attack By Fire.
@@ -2028,6 +2046,10 @@ function normalizeRadians(angle) {
2028
2046
  if (normalized <= -Math.PI) normalized += Math.PI * 2;
2029
2047
  return normalized;
2030
2048
  }
2049
+ /** Wraps a degree value into the canonical clockwise `[0, 360)` range. */
2050
+ function normalizeDegrees(degrees) {
2051
+ return (degrees % 360 + 360) % 360;
2052
+ }
2031
2053
  /**
2032
2054
  * Flips a text rotation by π when it would otherwise read upside-down, keeping
2033
2055
  * the baseline pointing left-to-right (within ±90° of horizontal).
@@ -3463,7 +3485,8 @@ const HORIZONTAL_LABEL_ROTATION = Math.PI;
3463
3485
  const ROW_PITCH_RATIO = 1.2;
3464
3486
  /** Clearance, as a ratio of the resolved label height, added on top of each
3465
3487
  * ENY marker's own half-width/half-height when carving its boundary
3466
- * knockout gap (see {@link pushAreaLabels}). */
3488
+ * knockout gap (see {@link pushHostileMarkers}). Exported so every measure
3489
+ * carving an ENY knockout tunes from one value. */
3467
3490
  const ENY_CLEARANCE_RATIO = .3;
3468
3491
  /** Where within each vertex-latitude band {@link ringLabelAnchor} probes for
3469
3492
  * interior chords — offset samples flank the midpoint so a self-intersection
@@ -3698,50 +3721,32 @@ function ringLabelAnchor(verts) {
3698
3721
  return anchor ?? centroid;
3699
3722
  }
3700
3723
  /**
3701
- * Pushes an area's L-15 text amplifier labels — centered name/H/W-W1 rows and
3702
- * west/east "ENY" edge markers — as `part: "label"` Point features (via
3703
- * {@link pushLabel}), all horizontal ({@link HORIZONTAL_LABEL_ROTATION}), and
3704
- * returns the {@link ArcGap}s (global arc length, matching the vertex walk
3705
- * {@link buildGappedLine} uses) an "ENY" marker knocks out of the boundary —
3706
- * empty unless `texts.hostile` was placed.
3707
- *
3708
- * Rows are `[name (T), additionalInformation (H), dtgStart (W), dtgEnd (W1)]`,
3709
- * filtered to non-empty text, stacked around the ring's {@link ringLabelAnchor}
3710
- * at `pitch = resolveLabelOffsetMeters(options, 1.2 + labelPadding)` (the 50m
3711
- * no-size fallback applies until a live label size is captured — see
3712
- * `capturesLabelSize` — so a transient row overlap is possible right after
3713
- * draw). Row *i* of *n* sits at `[cx, cy + ((n−1)/2 − i)·pitch]`, so the first
3714
- * row (the name) reads topmost.
3715
- *
3716
- * When `texts.hostile` is set, the ring's west/east crossings of the
3717
- * horizontal line through the anchor are found ({@link ringCrossingsAtY});
3718
- * the minimum/maximum-x crossings are the default anchors for the two "ENY"
3719
- * labels. A persisted `label:N:west` / `label:N:east` placement replaces that
3720
- * anchor. Each marker carves a masking {@link ArcGap} at the nearest point on
3721
- * the boundary only while its estimated text box touches the boundary; moving
3722
- * it away restores the line. The gap follows the label around any edge and is
3723
- * sized as the support function of its possibly rotated text box along the
3724
- * contacted edge's own direction `d` (a boundary running vertically there
3725
- * needs roughly the label's height; one running horizontally needs roughly
3726
- * its width):
3727
- * `halfExtent = 0.5 * (textWidth·|d.x| + textHeight·|d.y|) + clearance`, where
3728
- * `textHeight = resolveLabelOffsetMeters(options, 1)`,
3729
- * `textWidth = text.length * LABEL_CHAR_ASPECT_RATIO * textHeight`, and
3730
- * `clearance = (ENY_CLEARANCE_RATIO + labelPadding) * textHeight` — mirroring
3731
- * {@link placeEchelon}'s glyph-width masking gap (ADR-0023). Because the anchor
3732
- * is interior by construction there are normally two crossings; fewer (only a
3733
- * degenerate ring) skips the markers silently rather than guessing their default
3734
- * placements. On a self-intersecting ring the extreme crossings can belong to
3735
- * different lobes than the anchor's, which still reads as the area's west and
3736
- * east edges.
3737
- *
3738
- * A ring with fewer than 2 vertices is degenerate — nothing is placed.
3739
- *
3740
- * `maskBoundary` may supply a different rendered boundary to mask while
3741
- * keeping label placement anchored to `ringVerts`. This is used by Fortified
3742
- * Area, whose labels are centered against its smooth pre-teeth ring while the
3743
- * visible boundary follows a longer castellated trace.
3724
+ * Emits the west/east literal "ENY" markers (Field N) and returns the knockout
3725
+ * gaps they carve in `maskVerts` (ADR-0023). Shared by every measure that
3726
+ * flags a hostile example — closed areas anchor theirs on ring crossings,
3727
+ * Minefield on its frame's side edges — so the masking contract lives in one
3728
+ * place: a marker the user has dragged masks only while its text box still
3729
+ * overlaps the *finite* contacted edge, while an undragged marker always
3730
+ * masks. Callers own the anchors, rotation convention, and clearance.
3744
3731
  */
3732
+ function pushHostileMarkers(out, maskVerts, text, anchors, options, amplifierPlacements) {
3733
+ const { rotation, textHeight, clearance, sizeProps } = options;
3734
+ const textWidth = estimatedTextWidth(text, textHeight);
3735
+ const gaps = [];
3736
+ for (const anchor of anchors) {
3737
+ const labelPlacementKey = `label:N:${anchor.side}`;
3738
+ const placement = resolveAmplifierPlacement(amplifierPlacements?.[labelPlacementKey]);
3739
+ const labelPoint = placement.position ? project(placement.position[0], placement.position[1]) : anchor.point;
3740
+ const boxRotation = placement.rotation ?? rotation;
3741
+ pushLabel(out, labelPoint, text, options.followPlacementRotation ? boxRotation : rotation, sizeProps, void 0, "N", labelPlacementKey);
3742
+ const contact = placement.position !== void 0 || options.rescanDefaultAnchors === true || anchor.contact === void 0 ? nearestPointOnPolyline(maskVerts, labelPoint) : anchor.contact;
3743
+ if (!contact) continue;
3744
+ if (placement.position && !labelBoxIntersectsSegment(labelPoint, ...contact.edge, textWidth, textHeight, boxRotation)) continue;
3745
+ const tangentExtent = labelHalfExtent(contact.along, textWidth, textHeight, boxRotation) + clearance;
3746
+ pushWrappedGap(gaps, contact.arc - tangentExtent, contact.arc + tangentExtent, contact.totalArc);
3747
+ }
3748
+ return gaps;
3749
+ }
3745
3750
  function pushAreaLabels(out, ringVerts, texts, options = {}, amplifierPlacements, maskBoundary) {
3746
3751
  if (ringVerts.length < 2) return [];
3747
3752
  const sizeProps = labelSizeProps(options);
@@ -3763,36 +3768,29 @@ function pushAreaLabels(out, ringVerts, texts, options = {}, amplifierPlacements
3763
3768
  pushLabel(out, [cx, cy + ((rows.length - 1) / 2 - i) * pitch], text, HORIZONTAL_LABEL_ROTATION, sizeProps, void 0, field);
3764
3769
  });
3765
3770
  }
3766
- const gaps = [];
3767
- if (texts.hostile) {
3768
- const { crossings, totalArc } = ringCrossingsAtY(ringVerts, cy);
3769
- if (crossings.length >= 2) {
3770
- const byX = [...crossings].sort((a, b) => a.x - b.x);
3771
- const textHeight = resolveLabelOffsetMeters(options, 1);
3772
- const textWidth = estimatedTextWidth(texts.hostile, textHeight);
3773
- const clearance = (ENY_CLEARANCE_RATIO + padding) * textHeight + Math.max(0, maskBoundary?.extraClearanceMeters ?? 0);
3774
- for (const [side, crossing] of [["west", byX[0]], ["east", byX[byX.length - 1]]]) {
3775
- const labelPlacementKey = `label:N:${side}`;
3776
- const placement = resolveAmplifierPlacement(amplifierPlacements?.[labelPlacementKey]);
3777
- const rotation = placement.rotation ?? HORIZONTAL_LABEL_ROTATION;
3778
- const labelPoint = placement.position ? project(placement.position[0], placement.position[1]) : [crossing.x, cy];
3779
- pushLabel(out, labelPoint, texts.hostile, HORIZONTAL_LABEL_ROTATION, sizeProps, void 0, "N", labelPlacementKey);
3780
- const usesDifferentMaskRing = maskRingVerts !== ringVerts;
3781
- const contact = placement.position || usesDifferentMaskRing ? nearestPointOnPolyline(maskRingVerts, labelPoint) : {
3782
- along: crossing.along,
3783
- arc: crossing.arc,
3784
- distance: 0,
3785
- totalArc,
3786
- edge: crossing.edge
3787
- };
3788
- if (!contact) continue;
3789
- if (placement.position && !labelBoxIntersectsSegment(labelPoint, ...contact.edge, textWidth, textHeight, rotation)) continue;
3790
- const tangentExtent = labelHalfExtent(contact.along, textWidth, textHeight, rotation) + clearance;
3791
- pushWrappedGap(gaps, contact.arc - tangentExtent, contact.arc + tangentExtent, contact.totalArc);
3792
- }
3793
- }
3794
- }
3795
- return gaps;
3771
+ if (!texts.hostile) return [];
3772
+ const { crossings, totalArc } = ringCrossingsAtY(ringVerts, cy);
3773
+ if (crossings.length < 2) return [];
3774
+ const byX = [...crossings].sort((a, b) => a.x - b.x);
3775
+ const anchors = [["west", byX[0]], ["east", byX[byX.length - 1]]].map(([side, crossing]) => ({
3776
+ side,
3777
+ point: [crossing.x, cy],
3778
+ contact: {
3779
+ along: crossing.along,
3780
+ arc: crossing.arc,
3781
+ distance: 0,
3782
+ totalArc,
3783
+ edge: crossing.edge
3784
+ }
3785
+ }));
3786
+ const textHeight = resolveLabelOffsetMeters(options, 1);
3787
+ return pushHostileMarkers(out, maskRingVerts, texts.hostile, anchors, {
3788
+ rotation: HORIZONTAL_LABEL_ROTATION,
3789
+ textHeight,
3790
+ clearance: (ENY_CLEARANCE_RATIO + padding) * textHeight + Math.max(0, maskBoundary?.extraClearanceMeters ?? 0),
3791
+ sizeProps,
3792
+ rescanDefaultAnchors: maskRingVerts !== ringVerts
3793
+ }, amplifierPlacements);
3796
3794
  }
3797
3795
  /**
3798
3796
  * Boundary + fill features for a pattern-filled area (e.g. Limited Access Area,
@@ -4914,28 +4912,29 @@ function generateAntitankDitchTriangles(projectedPoints, toothHeight, toothWidth
4914
4912
  return triangles;
4915
4913
  }
4916
4914
  /**
4917
- * Projects `positions` and, when `options.smooth` is set, curves the result
4918
- * through the control points (centripetal Catmull-Rom) before the teeth are
4919
- * traced — matching Fortified Line's base-path smoothing. Returns the input
4920
- * unchanged (no project/unproject round trip) when smoothing is off.
4915
+ * When `options.smooth` is set, curves the projected control points
4916
+ * (centripetal Catmull-Rom) before the teeth are traced — matching Fortified
4917
+ * Line's base-path smoothing.
4921
4918
  */
4922
- function smoothedDitchBasePath(positions, options) {
4923
- const projectedPoints = positions.map((position) => project(position[0], position[1]));
4919
+ function ditchPaths(projectedPoints, options) {
4924
4920
  const smoothedPath = smoothLineVerts(projectedPoints, options, 16);
4925
4921
  const toothHeight = calculateAntitankDitchHeight(options);
4926
4922
  const toothWidthRatio = Math.max(EPSILON, options.toothWidthRatio ?? DEFAULT_TOOTH_WIDTH_RATIO$1);
4927
- return options.smooth && projectedPoints.length >= 3 ? evenlySpacePath(smoothedPath, toothWidthRatio * toothHeight) : smoothedPath;
4923
+ return {
4924
+ smoothedPath,
4925
+ basePath: options.smooth && projectedPoints.length >= 3 ? evenlySpacePath(smoothedPath, toothWidthRatio * toothHeight) : smoothedPath
4926
+ };
4928
4927
  }
4929
4928
  function buildAntitankDitchTriangles(basePath, options) {
4930
4929
  return generateAntitankDitchTriangles(basePath, calculateAntitankDitchHeight(options), options.toothWidthRatio ?? DEFAULT_TOOTH_WIDTH_RATIO$1);
4931
4930
  }
4932
4931
  function createAntitankDitchUnderConstruction(positions, options = {}, textAmplifiers = {}) {
4933
- const basePath = smoothedDitchBasePath(positions, options);
4932
+ const { smoothedPath, basePath } = ditchPaths(positions.map((position) => project(position[0], position[1])), options);
4934
4933
  const triangles = buildAntitankDitchTriangles(basePath, options);
4935
4934
  const baseLine = options.smooth ? basePath.map((point) => unproject(point[0], point[1])) : positions.map((position) => [position[0], position[1]]);
4936
4935
  const triangleLines = triangles.map((triangle) => triangle.map((point) => unproject(point[0], point[1])));
4937
4936
  const labels = [];
4938
- pushHostileEndLabels(labels, basePath, textAmplifiers.N, options);
4937
+ pushHostileEndLabels(labels, smoothedPath, textAmplifiers.N, options);
4939
4938
  return {
4940
4939
  type: "FeatureCollection",
4941
4940
  features: [{
@@ -4949,12 +4948,12 @@ function createAntitankDitchUnderConstruction(positions, options = {}, textAmpli
4949
4948
  };
4950
4949
  }
4951
4950
  function createAntitankDitchCompleted(positions, options = {}, textAmplifiers = {}) {
4952
- const basePath = smoothedDitchBasePath(positions, options);
4951
+ const { smoothedPath, basePath } = ditchPaths(positions.map((position) => project(position[0], position[1])), options);
4953
4952
  const polygons = buildAntitankDitchTriangles(basePath, options).map((triangle) => {
4954
4953
  return [[...triangle, triangle[0]].map((point) => unproject(point[0], point[1]))];
4955
4954
  });
4956
4955
  const labels = [];
4957
- pushHostileEndLabels(labels, basePath, textAmplifiers.N, options);
4956
+ pushHostileEndLabels(labels, smoothedPath, textAmplifiers.N, options);
4958
4957
  return {
4959
4958
  type: "FeatureCollection",
4960
4959
  features: [{
@@ -5050,10 +5049,9 @@ function createAntitankWall(positions, options = {}, textAmplifiers = {}) {
5050
5049
  const toothSpacingRatio = options.toothSpacingRatio ?? DEFAULT_TOOTH_SPACING_RATIO;
5051
5050
  const projectedPoints = positions.map((position) => project(position[0], position[1]));
5052
5051
  const smoothedPath = smoothLineVerts(projectedPoints, options, 16);
5053
- const basePath = options.smooth && projectedPoints.length >= 3 ? evenlySpacePath(smoothedPath, Math.max(EPSILON, toothWidthRatio) * toothHeight) : smoothedPath;
5054
- const wallLine = generateAntitankWallPoints(basePath, toothHeight, toothWidthRatio, toothSpacingRatio).map((point) => unproject(point[0], point[1]));
5052
+ const wallLine = generateAntitankWallPoints(options.smooth && projectedPoints.length >= 3 ? evenlySpacePath(smoothedPath, Math.max(EPSILON, toothWidthRatio) * toothHeight) : smoothedPath, toothHeight, toothWidthRatio, toothSpacingRatio).map((point) => unproject(point[0], point[1]));
5055
5053
  const labels = [];
5056
- pushHostileEndLabels(labels, basePath, textAmplifiers.N, options);
5054
+ pushHostileEndLabels(labels, smoothedPath, textAmplifiers.N, options);
5057
5055
  return {
5058
5056
  type: "FeatureCollection",
5059
5057
  features: [{
@@ -6583,10 +6581,6 @@ const GENERIC_C2_LINE = defineControlMeasure({
6583
6581
  });
6584
6582
  //#endregion
6585
6583
  //#region src/generators/cm34-mission-tasks/shared.ts
6586
- /** Unprojects a point in Web Mercator meters back to a GeoJSON position. */
6587
- function toPosition(point) {
6588
- return unproject(point[0], point[1]);
6589
- }
6590
6584
  /**
6591
6585
  * Builds an open chevron arrowhead (left → tip → right) as unprojected
6592
6586
  * coordinates. The tip sits at `tip`, pointing along `dir`, with the base set
@@ -7412,7 +7406,7 @@ const FILLED_AREA_PARAMS = [{
7412
7406
  }];
7413
7407
  //#endregion
7414
7408
  //#region src/generators/cm99-generic-graphics/circle.ts
7415
- const CIRCLE_SEGMENTS = 64;
7409
+ const CIRCLE_SEGMENTS$1 = 64;
7416
7410
  const MAX_SEGMENT_ANGLE = 6;
7417
7411
  const MAX_SUBDIVISION_DEPTH = 5;
7418
7412
  /**
@@ -7471,8 +7465,8 @@ function createGenericCircle(coordinates, options = {}) {
7471
7465
  const ring = [];
7472
7466
  let previousBearing = startBearing;
7473
7467
  let previousPoint = destinationPoint(center, radius, previousBearing);
7474
- for (let index = 1; index <= CIRCLE_SEGMENTS; index++) {
7475
- const bearing = startBearing - index / CIRCLE_SEGMENTS * 2 * Math.PI;
7468
+ for (let index = 1; index <= CIRCLE_SEGMENTS$1; index++) {
7469
+ const bearing = startBearing - index / CIRCLE_SEGMENTS$1 * 2 * Math.PI;
7476
7470
  const point = destinationPoint(center, radius, bearing);
7477
7471
  densifySegment(center, radius, previousBearing, previousPoint, bearing, point, 0, ring);
7478
7472
  previousBearing = bearing;
@@ -7722,10 +7716,6 @@ const GENERIC_RECTANGLE = defineControlMeasure({
7722
7716
  });
7723
7717
  //#endregion
7724
7718
  //#region src/generators/cm99-generic-graphics/text.ts
7725
- /** Wrap a degree value into the canonical clockwise `[0, 360)` range. */
7726
- function normalizeDegrees(degrees) {
7727
- return (degrees % 360 + 360) % 360;
7728
- }
7729
7719
  const DEFAULT_GENERIC_TEXT_OPTIONS = {
7730
7720
  text: "Text",
7731
7721
  textAlign: "center",
@@ -10349,7 +10339,7 @@ function createFLOT(positions, options = {}, textAmplifiers = {}) {
10349
10339
  }
10350
10340
  };
10351
10341
  const labels = [];
10352
- pushHostileEndLabels(labels, allPoints, textAmplifiers.N, options);
10342
+ pushHostileEndLabels(labels, smoothedPath, textAmplifiers.N, options);
10353
10343
  return {
10354
10344
  type: "FeatureCollection",
10355
10345
  features: [feature, ...labels]
@@ -11028,17 +11018,17 @@ function createFortifiedLine(positions, options = {}, textAmplifiers = {}) {
11028
11018
  const { smooth = DEFAULT_FORTIFIED_LINE_OPTIONS.smooth, smoothResolution = DEFAULT_FORTIFIED_LINE_OPTIONS.smoothResolution } = options;
11029
11019
  const safeSize = calculateEffectiveSize(options);
11030
11020
  const projectedPoints = positions.map((p) => project(p[0], p[1]));
11031
- const allPoints = generateFortifiedPoints(smooth ? evenlySpacePath(catmullRom(projectedPoints, normalizeSmoothResolution$2(smoothResolution, DEFAULT_SMOOTH_RESOLUTION$1)), 2 * safeSize) : projectedPoints, safeSize);
11021
+ const smoothedPath = smooth ? catmullRom(projectedPoints, normalizeSmoothResolution$2(smoothResolution, DEFAULT_SMOOTH_RESOLUTION$1)) : projectedPoints;
11032
11022
  const feature = {
11033
11023
  type: "Feature",
11034
11024
  properties: {},
11035
11025
  geometry: {
11036
11026
  type: "LineString",
11037
- coordinates: allPoints.map((p) => unproject(p[0], p[1]))
11027
+ coordinates: generateFortifiedPoints(smooth ? evenlySpacePath(smoothedPath, 2 * safeSize) : smoothedPath, safeSize).map((p) => unproject(p[0], p[1]))
11038
11028
  }
11039
11029
  };
11040
11030
  const labels = [];
11041
- pushHostileEndLabels(labels, allPoints, textAmplifiers.N, options);
11031
+ pushHostileEndLabels(labels, smoothedPath, textAmplifiers.N, options);
11042
11032
  return {
11043
11033
  type: "FeatureCollection",
11044
11034
  features: [feature, ...labels]
@@ -12374,6 +12364,294 @@ const MAIN_ATTACK = defineControlMeasure({
12374
12364
  rule: axis1DrawRule
12375
12365
  });
12376
12366
  //#endregion
12367
+ //#region src/generators/cm27-protection-areas/minefield.ts
12368
+ const DEFAULT_MINEFIELD_OPTIONS = {
12369
+ mineType: "unspecified",
12370
+ sizePixels: 32,
12371
+ rotation: 0
12372
+ };
12373
+ /** Pure-render fallback when a pixel default is used without adapter resolution. */
12374
+ const DEFAULT_MINEFIELD_SIZE_METERS = 1e3;
12375
+ const MINEFIELD_METADATA = {
12376
+ id: "minefield",
12377
+ name: "Minefield",
12378
+ description: "A static point symbol identifying a minefield and its mine type.",
12379
+ entity: "Protection Areas",
12380
+ entityType: "Minefield",
12381
+ entitySubtype: "Minefield",
12382
+ value: "270701",
12383
+ minCoordinates: 1,
12384
+ maxCoordinates: 1,
12385
+ geometry: "point",
12386
+ geometryTypes: [
12387
+ "LineString",
12388
+ "MultiLineString",
12389
+ "MultiPolygon",
12390
+ "Point"
12391
+ ],
12392
+ paints: {
12393
+ stroke: true,
12394
+ fill: "fixed",
12395
+ text: true
12396
+ },
12397
+ drawRule: "Point2",
12398
+ params: [
12399
+ {
12400
+ key: "mineType",
12401
+ label: "Mine type",
12402
+ description: "Modifier 1 (symbol set 25 values 13–18).",
12403
+ type: "enum",
12404
+ options: [
12405
+ {
12406
+ label: "Unspecified mine (13)",
12407
+ value: "unspecified"
12408
+ },
12409
+ {
12410
+ label: "Antipersonnel mine (14)",
12411
+ value: "antipersonnel"
12412
+ },
12413
+ {
12414
+ label: "Antipersonnel mine with directional effects (15)",
12415
+ value: "antipersonnel-directional"
12416
+ },
12417
+ {
12418
+ label: "Antitank mine (16)",
12419
+ value: "antitank"
12420
+ },
12421
+ {
12422
+ label: "Antitank mine with antihandling device (17)",
12423
+ value: "antitank-antihandling"
12424
+ },
12425
+ {
12426
+ label: "Wide area antitank mine (18)",
12427
+ value: "wide-area-antitank"
12428
+ }
12429
+ ]
12430
+ },
12431
+ {
12432
+ key: "sizeMeters",
12433
+ label: "Size",
12434
+ description: "Overall width of the static symbol.",
12435
+ type: "number",
12436
+ min: 10,
12437
+ max: 1e5,
12438
+ step: 10,
12439
+ unit: "m"
12440
+ },
12441
+ {
12442
+ key: "rotation",
12443
+ label: "Rotation",
12444
+ description: "Clockwise rotation of the static symbol.",
12445
+ type: "number",
12446
+ min: 0,
12447
+ max: 360,
12448
+ step: 1,
12449
+ unit: "°"
12450
+ }
12451
+ ],
12452
+ textAmplifiers: [
12453
+ {
12454
+ ...AREA_HOSTILE_AMPLIFIER,
12455
+ description: "Field N — literal \"ENY\" marker at the minefield's west and east sides."
12456
+ },
12457
+ {
12458
+ key: "H",
12459
+ label: "Additional information",
12460
+ description: "Field H — additional information shown above the minefield.",
12461
+ placeholder: "+S",
12462
+ maxLength: 20
12463
+ },
12464
+ {
12465
+ key: "W",
12466
+ label: "Date-time group",
12467
+ description: "Field W — date-time group shown below the minefield.",
12468
+ placeholder: "032400ZJUL2007",
12469
+ maxLength: 16
12470
+ }
12471
+ ]
12472
+ };
12473
+ const CIRCLE_SEGMENTS = 32;
12474
+ const FRAME_HEIGHT_RATIO = .48;
12475
+ const MINE_RADIUS_RATIO = .075;
12476
+ const LABEL_SIZE_RATIO = .14;
12477
+ const LABEL_CLEARANCE_RATIO = .11;
12478
+ /** Unit-circle offsets, built once — a mine ring is rotation-invariant. */
12479
+ const UNIT_CIRCLE = Array.from({ length: CIRCLE_SEGMENTS }, (_, index) => {
12480
+ const angle = index / CIRCLE_SEGMENTS * Math.PI * 2;
12481
+ return [Math.cos(angle), Math.sin(angle)];
12482
+ });
12483
+ /** Closes a ring in place by repeating its first vertex, avoiding a re-unproject. */
12484
+ function closeRing(ring) {
12485
+ ring.push(ring[0]);
12486
+ return ring;
12487
+ }
12488
+ /** A closed ring of `CIRCLE_SEGMENTS + 1` positions, the last repeating the first. */
12489
+ function circleRing(center, radius) {
12490
+ return closeRing(UNIT_CIRCLE.map(([x, y]) => toPosition(vecAdd(center, [x * radius, y * radius]))));
12491
+ }
12492
+ function line(points) {
12493
+ return points.map(toPosition);
12494
+ }
12495
+ /** Creates the frame and three Modifier 1 mine glyphs around the center anchor. */
12496
+ function createMinefield(coordinates, options = {}, textAmplifiers = {}, context = {}) {
12497
+ const anchor = coordinates[0];
12498
+ const center = project(anchor[0], anchor[1]);
12499
+ const mineType = options.mineType ?? DEFAULT_MINEFIELD_OPTIONS.mineType;
12500
+ const rotation = (options.rotation ?? DEFAULT_MINEFIELD_OPTIONS.rotation) * Math.PI / 180;
12501
+ const cosRotation = Math.cos(rotation);
12502
+ const sinRotation = Math.sin(rotation);
12503
+ const offset = (origin, x, y) => vecAdd(origin, [x * cosRotation + y * sinRotation, -x * sinRotation + y * cosRotation]);
12504
+ const pixelSize = options.sizePixels ?? (options.sizeMeters === void 0 ? DEFAULT_MINEFIELD_OPTIONS.sizePixels : void 0);
12505
+ const width = pixelSize !== void 0 && options.metersPerPixel !== void 0 && options.metersPerPixel > 0 ? pixelSize * options.metersPerPixel : options.sizeMeters ?? DEFAULT_MINEFIELD_SIZE_METERS;
12506
+ if (!Number.isFinite(width) || width <= 0) return {
12507
+ type: "FeatureCollection",
12508
+ features: []
12509
+ };
12510
+ const height = width * FRAME_HEIGHT_RATIO;
12511
+ const radius = width * MINE_RADIUS_RATIO;
12512
+ const mineCenters = [
12513
+ -.25,
12514
+ 0,
12515
+ .25
12516
+ ].map((ratio) => offset(center, width * ratio, 0));
12517
+ const halfWidth = width / 2;
12518
+ const halfHeight = height / 2;
12519
+ const frameVerts = [
12520
+ offset(center, -halfWidth, -halfHeight),
12521
+ offset(center, -halfWidth, halfHeight),
12522
+ offset(center, halfWidth, halfHeight),
12523
+ offset(center, halfWidth, -halfHeight)
12524
+ ];
12525
+ const frameRing = closeRing([...frameVerts]);
12526
+ const labelRotation = HORIZONTAL_LABEL_ROTATION - rotation;
12527
+ const labelSize = width * LABEL_SIZE_RATIO;
12528
+ const sizeProps = { textSizeMeters: labelSize };
12529
+ const labelFeatures = [];
12530
+ let frameGaps = [];
12531
+ if (textAmplifiers.H) pushLabel(labelFeatures, offset(center, 0, halfHeight + width * LABEL_CLEARANCE_RATIO), textAmplifiers.H, labelRotation, sizeProps, void 0, "H");
12532
+ if (textAmplifiers.N) frameGaps = pushHostileMarkers(labelFeatures, frameRing, textAmplifiers.N, [{
12533
+ side: "west",
12534
+ point: offset(center, -halfWidth, 0)
12535
+ }, {
12536
+ side: "east",
12537
+ point: offset(center, halfWidth, 0)
12538
+ }], {
12539
+ rotation: labelRotation,
12540
+ textHeight: labelSize,
12541
+ clearance: ENY_CLEARANCE_RATIO * labelSize,
12542
+ sizeProps,
12543
+ followPlacementRotation: true
12544
+ }, context.amplifierPlacements);
12545
+ if (textAmplifiers.W) pushLabel(labelFeatures, offset(center, 0, -halfHeight - width * LABEL_CLEARANCE_RATIO), textAmplifiers.W, labelRotation, sizeProps, void 0, "W");
12546
+ const features = [{
12547
+ type: "Feature",
12548
+ properties: { part: "frame" },
12549
+ geometry: frameGaps.length > 0 ? {
12550
+ type: "MultiLineString",
12551
+ coordinates: buildGappedLine(frameRing, frameGaps)
12552
+ } : {
12553
+ type: "LineString",
12554
+ coordinates: closeRing(line(frameVerts))
12555
+ }
12556
+ }, ...labelFeatures];
12557
+ const circles = mineCenters.map((mineCenter) => circleRing(mineCenter, radius));
12558
+ if (mineType === "unspecified") {
12559
+ features.push({
12560
+ type: "Feature",
12561
+ properties: { part: "mines" },
12562
+ geometry: {
12563
+ type: "MultiLineString",
12564
+ coordinates: circles
12565
+ }
12566
+ });
12567
+ return {
12568
+ type: "FeatureCollection",
12569
+ features
12570
+ };
12571
+ }
12572
+ const filledRings = circles.map((ring) => [ring]);
12573
+ const details = [];
12574
+ if (mineType === "antipersonnel" || mineType === "antipersonnel-directional") for (const mineCenter of mineCenters) details.push(line([offset(mineCenter, -radius * .55, radius * .7), offset(mineCenter, -radius * 1.35, radius * 1.55)]), line([offset(mineCenter, radius * .55, radius * .7), offset(mineCenter, radius * 1.35, radius * 1.55)]));
12575
+ if (mineType === "antipersonnel-directional") for (const mineCenter of mineCenters) {
12576
+ const shaftEnd = offset(mineCenter, radius * 1.45, 0);
12577
+ const tip = offset(mineCenter, radius * 1.9, 0);
12578
+ details.push(line([offset(mineCenter, radius * .75, 0), shaftEnd]));
12579
+ filledRings.push([closeRing(line([
12580
+ tip,
12581
+ offset(shaftEnd, 0, radius * .25),
12582
+ offset(shaftEnd, 0, -radius * .25)
12583
+ ]))]);
12584
+ }
12585
+ if (mineType === "antitank-antihandling") for (const mineCenter of mineCenters) details.push(line([
12586
+ offset(mineCenter, 0, -radius * .75),
12587
+ offset(mineCenter, 0, -radius * 1.75),
12588
+ offset(mineCenter, radius * .4, -radius * 1.45)
12589
+ ]));
12590
+ if (mineType === "wide-area-antitank") {
12591
+ const touchX = radius * .55;
12592
+ const touchY = -Math.sqrt(radius * radius - touchX * touchX);
12593
+ const troughX = radius * 1.05;
12594
+ const troughY = -radius * 1.45;
12595
+ const outerX = radius * 1.45;
12596
+ const peakY = -radius * .8;
12597
+ for (const mineCenter of mineCenters) details.push(line([
12598
+ offset(mineCenter, -outerX, peakY),
12599
+ offset(mineCenter, -troughX, troughY),
12600
+ offset(mineCenter, -touchX, touchY)
12601
+ ]), line([
12602
+ offset(mineCenter, touchX, touchY),
12603
+ offset(mineCenter, troughX, troughY),
12604
+ offset(mineCenter, outerX, peakY)
12605
+ ]));
12606
+ }
12607
+ features.push({
12608
+ type: "Feature",
12609
+ properties: {
12610
+ part: "mine-fill",
12611
+ fill: true,
12612
+ style: SOLID_ACCENT_FILL
12613
+ },
12614
+ geometry: {
12615
+ type: "MultiPolygon",
12616
+ coordinates: filledRings
12617
+ }
12618
+ });
12619
+ if (details.length > 0) features.push({
12620
+ type: "Feature",
12621
+ properties: { part: "mine-details" },
12622
+ geometry: {
12623
+ type: "MultiLineString",
12624
+ coordinates: details
12625
+ }
12626
+ });
12627
+ return {
12628
+ type: "FeatureCollection",
12629
+ features
12630
+ };
12631
+ }
12632
+ const MINEFIELD = defineControlMeasure({
12633
+ metadata: MINEFIELD_METADATA,
12634
+ generator: createMinefield,
12635
+ defaultOptions: DEFAULT_MINEFIELD_OPTIONS,
12636
+ rule: staticPointDrawRule,
12637
+ transformOptions(options, { scale, rotationRadians }) {
12638
+ const patch = {};
12639
+ if (scale !== 1 && Number.isFinite(scale) && scale > 0) if (options.sizePixels !== void 0 || options.sizeMeters === void 0) patch.sizePixels = (options.sizePixels ?? DEFAULT_MINEFIELD_OPTIONS.sizePixels) * scale;
12640
+ else patch.sizeMeters = options.sizeMeters * scale;
12641
+ if (rotationRadians !== 0 && Number.isFinite(rotationRadians)) patch.rotation = normalizeDegrees((options.rotation ?? DEFAULT_MINEFIELD_OPTIONS.rotation) + rotationRadians * 180 / Math.PI);
12642
+ return Object.keys(patch).length > 0 ? patch : void 0;
12643
+ },
12644
+ previewSample: {
12645
+ controlPoints: [[0, 0]],
12646
+ options: { sizeMeters: 1e3 },
12647
+ textAmplifiers: {
12648
+ H: "+S",
12649
+ N: "ENY",
12650
+ W: "032400ZJUL2007"
12651
+ }
12652
+ }
12653
+ });
12654
+ //#endregion
12377
12655
  //#region src/generators/cm27-protection-areas/params.ts
12378
12656
  const OBSTACLE_BYPASS_PARAMS = [
12379
12657
  {
@@ -13909,6 +14187,7 @@ const DEFINITIONS = {
13909
14187
  fix: FIX,
13910
14188
  "fix-mission-task": FIX_MISSION_TASK,
13911
14189
  turn: TURN,
14190
+ minefield: MINEFIELD,
13912
14191
  "obstacle-bypass-easy": OBSTACLE_BYPASS_EASY,
13913
14192
  "obstacle-bypass-difficult": OBSTACLE_BYPASS_DIFFICULT,
13914
14193
  "obstacle-bypass-impossible": OBSTACLE_BYPASS_IMPOSSIBLE
@@ -14275,4 +14554,4 @@ function assertNever(value) {
14275
14554
  throw new Error(`Unhandled control measure kind: ${String(value)}`);
14276
14555
  }
14277
14556
  //#endregion
14278
- export { DEFAULT_COUNTERATTACK_BY_FIRE_OPTIONS as $, createMidpointPerpendicularDrawRule as $t, DEFAULT_PENETRATE_OPTIONS as A, TEXT_AMPLIFIER_FIELDS as At, DEFAULT_PHASE_LINE_OPTIONS as B, line26DrawRule as Bt, DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS as C, DEFAULT_ANTITANK_DITCH_OPTIONS as Ct, DEFAULT_SCREEN_OPTIONS as D, DEFAULT_DIRECTION_OF_SUPPORTING_ATTACK_OPTIONS as Dt, DEFAULT_SEIZE_OPTIONS as E, DEFAULT_AREA_DEFENSE_OPTIONS as Et, DEFAULT_HANDOVER_LINE_OPTIONS as F, DEFAULT_AIRBORNE_ATTACK_OPTIONS as Ft, DEFAULT_ENCIRCLEMENT_OPTIONS as G, ambushDrawRule as Gt, DEFAULT_FIX_MISSION_TASK_OPTIONS as H, line23DrawRule as Ht, DEFAULT_FORWARD_EDGE_OF_BATTLE_AREA_OPTIONS as I, rectangleDrawRule as It, DEFAULT_DISRUPT_MISSION_TASK_OPTIONS as J, penetrateDrawRule as Jt, DEFAULT_DISRUPT_OPTIONS as K, attackByFireDrawRule as Kt, DEFAULT_RELEASE_LINE_OPTIONS as L, axis1DrawRule as Lt, DEFAULT_FORTIFIED_AREA_OPTIONS as M, normalizeTextAmplifiers as Mt, DEFAULT_FORTIFIED_LINE_OPTIONS as N, resolveAmplifierPlacement as Nt, DEFAULT_RETIRE_OPTIONS as O, DEFAULT_DIRECTION_OF_MAIN_ATTACK_OPTIONS as Ot, DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS as P, DEFAULT_AMBUSH_OPTIONS as Pt, DEFAULT_TACTICAL_ARROW_OPTIONS as Q, computeDefaultMidpointPerpendicularPoint as Qt, DEFAULT_HOLDING_LINE_OPTIONS as R, supportByFireDrawRule as Rt, DEFAULT_LANDING_ZONE_OPTIONS as S, DEFAULT_ANTITANK_WALL_OPTIONS as St, DEFAULT_WITHDRAW_OPTIONS as T, DEFAULT_AREA_OF_OPERATIONS_OPTIONS as Tt, DEFAULT_FIX_OPTIONS as U, turnDrawRule as Ut, DEFAULT_FLOT_OPTIONS as V, line24DrawRule as Vt, DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS as W, line1DrawRule as Wt, DEFAULT_DELAY_OPTIONS as X, disruptDrawRule as Xt, DEFAULT_DISENGAGE_OPTIONS as Y, centerRadiusDrawRule as Yt, DEFAULT_COVER_OPTIONS as Z, blockDrawRule as Zt, DEFAULT_PICKUP_ZONE_OPTIONS as _, DEFAULT_BLOCK_ARROW_OPTIONS as _t, DEFINITIONS as a, computeInitialWidthPoint as an, DEFAULT_GENERIC_POLYGON_OPTIONS as at, DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS as b, DEFAULT_ATTACK_HELICOPTER_OPTIONS as bt, getDefaultOptions as c, unproject as cn, DEFAULT_CLASSIC_ARROW_OPTIONS as ct, DEFAULT_TURN_OPTIONS as d, roundToFixed as dn, DEFAULT_BREACH_OPTIONS as dt, getMidpointPerpendicularSignedDistance as en, DEFAULT_COUNTERATTACK_OPTIONS as et, DEFAULT_SUPPORT_BY_FIRE_OPTIONS as f, DEFAULT_BLOCK_MISSION_TASK_OPTIONS as ft, DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS as g, DEFAULT_BOUNDARY_OPTIONS as gt, SECONDARY_DIRECTION_OF_FIRE_DASH as h, DEFAULT_LIGHT_LINE_OPTIONS as ht, CONTROL_MEASURE_METADATA as i, calculateMetrics as in, DEFAULT_GENERIC_RECTANGLE_OPTIONS as it, DEFAULT_FRONTAL_ATTACK_OPTIONS as j, canonicalTextAmplifierKey as jt, DEFAULT_REARWARD_PASSAGE_OF_LINES_OPTIONS as k, DEFAULT_DIRECTION_OF_ATTACK_AVIATION_OPTIONS as kt, listControlMeasureMetadata as l, EPSILON as ln, DEFAULT_CANALIZE_OPTIONS as lt, DEFAULT_SECONDARY_DIRECTION_OF_FIRE_OPTIONS as m, DEFAULT_ENGINEER_WORK_LINE_OPTIONS as mt, resolveStyleHints as n, snapToMidpointPerpendicular as nn, DEFAULT_CLEAR_OPTIONS as nt, getControlMeasureMetadata as o, haversineDistance as on, DEFAULT_GENERIC_LINE_OPTIONS as ot, DEFAULT_STRONG_POINT_OPTIONS as p, DEFAULT_GENERIC_C2_LINE_OPTIONS as pt, DEFAULT_GUARD_OPTIONS as q, point12DrawRule as qt, CONTROL_MEASURE_IDS as r, createBaselineFrame as rn, DEFAULT_GENERIC_TEXT_OPTIONS as rt, getControlMeasureMetadataByValue as s, project as sn, DEFAULT_GENERIC_CIRCLE_OPTIONS as st, renderControlMeasure as t, pointOnMidpointPerpendicularAxis as tn, DEFAULT_SUPPORTING_ATTACK_OPTIONS as tt, DEFAULT_TURNING_MOVEMENT_OPTIONS as u, getMetersPerPixel as un, DEFAULT_BYPASS_OPTIONS as ut, DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS as v, DEFAULT_BLOCK_OPTIONS as vt, DEFAULT_WITHDRAW_UNDER_PRESSURE_OPTIONS as w, DEFAULT_ASSEMBLY_AREA_OPTIONS as wt, DEFAULT_MAIN_ATTACK_OPTIONS as x, DEFAULT_ATTACK_BY_FIRE_OPTIONS as xt, DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS as y, DEFAULT_BATTLE_POSITION_OPTIONS as yt, DEFAULT_BRIDGEHEAD_LINE_OPTIONS as z, line27DrawRule as zt };
14557
+ export { DEFAULT_TACTICAL_ARROW_OPTIONS as $, blockDrawRule as $t, DEFAULT_REARWARD_PASSAGE_OF_LINES_OPTIONS as A, DEFAULT_DIRECTION_OF_ATTACK_AVIATION_OPTIONS as At, DEFAULT_BRIDGEHEAD_LINE_OPTIONS as B, line27DrawRule as Bt, DEFAULT_LANDING_ZONE_OPTIONS as C, DEFAULT_ANTITANK_WALL_OPTIONS as Ct, DEFAULT_SEIZE_OPTIONS as D, DEFAULT_AREA_DEFENSE_OPTIONS as Dt, DEFAULT_WITHDRAW_OPTIONS as E, DEFAULT_AREA_OF_OPERATIONS_OPTIONS as Et, DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS as F, DEFAULT_AMBUSH_OPTIONS as Ft, DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS as G, line1DrawRule as Gt, DEFAULT_FLOT_OPTIONS as H, line24DrawRule as Ht, DEFAULT_HANDOVER_LINE_OPTIONS as I, DEFAULT_AIRBORNE_ATTACK_OPTIONS as It, DEFAULT_GUARD_OPTIONS as J, staticPointDrawRule as Jt, DEFAULT_ENCIRCLEMENT_OPTIONS as K, ambushDrawRule as Kt, DEFAULT_FORWARD_EDGE_OF_BATTLE_AREA_OPTIONS as L, rectangleDrawRule as Lt, DEFAULT_FRONTAL_ATTACK_OPTIONS as M, canonicalTextAmplifierKey as Mt, DEFAULT_FORTIFIED_AREA_OPTIONS as N, normalizeTextAmplifiers as Nt, DEFAULT_SCREEN_OPTIONS as O, DEFAULT_DIRECTION_OF_SUPPORTING_ATTACK_OPTIONS as Ot, DEFAULT_FORTIFIED_LINE_OPTIONS as P, resolveAmplifierPlacement as Pt, DEFAULT_COVER_OPTIONS as Q, disruptDrawRule as Qt, DEFAULT_RELEASE_LINE_OPTIONS as R, axis1DrawRule as Rt, DEFAULT_MAIN_ATTACK_OPTIONS as S, DEFAULT_ATTACK_BY_FIRE_OPTIONS as St, DEFAULT_WITHDRAW_UNDER_PRESSURE_OPTIONS as T, DEFAULT_ASSEMBLY_AREA_OPTIONS as Tt, DEFAULT_FIX_MISSION_TASK_OPTIONS as U, line23DrawRule as Ut, DEFAULT_PHASE_LINE_OPTIONS as V, line26DrawRule as Vt, DEFAULT_FIX_OPTIONS as W, turnDrawRule as Wt, DEFAULT_DISENGAGE_OPTIONS as X, penetrateDrawRule as Xt, DEFAULT_DISRUPT_MISSION_TASK_OPTIONS as Y, point12DrawRule as Yt, DEFAULT_DELAY_OPTIONS as Z, centerRadiusDrawRule as Zt, DEFAULT_PICKUP_ZONE_OPTIONS as _, DEFAULT_BOUNDARY_OPTIONS as _t, DEFINITIONS as a, createBaselineFrame as an, DEFAULT_GENERIC_RECTANGLE_OPTIONS as at, DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS as b, DEFAULT_BATTLE_POSITION_OPTIONS as bt, getDefaultOptions as c, haversineDistance as cn, DEFAULT_GENERIC_CIRCLE_OPTIONS as ct, DEFAULT_TURN_OPTIONS as d, EPSILON as dn, DEFAULT_BYPASS_OPTIONS as dt, computeDefaultMidpointPerpendicularPoint as en, DEFAULT_COUNTERATTACK_BY_FIRE_OPTIONS as et, DEFAULT_SUPPORT_BY_FIRE_OPTIONS as f, getMetersPerPixel as fn, DEFAULT_BREACH_OPTIONS as ft, DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS as g, DEFAULT_LIGHT_LINE_OPTIONS as gt, SECONDARY_DIRECTION_OF_FIRE_DASH as h, DEFAULT_ENGINEER_WORK_LINE_OPTIONS as ht, CONTROL_MEASURE_METADATA as i, snapToMidpointPerpendicular as in, DEFAULT_GENERIC_TEXT_OPTIONS as it, DEFAULT_PENETRATE_OPTIONS as j, TEXT_AMPLIFIER_FIELDS as jt, DEFAULT_RETIRE_OPTIONS as k, DEFAULT_DIRECTION_OF_MAIN_ATTACK_OPTIONS as kt, listControlMeasureMetadata as l, project as ln, DEFAULT_CLASSIC_ARROW_OPTIONS as lt, DEFAULT_SECONDARY_DIRECTION_OF_FIRE_OPTIONS as m, DEFAULT_GENERIC_C2_LINE_OPTIONS as mt, resolveStyleHints as n, getMidpointPerpendicularSignedDistance as nn, DEFAULT_SUPPORTING_ATTACK_OPTIONS as nt, getControlMeasureMetadata as o, calculateMetrics as on, DEFAULT_GENERIC_POLYGON_OPTIONS as ot, DEFAULT_STRONG_POINT_OPTIONS as p, roundToFixed as pn, DEFAULT_BLOCK_MISSION_TASK_OPTIONS as pt, DEFAULT_DISRUPT_OPTIONS as q, attackByFireDrawRule as qt, CONTROL_MEASURE_IDS as r, pointOnMidpointPerpendicularAxis as rn, DEFAULT_CLEAR_OPTIONS as rt, getControlMeasureMetadataByValue as s, computeInitialWidthPoint as sn, DEFAULT_GENERIC_LINE_OPTIONS as st, renderControlMeasure as t, createMidpointPerpendicularDrawRule as tn, DEFAULT_COUNTERATTACK_OPTIONS as tt, DEFAULT_TURNING_MOVEMENT_OPTIONS as u, unproject as un, DEFAULT_CANALIZE_OPTIONS as ut, DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS as v, DEFAULT_BLOCK_ARROW_OPTIONS as vt, DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS as w, DEFAULT_ANTITANK_DITCH_OPTIONS as wt, DEFAULT_MINEFIELD_OPTIONS as x, DEFAULT_ATTACK_HELICOPTER_OPTIONS as xt, DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS as y, DEFAULT_BLOCK_OPTIONS as yt, DEFAULT_HOLDING_LINE_OPTIONS as z, supportByFireDrawRule as zt };
@@ -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="Bridgehead line"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M5.00 26.22 L91.00 26.22" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><g transform="rotate(0.000 7.227 21.777)"><text x="7.227399999999998" y="21.7769" fill="#1e293b" font-family="sans-serif" font-size="7.416457060725835" font-weight="600" text-anchor="start" dominant-baseline="central">BL</text></g><g transform="rotate(0.000 88.773 21.777)"><text x="88.7726" y="21.7769" fill="#1e293b" font-family="sans-serif" font-size="7.416457060725835" font-weight="600" text-anchor="end" dominant-baseline="central">BL</text></g></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="Disengage"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M5.59 38.93 L27.30 38.93" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M51.73 38.93 L73.45 38.93" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M13.73 43.00 L5.59 38.93 L13.73 34.86" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M73.45 38.93 L75.11 38.85 L76.76 38.60 L78.37 38.20 L79.94 37.64 L81.44 36.93 L82.87 36.07 L84.21 35.08 L85.44 33.96 L86.56 32.73 L87.55 31.39 L88.41 29.96 L89.12 28.46 L89.68 26.89 L90.09 25.28 L90.33 23.63 L90.41 21.96 L90.33 20.30 L90.09 18.65 L89.68 17.04 L89.12 15.47 L88.41 13.97 L87.55 12.54 L86.56 11.20 L85.44 9.97 L84.21 8.85 L82.87 7.86 L81.44 7.00 L79.94 6.29 L78.37 5.73 L76.76 5.33 L75.11 5.08 L73.45 5.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><g transform="rotate(0.000 39.518 38.929)"><text x="39.51785714285714" y="38.92857142857143" fill="#1e293b" font-family="sans-serif" font-size="11" font-weight="600" text-anchor="middle" dominant-baseline="central">DIS</text></g></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="Disrupt"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M30.19 8.17 L30.19 39.83" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M30.19 8.17 L77.69 8.17" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M72.94 5.00 L77.69 8.17 L72.94 11.33" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M18.31 24.00 L40.88 24.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M50.38 24.00 L61.06 24.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M56.31 20.83 L61.06 24.00 L56.31 27.17" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M30.19 39.83 L51.56 39.83" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M46.81 36.67 L51.56 39.83 L46.81 43.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><g transform="rotate(0.000 45.625 24.000)"><text x="45.625" y="24" fill="#1e293b" font-family="sans-serif" font-size="11" font-weight="600" text-anchor="middle" dominant-baseline="central">D</text></g></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="Holding line"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M5.00 26.22 L91.00 26.22" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><g transform="rotate(0.000 7.227 21.777)"><text x="7.227399999999998" y="21.7769" fill="#1e293b" font-family="sans-serif" font-size="7.416457060725835" font-weight="600" text-anchor="start" dominant-baseline="central">HL</text></g><g transform="rotate(0.000 88.773 21.777)"><text x="88.7726" y="21.7769" fill="#1e293b" font-family="sans-serif" font-size="7.416457060725835" font-weight="600" text-anchor="end" dominant-baseline="central">HL</text></g></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="Penetrate"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M76.50 5.00 L76.50 43.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M19.50 24.00 L42.30 24.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M53.70 24.00 L76.50 24.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M70.80 20.20 L76.50 24.00 L70.80 27.80" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><g transform="rotate(0.000 48.000 24.000)"><text x="48" y="24" fill="#1e293b" font-family="sans-serif" font-size="11" font-weight="600" text-anchor="middle" dominant-baseline="central">P</text></g></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="Rearward Passage of Lines"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M5.59 38.93 L25.27 38.93" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M53.77 38.93 L73.45 38.93" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M13.73 43.00 L5.59 38.93 L13.73 34.86" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M73.45 38.93 L75.11 38.85 L76.76 38.60 L78.37 38.20 L79.94 37.64 L81.44 36.93 L82.87 36.07 L84.21 35.08 L85.44 33.96 L86.56 32.73 L87.55 31.39 L88.41 29.96 L89.12 28.46 L89.68 26.89 L90.09 25.28 L90.33 23.63 L90.41 21.96 L90.33 20.30 L90.09 18.65 L89.68 17.04 L89.12 15.47 L88.41 13.97 L87.55 12.54 L86.56 11.20 L85.44 9.97 L84.21 8.85 L82.87 7.86 L81.44 7.00 L79.94 6.29 L78.37 5.73 L76.76 5.33 L75.11 5.08 L73.45 5.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><g transform="rotate(0.000 39.518 38.929)"><text x="39.51785714285714" y="38.92857142857143" fill="#1e293b" font-family="sans-serif" font-size="11" font-weight="600" text-anchor="middle" dominant-baseline="central">P(R)</text></g></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="Release line"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M5.00 26.22 L91.00 26.22" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><g transform="rotate(0.000 7.227 21.777)"><text x="7.227399999999998" y="21.7769" fill="#1e293b" font-family="sans-serif" font-size="7.416457060725835" font-weight="600" text-anchor="start" dominant-baseline="central">RL</text></g><g transform="rotate(0.000 88.773 21.777)"><text x="88.7726" y="21.7769" fill="#1e293b" font-family="sans-serif" font-size="7.416457060725835" font-weight="600" text-anchor="end" dominant-baseline="central">RL</text></g></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="Retire/Retirement"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M5.59 38.93 L33.41 38.93" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M45.62 38.93 L73.45 38.93" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M13.73 43.00 L5.59 38.93 L13.73 34.86" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M73.45 38.93 L75.11 38.85 L76.76 38.60 L78.37 38.20 L79.94 37.64 L81.44 36.93 L82.87 36.07 L84.21 35.08 L85.44 33.96 L86.56 32.73 L87.55 31.39 L88.41 29.96 L89.12 28.46 L89.68 26.89 L90.09 25.28 L90.33 23.63 L90.41 21.96 L90.33 20.30 L90.09 18.65 L89.68 17.04 L89.12 15.47 L88.41 13.97 L87.55 12.54 L86.56 11.20 L85.44 9.97 L84.21 8.85 L82.87 7.86 L81.44 7.00 L79.94 6.29 L78.37 5.73 L76.76 5.33 L75.11 5.08 L73.45 5.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><g transform="rotate(0.000 39.518 38.929)"><text x="39.51785714285714" y="38.92857142857143" fill="#1e293b" font-family="sans-serif" font-size="11" font-weight="600" text-anchor="middle" dominant-baseline="central">R</text></g></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="Seize"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M38.15 15.64 L38.10 14.59 L37.95 13.57 L37.70 12.55 L37.34 11.57 L36.89 10.62 L36.36 9.73 L35.74 8.89 L35.03 8.12 L34.26 7.41 L33.42 6.79 L32.53 6.26 L31.59 5.81 L30.60 5.46 L29.59 5.21 L28.56 5.05 L27.51 5.00 L26.47 5.05 L25.44 5.21 L24.42 5.46 L23.44 5.81 L22.50 6.26 L21.60 6.79 L20.76 7.41 L19.99 8.12 L19.29 8.89 L18.67 9.73 L18.13 10.62 L17.68 11.57 L17.33 12.55 L17.08 13.57 L16.92 14.59 L16.87 15.64 L16.92 16.69 L17.08 17.71 L17.33 18.73 L17.68 19.71 L18.13 20.66 L18.67 21.55 L19.29 22.39 L19.99 23.16 L20.76 23.87 L21.60 24.49 L22.50 25.02 L23.44 25.47 L24.42 25.82 L25.44 26.07 L26.47 26.23 L27.51 26.28 L28.56 26.23 L29.59 26.07 L30.60 25.82 L31.59 25.47 L32.53 25.02 L33.42 24.49 L34.26 23.87 L35.03 23.16 L35.74 22.39 L36.36 21.55 L36.89 20.66 L37.34 19.71 L37.70 18.73 L37.95 17.71 L38.10 16.69 L38.15 15.64" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M38.15 15.64 L39.23 15.57 L40.31 15.52 L41.39 15.51 L42.46 15.54 L43.54 15.59 L44.62 15.66 L45.69 15.78 L46.76 15.92 L47.82 16.09 L48.88 16.30 L49.94 16.53 L50.98 16.79 L52.02 17.08 L53.05 17.40 L54.07 17.76 L55.08 18.13 L56.08 18.54 L57.06 18.98 L58.04 19.45 L59.00 19.94 L59.94 20.46" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M65.50 24.30 L66.32 25.00 L67.11 25.73 L67.89 26.47 L68.64 27.25 L69.38 28.04 L70.09 28.85 L70.78 29.68 L71.44 30.53 L72.08 31.40 L72.69 32.29 L73.28 33.19 L73.85 34.11 L74.38 35.05 L74.89 36.00 L75.38 36.96 L75.83 37.94 L76.26 38.93 L76.65 39.93 L77.02 40.94 L77.36 41.97 L77.67 43.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M79.13 37.59 L77.67 43.00 L73.58 39.17" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><g transform="rotate(34.695 62.808 22.255)"><text x="62.807840000000006" y="22.25504" fill="#1e293b" font-family="sans-serif" font-size="5.461731943945383" font-weight="600" text-anchor="middle" dominant-baseline="central">S</text></g></svg>
package/media/text.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="Text"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><g transform="rotate(0.000 29.000 5.000)"><text x="29" y="5" fill="#1e293b" font-family="sans-serif" font-size="7.68" font-weight="600" text-anchor="middle" dominant-baseline="central">Text</text></g></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="Withdraw Under Pressure"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M5.59 38.93 L29.34 38.93" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M49.70 38.93 L73.45 38.93" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M13.73 43.00 L5.59 38.93 L13.73 34.86" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M73.45 38.93 L75.11 38.85 L76.76 38.60 L78.37 38.20 L79.94 37.64 L81.44 36.93 L82.87 36.07 L84.21 35.08 L85.44 33.96 L86.56 32.73 L87.55 31.39 L88.41 29.96 L89.12 28.46 L89.68 26.89 L90.09 25.28 L90.33 23.63 L90.41 21.96 L90.33 20.30 L90.09 18.65 L89.68 17.04 L89.12 15.47 L88.41 13.97 L87.55 12.54 L86.56 11.20 L85.44 9.97 L84.21 8.85 L82.87 7.86 L81.44 7.00 L79.94 6.29 L78.37 5.73 L76.76 5.33 L75.11 5.08 L73.45 5.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><g transform="rotate(0.000 39.518 38.929)"><text x="39.51785714285714" y="38.92857142857143" fill="#1e293b" font-family="sans-serif" font-size="11" font-weight="600" text-anchor="middle" dominant-baseline="central">WP</text></g></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="Withdraw"><rect x="0" y="0" width="96" height="48" rx="6" fill="#f8fafc" stroke="#e2e8f0"/><path d="M5.59 38.93 L33.41 38.93" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M45.62 38.93 L73.45 38.93" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M13.73 43.00 L5.59 38.93 L13.73 34.86" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><path d="M73.45 38.93 L75.11 38.85 L76.76 38.60 L78.37 38.20 L79.94 37.64 L81.44 36.93 L82.87 36.07 L84.21 35.08 L85.44 33.96 L86.56 32.73 L87.55 31.39 L88.41 29.96 L89.12 28.46 L89.68 26.89 L90.09 25.28 L90.33 23.63 L90.41 21.96 L90.33 20.30 L90.09 18.65 L89.68 17.04 L89.12 15.47 L88.41 13.97 L87.55 12.54 L86.56 11.20 L85.44 9.97 L84.21 8.85 L82.87 7.86 L81.44 7.00 L79.94 6.29 L78.37 5.73 L76.76 5.33 L75.11 5.08 L73.45 5.00" fill="none" stroke="#1e293b" stroke-width="1.25" stroke-linejoin="round" stroke-linecap="round"/><g transform="rotate(0.000 39.518 38.929)"><text x="39.51785714285714" y="38.92857142857143" fill="#1e293b" font-family="sans-serif" font-size="11" font-weight="600" text-anchor="middle" dominant-baseline="central">W</text></g></svg>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orbat-mapper/control-measures",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
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",