@orbat-mapper/control-measures 0.11.0 → 0.12.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.
@@ -420,6 +420,24 @@ interface ControlMeasureGeneratorContext {
420
420
  };
421
421
  measureText?: (request: MeasureTextRequest) => MeasuredText;
422
422
  }
423
+ /** A definition-owned edit handle whose drag updates generator options rather than control points. */
424
+ interface ControlMeasureOptionHandle {
425
+ /** Stable within one measure definition and used to route drag updates. */
426
+ id: string;
427
+ /** Resting handle position in GeoJSON longitude/latitude coordinates. */
428
+ position: Position;
429
+ }
430
+ interface ControlMeasureOptionHandleDragEvent<Options> {
431
+ controlPoints: readonly Position[];
432
+ options: Options;
433
+ handleId: string;
434
+ position: Position;
435
+ }
436
+ /** Placement and drag mapping for option-backed reshape handles. */
437
+ interface ControlMeasureOptionHandles<Options> {
438
+ get(controlPoints: readonly Position[], options: Options): readonly ControlMeasureOptionHandle[];
439
+ drag(event: ControlMeasureOptionHandleDragEvent<Options>): Partial<Options> | undefined;
440
+ }
423
441
  /**
424
442
  * A generator's call signature, constrained only by its inputs and output. The
425
443
  * options parameter is typed `never` so that a generator with *any* concrete
@@ -492,6 +510,8 @@ interface ControlMeasureDefinition<Id extends string, G extends ControlMeasureGe
492
510
  * clockwise-on-screen while the delta is radians). See ADR-0017/0023.
493
511
  */
494
512
  transformOptions?: (options: NonNullable<Parameters<G>[1]>, delta: BoxTransformDelta) => Partial<NonNullable<Parameters<G>[1]>> | undefined;
513
+ /** Optional reshape handles that persist their result in generator options. */
514
+ optionHandles?: ControlMeasureOptionHandles<NonNullable<Parameters<G>[1]>>;
495
515
  }
496
516
  /**
497
517
  * A box transform gesture's screen-space delta, folded into orientation- and
@@ -1620,6 +1640,10 @@ interface AttackOptions {
1620
1640
  smooth?: boolean;
1621
1641
  smoothResolution?: number;
1622
1642
  }
1643
+ interface VariableWidthAttackOptions extends AttackOptions {
1644
+ /** Rear width as a ratio of the arrowhead width; defaults to `shaftWidthRatio`. */
1645
+ rearWidthRatio?: number;
1646
+ }
1623
1647
  /**
1624
1648
  * Calculates the relative metrics (longitudinal and lateral) of the width point
1625
1649
  * relative to the Tip-Neck axis.
@@ -1627,7 +1651,7 @@ interface AttackOptions {
1627
1651
  * @param pts - Array of positions [Tip, Neck, ..., WidthPoint]
1628
1652
  * @returns { longitudinal: number, lateral: number } | null
1629
1653
  */
1630
- declare function calculateMetrics(pts: Position[]): {
1654
+ declare function calculateMetrics(pts: readonly Position[]): {
1631
1655
  longitudinal: number;
1632
1656
  lateral: number;
1633
1657
  } | null;
@@ -1642,14 +1666,14 @@ declare function calculateMetrics(pts: Position[]): {
1642
1666
  declare function computeInitialWidthPoint(tip: Position, neck: Position): Position;
1643
1667
  //#endregion
1644
1668
  //#region src/generators/cm15-maneuver-areas/mainAttack.d.ts
1645
- declare const DEFAULT_MAIN_ATTACK_OPTIONS: Required<AttackOptions>;
1646
- type MainAttackOptions = AttackOptions;
1669
+ declare const DEFAULT_MAIN_ATTACK_OPTIONS: Required<VariableWidthAttackOptions>;
1670
+ type MainAttackOptions = VariableWidthAttackOptions;
1647
1671
  /**
1648
1672
  * Generates a GeoJSON FeatureCollection for a Main Attack tactical symbol.
1649
1673
  *
1650
1674
  * The symbol consists of a single MultiLineString feature containing:
1651
1675
  * 1. **Arrowhead**: A line forming a "chevron" or "roof" shape.
1652
- * 2. **Shaft**: Two parallel lines behind the arrow.
1676
+ * 2. **Shaft**: Two boundary lines behind the arrow, optionally flared toward the rear.
1653
1677
  *
1654
1678
  * The shaft is calculated to terminate exactly where it touches the inner walls
1655
1679
  * of the arrowhead, creating a seamless connection.
@@ -1665,7 +1689,7 @@ type MainAttackOptions = AttackOptions;
1665
1689
  declare function createMainAttack(coordinates: Position[], options?: MainAttackOptions): FeatureCollection<MultiLineString>;
1666
1690
  //#endregion
1667
1691
  //#region src/generators/cm15-maneuver-areas/supportingAttack.d.ts
1668
- type SupportingAttackOptions = AttackOptions;
1692
+ type SupportingAttackOptions = VariableWidthAttackOptions;
1669
1693
  declare const DEFAULT_SUPPORTING_ATTACK_OPTIONS: Required<SupportingAttackOptions>;
1670
1694
  /**
1671
1695
  * Generates a GeoJSON FeatureCollection for a Supporting Attack tactical symbol.
@@ -1746,6 +1770,8 @@ type BlockArrowHeadStyle = "triangle" | "barbed" | "concave" | "diamond" | "harp
1746
1770
  interface BlockArrowOptions {
1747
1771
  /** Shaft band width as a fraction of the total path length. */
1748
1772
  shaftWidthRatio?: number;
1773
+ /** Rear width as a fraction of the total path length; defaults to `shaftWidthRatio`. */
1774
+ rearWidthRatio?: number;
1749
1775
  /** Arrowhead silhouette. */
1750
1776
  arrowheadStyle?: BlockArrowHeadStyle;
1751
1777
  /** Arrowhead base width as a fraction of the total path length. */
@@ -1880,7 +1906,7 @@ declare const RADAR_SEARCH_DOCTRINE_FILL_COLOR = "rgba(51, 136, 136, 0.25)";
1880
1906
  declare function createRadarSearchDoctrine(coordinates: Position[], options?: RadarSearchDoctrineOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<Polygon | Point>;
1881
1907
  //#endregion
1882
1908
  //#region src/generators/cm15-maneuver-areas/airborneAttack.d.ts
1883
- type AirborneAttackOptions = AttackOptions;
1909
+ type AirborneAttackOptions = VariableWidthAttackOptions;
1884
1910
  declare const DEFAULT_AIRBORNE_ATTACK_OPTIONS: Required<AirborneAttackOptions>;
1885
1911
  /**
1886
1912
  * Generates a GeoJSON FeatureCollection for an Airborne Attack tactical symbol.
@@ -1895,7 +1921,7 @@ declare const DEFAULT_AIRBORNE_ATTACK_OPTIONS: Required<AirborneAttackOptions>;
1895
1921
  declare function createAirborneAttack(coordinates: Position[], options?: AirborneAttackOptions): FeatureCollection<LineString>;
1896
1922
  //#endregion
1897
1923
  //#region src/generators/cm15-maneuver-areas/attackHelicopter.d.ts
1898
- interface AttackHelicopterOptions extends AttackOptions {
1924
+ interface AttackHelicopterOptions extends VariableWidthAttackOptions {
1899
1925
  symbolHeightRatio?: number;
1900
1926
  triangleSizeRatio?: number;
1901
1927
  bottomBarWidthRatio?: number;
@@ -2390,7 +2416,7 @@ declare const DEFAULT_CLEAR_OPTIONS: Required<Omit<ClearOptions, "labelSize" | "
2390
2416
  declare function createClearSymbol(coordinates: Position[], options?: ClearOptions): FeatureCollection<MultiLineString | Point>;
2391
2417
  //#endregion
2392
2418
  //#region src/generators/cm34-mission-tasks/counterattack.d.ts
2393
- interface CounterattackOptions extends AttackOptions, LabelSizeOptions {
2419
+ interface CounterattackOptions extends VariableWidthAttackOptions, LabelSizeOptions {
2394
2420
  /** CATK label position along the shaft, from tail (0) to arrowhead base (1). */
2395
2421
  labelPosition?: number;
2396
2422
  }
@@ -2749,7 +2775,7 @@ declare const DEFAULT_FORTIFIED_AREA_OPTIONS: FortifiedAreaOptions;
2749
2775
  declare function createFortifiedArea(positions: Position[], options?: FortifiedAreaOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<Polygon | MultiLineString | Point>;
2750
2776
  //#endregion
2751
2777
  //#region src/generators/cm15-maneuver-areas/maneuver-arrow-task-shared.d.ts
2752
- interface ManeuverArrowTaskOptions extends AttackOptions, LabelSizeOptions {
2778
+ interface ManeuverArrowTaskOptions extends VariableWidthAttackOptions, LabelSizeOptions {
2753
2779
  /** Straight crossbar length as a multiple of the arrowhead base width. */
2754
2780
  crossbarLengthRatio?: number;
2755
2781
  /** Field T position along the shaft, from tail (0) to head (1). */
@@ -3189,6 +3215,12 @@ declare function freezeOrientationOptions<K extends ControlMeasureKind>(kind: K,
3189
3215
  declare function foldsBoxTransformOptions(kind: ControlMeasureKind): boolean;
3190
3216
  declare function applyBoxTransformOptions<K extends ControlMeasureKind>(kind: K, options: OptionsByKind[K] | undefined, delta: BoxTransformDelta): Partial<OptionsByKind[K]> | undefined;
3191
3217
  //#endregion
3218
+ //#region src/option-handles.d.ts
3219
+ /** Resolve the option-backed reshape handles declared by a measure definition. */
3220
+ declare function getControlMeasureOptionHandles<K extends ControlMeasureKind>(kind: K, controlPoints: readonly Position[], options: OptionsByKind[K] | undefined): readonly ControlMeasureOptionHandle[];
3221
+ /** Map a dragged option handle coordinate to the definition-owned options patch. */
3222
+ declare function dragControlMeasureOptionHandle<K extends ControlMeasureKind>(kind: K, controlPoints: readonly Position[], options: OptionsByKind[K] | undefined, handleId: string, position: Position): Partial<OptionsByKind[K]> | undefined;
3223
+ //#endregion
3192
3224
  //#region src/styleResolver.d.ts
3193
3225
  /**
3194
3226
  * Three-layer style precedence for `renderControlMeasure`.
@@ -3510,4 +3542,4 @@ interface AmbushOptions {
3510
3542
  }
3511
3543
  declare const DEFAULT_AMBUSH_OPTIONS: Required<AmbushOptions>;
3512
3544
  //#endregion
3513
- export { ControlMeasureKind as $, TextAmplifierDescriptor as $i, DEFAULT_AIRBORNE_ATTACK_OPTIONS as $n, DEFAULT_SECONDARY_DIRECTION_OF_FIRE_OPTIONS as $r, DEFAULT_DISENGAGE_OPTIONS as $t, BaselineFrame as A, BoundaryOptions as Ai, BattleHandoverLineOptions as An, DEFAULT_PICKUP_ZONE_OPTIONS as Ar, FortifiedLineOptions as At, toSimpleStyle as B, DEFAULT_STROKE_WIDTH_CSS_PIXELS as Bi, DEFAULT_FORWARD_EDGE_OF_BATTLE_AREA_OPTIONS as Bn, MobileDefenseOptions as Br, SeizeOptions as Bt, area27DrawRule as C, LightLineOptions as Ci, ProbableLineOfDeploymentOptions as Cn, SupportingAttackOptions as Cr, DEFAULT_TURNING_MOVEMENT_OPTIONS as Ct, getMidpointPerpendicularSignedDistance as D, project as Di, LineOfDepartureOptions as Dn, computeInitialWidthPoint as Dr, DEFAULT_FORTIFIED_AREA_OPTIONS as Dt, createMidpointPerpendicularDrawRule as E, haversineDistance as Ei, DEFAULT_LINE_OF_DEPARTURE_OPTIONS as En, calculateMetrics as Er, FrontalAttackOptions as Et, EPSILON as F, DEFAULT_LABEL_SIZE_CLAMP_CSS_PIXELS as Fi, ReleaseLineOptions as Fn, DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS as Fr, DEFAULT_WITHDRAW_UNDER_PRESSURE_OPTIONS as Ft, RenderOptions as G, ControlMeasureGeometry as Gi, FLOTOptions as Gn, DEFAULT_ENCIRCLEMENT_OPTIONS as Gr, DEFAULT_REARWARD_PASSAGE_OF_LINES_OPTIONS as Gt, applyBoxTransformOptions as H, MeasureTextRequest as Hi, DEFAULT_PHASE_LINE_OPTIONS as Hn, EngagementAreaOptions as Hr, ScreenOptions as Ht, getMetersPerPixel as I, DEFAULT_LINE_CAP as Ii, DEFAULT_HOLDING_LINE_OPTIONS as In, JointTacticalActionAreaOptions as Ir, WithdrawUnderPressureOptions as It, cloneControlMeasure as J, ControlMeasurePaintCapability as Ji, DEFAULT_SUPPORT_BY_FIRE_OPTIONS as Jn, FinalProtectiveFireOptions as Jr, PenetrateOptions as Jt, renderControlMeasure as K, ControlMeasureGeometryType as Ki, AttackByFireOptions as Kn, EncirclementOptions as Kr, RearwardPassageOfLinesOptions as Kt, roundToFixed as L, DEFAULT_LINE_JOIN as Li, HoldingLineOptions as Ln, AssemblyAreaOptions as Lr, DEFAULT_WITHDRAW_OPTIONS as Lt, BaselineFrameOptions as M, BoxTransformDelta as Mi, DEFAULT_HANDOVER_LINE_OPTIONS as Mn, MineType as Mr, DEFAULT_ANTITANK_WALL_OPTIONS as Mt, BaselineFrameOrigin as N, ControlMeasureRenderContext as Ni, HandoverLineOptions as Nn, DEFAULT_LANDING_ZONE_OPTIONS as Nr, AntitankDitchOptions as Nt, pointOnMidpointPerpendicularAxis as O, sphericalBearing as Oi, DEFAULT_LIMIT_OF_ADVANCE_OPTIONS as On, AreaOfOperationsOptions as Or, FortifiedAreaOptions as Ot, createBaselineFrame as P, DEFAULT_LABEL_HEIGHT_CSS_PIXELS as Pi, DEFAULT_RELEASE_LINE_OPTIONS as Pn, LandingZoneOptions as Pr, DEFAULT_ANTITANK_DITCH_OPTIONS as Pt, ControlMeasureId as Q, ParameterSemanticRole as Qi, AirborneAttackOptions as Qn, controlMeasureIdFromFeature as Qr, DisruptMissionTaskOptions as Qt, SimpleStyleProps as R, DEFAULT_PORTRAYAL as Ri, BridgeheadLineOptions as Rn, DEFAULT_ASSEMBLY_AREA_OPTIONS as Rr, WithdrawOptions as Rt, containDrawRule as S, DEFAULT_LIGHT_LINE_OPTIONS as Si, PROBABLE_LINE_OF_DEPLOYMENT_DASH as Sn, DEFAULT_SUPPORTING_ATTACK_OPTIONS as Sr, DEFAULT_BLOCK_OPTIONS as St, computeDefaultMidpointPerpendicularPoint as T, Point2D as Ti, LineOfDepartureContactOptions as Tn, MainAttackOptions as Tr, DEFAULT_FRONTAL_ATTACK_OPTIONS as Tt, foldsBoxTransformOptions as U, MeasuredText as Ui, PhaseLineOptions as Un, AreaDefenseOptions as Ur, DEFAULT_RETIRE_OPTIONS as Ut, resolveStyleHints as V, LogicalTextStyle as Vi, ForwardEdgeOfBattleAreaOptions as Vn, DEFAULT_ENGAGEMENT_AREA_OPTIONS as Vr, DEFAULT_SCREEN_OPTIONS as Vt, freezeOrientationOptions as W, ControlMeasureFillCapability as Wi, DEFAULT_FLOT_OPTIONS as Wn, DEFAULT_AREA_DEFENSE_OPTIONS as Wr, RetireOptions as Wt, CONTROL_MEASURE_IDS as X, ParamDescriptor as Xi, AttackHelicopterOptions as Xn, FeaturePartProps as Xr, GuardOptions as Xt, isKind as Y, PARAMETER_PRESENTATION_TIERS as Yi, SupportByFireOptions as Yn, ControlMeasureRender as Yr, DEFAULT_GUARD_OPTIONS as Yt, CONTROL_MEASURE_METADATA as Z, ParameterPresentationTier as Zi, DEFAULT_ATTACK_HELICOPTER_OPTIONS as Zn, StyleHints as Zr, DEFAULT_DISRUPT_MISSION_TASK_OPTIONS as Zt, point12DrawRule as _, DEFAULT_BATTLE_POSITION_OPTIONS as _i, BreachOptions as _n, BlockArrowOptions as _r, DEFAULT_FIX_OPTIONS as _t, axis1DrawRule as a, CanonicalTextAmplifiers as aa, DirectionOfSupportingAttackOptions as ai, DEFAULT_TACTICAL_ARROW_OPTIONS as an, GenericTextOptions as ar, DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS as at, disruptDrawRule as b, DEFAULT_ENGINEER_WORK_LINE_OPTIONS as bi, DEFAULT_BLOCK_MISSION_TASK_OPTIONS as bn, ClassicArrowOptions as br, DisruptOptions as bt, line26DrawRule as c, TEXT_AMPLIFIER_FIELDS as ca, DEFAULT_DIRECTION_OF_ATTACK_AVIATION_OPTIONS as ci, DEFAULT_COUNTERATTACK_BY_FIRE_OPTIONS as cn, DEFAULT_GENERIC_CIRCLE_OPTIONS as cr, ObstacleBypassDifficultOptions as ct, turnDrawRule as d, TextAmplifiers as da, RetainOptions as di, ClearOptions as dn, GenericRectangleOptions as dr, DEFAULT_MINEFIELD_OPTIONS as dt, parameterPresentationTierRank as ea, SECONDARY_DIRECTION_OF_FIRE_DASH as ei, DisengageOptions as en, DEFAULT_RADAR_SEARCH_DOCTRINE_OPTIONS as er, OptionsByKind as et, line1DrawRule as f, canonicalTextAmplifierKey as fa, DEFAULT_STRONG_POINT_OPTIONS as fi, DEFAULT_CLEAR_OPTIONS as fn, DEFAULT_GENERIC_POLYGON_OPTIONS as fr, MinefieldOptions as ft, staticPointDrawRule as g, ControlMeasureDrawRule as ga, BattlePositionOptions as gi, DEFAULT_BYPASS_OPTIONS as gn, BlockArrowHeadStyle as gr, FixMissionTaskOptions as gt, dynamicPointDrawRule as h, AnchorTransformEvent as ha, DEFAULT_CONTAIN_OPTIONS as hi, BypassOptions as hn, GenericLineOptions as hr, DEFAULT_FIX_MISSION_TASK_OPTIONS as ht, rectangleDrawRule as i, AmplifierPlacements as ia, DEFAULT_DIRECTION_OF_SUPPORTING_ATTACK_OPTIONS as ii, DEFAULT_COVER_OPTIONS as in, DEFAULT_GENERIC_TEXT_OPTIONS as ir, listControlMeasureMetadata as it, BaselineFrameNormal as j, DEFAULT_BOUNDARY_OPTIONS as ji, DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS as jn, PickupZoneOptions as jr, AntitankWallOptions as jt, snapToMidpointPerpendicular as k, unproject as ki, LimitOfAdvanceOptions as kn, DEFAULT_AREA_OF_OPERATIONS_OPTIONS as kr, DEFAULT_FORTIFIED_LINE_OPTIONS as kt, line24DrawRule as l, TextAmplifierField as la, DirectionOfAttackAviationOptions as li, CounterattackOptions as ln, GenericCircleOptions as lr, DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS as lt, attackByFireDrawRule as m, resolveAmplifierPlacement as ma, ContainOptions as mi, DEFAULT_CANALIZE_OPTIONS as mn, DEFAULT_GENERIC_LINE_OPTIONS as mr, TurnOptions as mt, DEFAULT_AMBUSH_OPTIONS as n, resolveParameterSemanticRole as na, DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS as ni, DelayOptions as nn, RADAR_SEARCH_DOCTRINE_STROKE_COLOR as nr, getControlMeasureMetadataByValue as nt, supportByFireDrawRule as o, GeneratedLabelKey as oa, DEFAULT_DIRECTION_OF_MAIN_ATTACK_OPTIONS as oi, TacticalArrowOptions as on, DEFAULT_GENERIC_SECTOR_OPTIONS as or, ObstacleBypassImpossibleOptions as ot, ambushDrawRule as p, normalizeTextAmplifiers as pa, StrongPointOptions as pi, CanalizeOptions as pn, GenericPolygonOptions as pr, DEFAULT_TURN_OPTIONS as pt, ControlMeasure as q, ControlMeasureMetadata as qi, DEFAULT_ATTACK_BY_FIRE_OPTIONS as qn, DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS as qr, DEFAULT_PENETRATE_OPTIONS as qt, sectorDrawRule as r, AmplifierPlacement as ra, PrincipalDirectionOfFireOptions as ri, CoverOptions as rn, RadarSearchDoctrineOptions as rr, getDefaultOptions as rt, line27DrawRule as s, LabelPlacementOverride as sa, DirectionOfMainAttackOptions as si, CounterattackByFireOptions as sn, GenericSectorOptions as sr, DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS as st, AmbushOptions as t, resolveParameterPresentationTier as ta, SecondaryDirectionOfFireOptions as ti, DEFAULT_DELAY_OPTIONS as tn, RADAR_SEARCH_DOCTRINE_FILL_COLOR as tr, getControlMeasureMetadata as tt, line23DrawRule as u, TextAmplifierKey as ua, DEFAULT_RETAIN_OPTIONS as ui, DEFAULT_COUNTERATTACK_OPTIONS as un, DEFAULT_GENERIC_RECTANGLE_OPTIONS as ur, ObstacleBypassEasyOptions as ut, penetrateDrawRule as v, DEFAULT_GENERIC_C2_LINE_OPTIONS as vi, DEFAULT_BREACH_OPTIONS as vn, DEFAULT_BLOCK_ARROW_OPTIONS as vr, FixOptions as vt, MidpointPerpendicularDrawRuleOptions as w, LabelSizeOptions as wi, DEFAULT_LINE_OF_DEPARTURE_CONTACT_OPTIONS as wn, DEFAULT_MAIN_ATTACK_OPTIONS as wr, TurningMovementOptions as wt, blockDrawRule as x, EngineerWorkLineOptions as xi, DEFAULT_PROBABLE_LINE_OF_DEPLOYMENT_OPTIONS as xn, DEFAULT_CLASSIC_ARROW_OPTIONS as xr, BlockOptions as xt, centerRadiusDrawRule as y, GenericC2LineOptions as yi, BlockMissionTaskOptions as yn, ClassicArrowHeadStyle as yr, DEFAULT_DISRUPT_OPTIONS as yt, SimpleStyleRender as z, DEFAULT_STROKE_DASH_CSS_PIXELS as zi, DEFAULT_BRIDGEHEAD_LINE_OPTIONS as zn, DEFAULT_MOBILE_DEFENSE_OPTIONS as zr, DEFAULT_SEIZE_OPTIONS as zt };
3545
+ export { CONTROL_MEASURE_METADATA as $, ControlMeasurePaintCapability as $i, DEFAULT_ATTACK_HELICOPTER_OPTIONS as $n, StyleHints as $r, DEFAULT_DISRUPT_MISSION_TASK_OPTIONS as $t, BaselineFrame as A, sphericalBearing as Ai, DEFAULT_LIMIT_OF_ADVANCE_OPTIONS as An, AreaOfOperationsOptions as Ar, FortifiedAreaOptions as At, toSimpleStyle as B, DEFAULT_LABEL_SIZE_CLAMP_CSS_PIXELS as Bi, BridgeheadLineOptions as Bn, DEFAULT_ASSEMBLY_AREA_OPTIONS as Br, WithdrawOptions as Bt, area27DrawRule as C, EngineerWorkLineOptions as Ci, DEFAULT_PROBABLE_LINE_OF_DEPLOYMENT_OPTIONS as Cn, DEFAULT_CLASSIC_ARROW_OPTIONS as Cr, BlockOptions as Ct, getMidpointPerpendicularSignedDistance as D, Point2D as Di, LineOfDepartureContactOptions as Dn, MainAttackOptions as Dr, DEFAULT_FRONTAL_ATTACK_OPTIONS as Dt, createMidpointPerpendicularDrawRule as E, LabelSizeOptions as Ei, DEFAULT_LINE_OF_DEPARTURE_CONTACT_OPTIONS as En, DEFAULT_MAIN_ATTACK_OPTIONS as Er, TurningMovementOptions as Et, EPSILON as F, ControlMeasureOptionHandle as Fi, HandoverLineOptions as Fn, DEFAULT_LANDING_ZONE_OPTIONS as Fr, AntitankDitchOptions as Ft, foldsBoxTransformOptions as G, DEFAULT_STROKE_WIDTH_CSS_PIXELS as Gi, PhaseLineOptions as Gn, AreaDefenseOptions as Gr, DEFAULT_RETIRE_OPTIONS as Gt, dragControlMeasureOptionHandle as H, DEFAULT_LINE_JOIN as Hi, DEFAULT_FORWARD_EDGE_OF_BATTLE_AREA_OPTIONS as Hn, MobileDefenseOptions as Hr, SeizeOptions as Ht, getMetersPerPixel as I, ControlMeasureOptionHandleDragEvent as Ii, DEFAULT_RELEASE_LINE_OPTIONS as In, LandingZoneOptions as Ir, DEFAULT_ANTITANK_DITCH_OPTIONS as It, renderControlMeasure as J, MeasuredText as Ji, AttackByFireOptions as Jn, EncirclementOptions as Jr, RearwardPassageOfLinesOptions as Jt, freezeOrientationOptions as K, LogicalTextStyle as Ki, DEFAULT_FLOT_OPTIONS as Kn, DEFAULT_AREA_DEFENSE_OPTIONS as Kr, RetireOptions as Kt, roundToFixed as L, ControlMeasureOptionHandles as Li, ReleaseLineOptions as Ln, DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS as Lr, DEFAULT_WITHDRAW_UNDER_PRESSURE_OPTIONS as Lt, BaselineFrameOptions as M, BoundaryOptions as Mi, BattleHandoverLineOptions as Mn, DEFAULT_PICKUP_ZONE_OPTIONS as Mr, FortifiedLineOptions as Mt, BaselineFrameOrigin as N, DEFAULT_BOUNDARY_OPTIONS as Ni, DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS as Nn, PickupZoneOptions as Nr, AntitankWallOptions as Nt, pointOnMidpointPerpendicularAxis as O, haversineDistance as Oi, DEFAULT_LINE_OF_DEPARTURE_OPTIONS as On, calculateMetrics as Or, FrontalAttackOptions as Ot, createBaselineFrame as P, BoxTransformDelta as Pi, DEFAULT_HANDOVER_LINE_OPTIONS as Pn, MineType as Pr, DEFAULT_ANTITANK_WALL_OPTIONS as Pt, CONTROL_MEASURE_IDS as Q, ControlMeasureMetadata as Qi, AttackHelicopterOptions as Qn, FeaturePartProps as Qr, GuardOptions as Qt, SimpleStyleProps as R, ControlMeasureRenderContext as Ri, DEFAULT_HOLDING_LINE_OPTIONS as Rn, JointTacticalActionAreaOptions as Rr, WithdrawUnderPressureOptions as Rt, containDrawRule as S, DEFAULT_ENGINEER_WORK_LINE_OPTIONS as Si, DEFAULT_BLOCK_MISSION_TASK_OPTIONS as Sn, ClassicArrowOptions as Sr, DisruptOptions as St, computeDefaultMidpointPerpendicularPoint as T, LightLineOptions as Ti, ProbableLineOfDeploymentOptions as Tn, SupportingAttackOptions as Tr, DEFAULT_TURNING_MOVEMENT_OPTIONS as Tt, getControlMeasureOptionHandles as U, DEFAULT_PORTRAYAL as Ui, ForwardEdgeOfBattleAreaOptions as Un, DEFAULT_ENGAGEMENT_AREA_OPTIONS as Ur, DEFAULT_SCREEN_OPTIONS as Ut, resolveStyleHints as V, DEFAULT_LINE_CAP as Vi, DEFAULT_BRIDGEHEAD_LINE_OPTIONS as Vn, DEFAULT_MOBILE_DEFENSE_OPTIONS as Vr, DEFAULT_SEIZE_OPTIONS as Vt, applyBoxTransformOptions as W, DEFAULT_STROKE_DASH_CSS_PIXELS as Wi, DEFAULT_PHASE_LINE_OPTIONS as Wn, EngagementAreaOptions as Wr, ScreenOptions as Wt, cloneControlMeasure as X, ControlMeasureGeometry as Xi, DEFAULT_SUPPORT_BY_FIRE_OPTIONS as Xn, FinalProtectiveFireOptions as Xr, PenetrateOptions as Xt, ControlMeasure as Y, ControlMeasureFillCapability as Yi, DEFAULT_ATTACK_BY_FIRE_OPTIONS as Yn, DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS as Yr, DEFAULT_PENETRATE_OPTIONS as Yt, isKind as Z, ControlMeasureGeometryType as Zi, SupportByFireOptions as Zn, ControlMeasureRender as Zr, DEFAULT_GUARD_OPTIONS as Zt, point12DrawRule as _, canonicalTextAmplifierKey as _a, DEFAULT_CONTAIN_OPTIONS as _i, BypassOptions as _n, GenericLineOptions as _r, DEFAULT_FIX_MISSION_TASK_OPTIONS as _t, axis1DrawRule as a, parameterPresentationTierRank as aa, PrincipalDirectionOfFireOptions as ai, CoverOptions as an, RadarSearchDoctrineOptions as ar, getDefaultOptions as at, disruptDrawRule as b, AnchorTransformEvent as ba, DEFAULT_GENERIC_C2_LINE_OPTIONS as bi, DEFAULT_BREACH_OPTIONS as bn, DEFAULT_BLOCK_ARROW_OPTIONS as br, FixOptions as bt, line26DrawRule as c, AmplifierPlacement as ca, DEFAULT_DIRECTION_OF_MAIN_ATTACK_OPTIONS as ci, TacticalArrowOptions as cn, DEFAULT_GENERIC_SECTOR_OPTIONS as cr, ObstacleBypassImpossibleOptions as ct, turnDrawRule as d, GeneratedLabelKey as da, DirectionOfAttackAviationOptions as di, CounterattackOptions as dn, GenericCircleOptions as dr, DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS as dt, PARAMETER_PRESENTATION_TIERS as ea, controlMeasureIdFromFeature as ei, DisruptMissionTaskOptions as en, AirborneAttackOptions as er, ControlMeasureId as et, line1DrawRule as f, LabelPlacementOverride as fa, DEFAULT_RETAIN_OPTIONS as fi, DEFAULT_COUNTERATTACK_OPTIONS as fn, DEFAULT_GENERIC_RECTANGLE_OPTIONS as fr, ObstacleBypassEasyOptions as ft, staticPointDrawRule as g, TextAmplifiers as ga, ContainOptions as gi, DEFAULT_CANALIZE_OPTIONS as gn, DEFAULT_GENERIC_LINE_OPTIONS as gr, TurnOptions as gt, dynamicPointDrawRule as h, TextAmplifierKey as ha, StrongPointOptions as hi, CanalizeOptions as hn, GenericPolygonOptions as hr, DEFAULT_TURN_OPTIONS as ht, rectangleDrawRule as i, TextAmplifierDescriptor as ia, DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS as ii, DelayOptions as in, RADAR_SEARCH_DOCTRINE_STROKE_COLOR as ir, getControlMeasureMetadataByValue as it, BaselineFrameNormal as j, unproject as ji, LimitOfAdvanceOptions as jn, DEFAULT_AREA_OF_OPERATIONS_OPTIONS as jr, DEFAULT_FORTIFIED_LINE_OPTIONS as jt, snapToMidpointPerpendicular as k, project as ki, LineOfDepartureOptions as kn, computeInitialWidthPoint as kr, DEFAULT_FORTIFIED_AREA_OPTIONS as kt, line24DrawRule as l, AmplifierPlacements as la, DirectionOfMainAttackOptions as li, CounterattackByFireOptions as ln, GenericSectorOptions as lr, DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS as lt, attackByFireDrawRule as m, TextAmplifierField as ma, DEFAULT_STRONG_POINT_OPTIONS as mi, DEFAULT_CLEAR_OPTIONS as mn, DEFAULT_GENERIC_POLYGON_OPTIONS as mr, MinefieldOptions as mt, DEFAULT_AMBUSH_OPTIONS as n, ParameterPresentationTier as na, SECONDARY_DIRECTION_OF_FIRE_DASH as ni, DisengageOptions as nn, DEFAULT_RADAR_SEARCH_DOCTRINE_OPTIONS as nr, OptionsByKind as nt, supportByFireDrawRule as o, resolveParameterPresentationTier as oa, DEFAULT_DIRECTION_OF_SUPPORTING_ATTACK_OPTIONS as oi, DEFAULT_COVER_OPTIONS as on, DEFAULT_GENERIC_TEXT_OPTIONS as or, listControlMeasureMetadata as ot, ambushDrawRule as p, TEXT_AMPLIFIER_FIELDS as pa, RetainOptions as pi, ClearOptions as pn, GenericRectangleOptions as pr, DEFAULT_MINEFIELD_OPTIONS as pt, RenderOptions as q, MeasureTextRequest as qi, FLOTOptions as qn, DEFAULT_ENCIRCLEMENT_OPTIONS as qr, DEFAULT_REARWARD_PASSAGE_OF_LINES_OPTIONS as qt, sectorDrawRule as r, ParameterSemanticRole as ra, SecondaryDirectionOfFireOptions as ri, DEFAULT_DELAY_OPTIONS as rn, RADAR_SEARCH_DOCTRINE_FILL_COLOR as rr, getControlMeasureMetadata as rt, line27DrawRule as s, resolveParameterSemanticRole as sa, DirectionOfSupportingAttackOptions as si, DEFAULT_TACTICAL_ARROW_OPTIONS as sn, GenericTextOptions as sr, DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS as st, AmbushOptions as t, ParamDescriptor as ta, DEFAULT_SECONDARY_DIRECTION_OF_FIRE_OPTIONS as ti, DEFAULT_DISENGAGE_OPTIONS as tn, DEFAULT_AIRBORNE_ATTACK_OPTIONS as tr, ControlMeasureKind as tt, line23DrawRule as u, CanonicalTextAmplifiers as ua, DEFAULT_DIRECTION_OF_ATTACK_AVIATION_OPTIONS as ui, DEFAULT_COUNTERATTACK_BY_FIRE_OPTIONS as un, DEFAULT_GENERIC_CIRCLE_OPTIONS as ur, ObstacleBypassDifficultOptions as ut, penetrateDrawRule as v, normalizeTextAmplifiers as va, BattlePositionOptions as vi, DEFAULT_BYPASS_OPTIONS as vn, BlockArrowHeadStyle as vr, FixMissionTaskOptions as vt, MidpointPerpendicularDrawRuleOptions as w, DEFAULT_LIGHT_LINE_OPTIONS as wi, PROBABLE_LINE_OF_DEPLOYMENT_DASH as wn, DEFAULT_SUPPORTING_ATTACK_OPTIONS as wr, DEFAULT_BLOCK_OPTIONS as wt, blockDrawRule as x, ControlMeasureDrawRule as xa, GenericC2LineOptions as xi, BlockMissionTaskOptions as xn, ClassicArrowHeadStyle as xr, DEFAULT_DISRUPT_OPTIONS as xt, centerRadiusDrawRule as y, resolveAmplifierPlacement as ya, DEFAULT_BATTLE_POSITION_OPTIONS as yi, BreachOptions as yn, BlockArrowOptions as yr, DEFAULT_FIX_OPTIONS as yt, SimpleStyleRender as z, DEFAULT_LABEL_HEIGHT_CSS_PIXELS as zi, HoldingLineOptions as zn, AssemblyAreaOptions as zr, DEFAULT_WITHDRAW_OPTIONS as zt };
package/dist/index.d.mts CHANGED
@@ -1,3 +1,3 @@
1
- import { $ as ControlMeasureKind, $i as TextAmplifierDescriptor, $n as DEFAULT_AIRBORNE_ATTACK_OPTIONS, $r as DEFAULT_SECONDARY_DIRECTION_OF_FIRE_OPTIONS, $t as DEFAULT_DISENGAGE_OPTIONS, A as BaselineFrame, Ai as BoundaryOptions, An as BattleHandoverLineOptions, Ar as DEFAULT_PICKUP_ZONE_OPTIONS, At as FortifiedLineOptions, B as toSimpleStyle, Bi as DEFAULT_STROKE_WIDTH_CSS_PIXELS, Bn as DEFAULT_FORWARD_EDGE_OF_BATTLE_AREA_OPTIONS, Br as MobileDefenseOptions, Bt as SeizeOptions, C as area27DrawRule, Ci as LightLineOptions, Cn as ProbableLineOfDeploymentOptions, Cr as SupportingAttackOptions, Ct as DEFAULT_TURNING_MOVEMENT_OPTIONS, D as getMidpointPerpendicularSignedDistance, Di as project, Dn as LineOfDepartureOptions, Dr as computeInitialWidthPoint, Dt as DEFAULT_FORTIFIED_AREA_OPTIONS, E as createMidpointPerpendicularDrawRule, Ei as haversineDistance, En as DEFAULT_LINE_OF_DEPARTURE_OPTIONS, Er as calculateMetrics, Et as FrontalAttackOptions, F as EPSILON, Fi as DEFAULT_LABEL_SIZE_CLAMP_CSS_PIXELS, Fn as ReleaseLineOptions, Fr as DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS, Ft as DEFAULT_WITHDRAW_UNDER_PRESSURE_OPTIONS, G as RenderOptions, Gi as ControlMeasureGeometry, Gn as FLOTOptions, Gr as DEFAULT_ENCIRCLEMENT_OPTIONS, Gt as DEFAULT_REARWARD_PASSAGE_OF_LINES_OPTIONS, H as applyBoxTransformOptions, Hi as MeasureTextRequest, Hn as DEFAULT_PHASE_LINE_OPTIONS, Hr as EngagementAreaOptions, Ht as ScreenOptions, I as getMetersPerPixel, Ii as DEFAULT_LINE_CAP, In as DEFAULT_HOLDING_LINE_OPTIONS, Ir as JointTacticalActionAreaOptions, It as WithdrawUnderPressureOptions, J as cloneControlMeasure, Ji as ControlMeasurePaintCapability, Jn as DEFAULT_SUPPORT_BY_FIRE_OPTIONS, Jr as FinalProtectiveFireOptions, Jt as PenetrateOptions, K as renderControlMeasure, Ki as ControlMeasureGeometryType, Kn as AttackByFireOptions, Kr as EncirclementOptions, Kt as RearwardPassageOfLinesOptions, L as roundToFixed, Li as DEFAULT_LINE_JOIN, Ln as HoldingLineOptions, Lr as AssemblyAreaOptions, Lt as DEFAULT_WITHDRAW_OPTIONS, M as BaselineFrameOptions, Mi as BoxTransformDelta, Mn as DEFAULT_HANDOVER_LINE_OPTIONS, Mr as MineType, Mt as DEFAULT_ANTITANK_WALL_OPTIONS, N as BaselineFrameOrigin, Ni as ControlMeasureRenderContext, Nn as HandoverLineOptions, Nr as DEFAULT_LANDING_ZONE_OPTIONS, Nt as AntitankDitchOptions, O as pointOnMidpointPerpendicularAxis, Oi as sphericalBearing, On as DEFAULT_LIMIT_OF_ADVANCE_OPTIONS, Or as AreaOfOperationsOptions, Ot as FortifiedAreaOptions, P as createBaselineFrame, Pi as DEFAULT_LABEL_HEIGHT_CSS_PIXELS, Pn as DEFAULT_RELEASE_LINE_OPTIONS, Pr as LandingZoneOptions, Pt as DEFAULT_ANTITANK_DITCH_OPTIONS, Q as ControlMeasureId, Qi as ParameterSemanticRole, Qn as AirborneAttackOptions, Qr as controlMeasureIdFromFeature, Qt as DisruptMissionTaskOptions, R as SimpleStyleProps, Ri as DEFAULT_PORTRAYAL, Rn as BridgeheadLineOptions, Rr as DEFAULT_ASSEMBLY_AREA_OPTIONS, Rt as WithdrawOptions, S as containDrawRule, Si as DEFAULT_LIGHT_LINE_OPTIONS, Sn as PROBABLE_LINE_OF_DEPLOYMENT_DASH, Sr as DEFAULT_SUPPORTING_ATTACK_OPTIONS, St as DEFAULT_BLOCK_OPTIONS, T as computeDefaultMidpointPerpendicularPoint, Ti as Point2D, Tn as LineOfDepartureContactOptions, Tr as MainAttackOptions, Tt as DEFAULT_FRONTAL_ATTACK_OPTIONS, U as foldsBoxTransformOptions, Ui as MeasuredText, Un as PhaseLineOptions, Ur as AreaDefenseOptions, Ut as DEFAULT_RETIRE_OPTIONS, V as resolveStyleHints, Vi as LogicalTextStyle, Vn as ForwardEdgeOfBattleAreaOptions, Vr as DEFAULT_ENGAGEMENT_AREA_OPTIONS, Vt as DEFAULT_SCREEN_OPTIONS, W as freezeOrientationOptions, Wi as ControlMeasureFillCapability, Wn as DEFAULT_FLOT_OPTIONS, Wr as DEFAULT_AREA_DEFENSE_OPTIONS, Wt as RetireOptions, X as CONTROL_MEASURE_IDS, Xi as ParamDescriptor, Xn as AttackHelicopterOptions, Xr as FeaturePartProps, Xt as GuardOptions, Y as isKind, Yi as PARAMETER_PRESENTATION_TIERS, Yn as SupportByFireOptions, Yr as ControlMeasureRender, Yt as DEFAULT_GUARD_OPTIONS, Z as CONTROL_MEASURE_METADATA, Zi as ParameterPresentationTier, Zn as DEFAULT_ATTACK_HELICOPTER_OPTIONS, Zr as StyleHints, Zt as DEFAULT_DISRUPT_MISSION_TASK_OPTIONS, _ as point12DrawRule, _i as DEFAULT_BATTLE_POSITION_OPTIONS, _n as BreachOptions, _r as BlockArrowOptions, _t as DEFAULT_FIX_OPTIONS, a as axis1DrawRule, aa as CanonicalTextAmplifiers, ai as DirectionOfSupportingAttackOptions, an as DEFAULT_TACTICAL_ARROW_OPTIONS, ar as GenericTextOptions, at as DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS, b as disruptDrawRule, bi as DEFAULT_ENGINEER_WORK_LINE_OPTIONS, bn as DEFAULT_BLOCK_MISSION_TASK_OPTIONS, br as ClassicArrowOptions, bt as DisruptOptions, c as line26DrawRule, ca as TEXT_AMPLIFIER_FIELDS, ci as DEFAULT_DIRECTION_OF_ATTACK_AVIATION_OPTIONS, cn as DEFAULT_COUNTERATTACK_BY_FIRE_OPTIONS, cr as DEFAULT_GENERIC_CIRCLE_OPTIONS, ct as ObstacleBypassDifficultOptions, d as turnDrawRule, da as TextAmplifiers, di as RetainOptions, dn as ClearOptions, dr as GenericRectangleOptions, dt as DEFAULT_MINEFIELD_OPTIONS, ea as parameterPresentationTierRank, ei as SECONDARY_DIRECTION_OF_FIRE_DASH, en as DisengageOptions, er as DEFAULT_RADAR_SEARCH_DOCTRINE_OPTIONS, et as OptionsByKind, f as line1DrawRule, fa as canonicalTextAmplifierKey, fi as DEFAULT_STRONG_POINT_OPTIONS, fn as DEFAULT_CLEAR_OPTIONS, fr as DEFAULT_GENERIC_POLYGON_OPTIONS, ft as MinefieldOptions, g as staticPointDrawRule, ga as ControlMeasureDrawRule, gi as BattlePositionOptions, gn as DEFAULT_BYPASS_OPTIONS, gr as BlockArrowHeadStyle, gt as FixMissionTaskOptions, h as dynamicPointDrawRule, ha as AnchorTransformEvent, hi as DEFAULT_CONTAIN_OPTIONS, hn as BypassOptions, hr as GenericLineOptions, ht as DEFAULT_FIX_MISSION_TASK_OPTIONS, i as rectangleDrawRule, ia as AmplifierPlacements, ii as DEFAULT_DIRECTION_OF_SUPPORTING_ATTACK_OPTIONS, in as DEFAULT_COVER_OPTIONS, ir as DEFAULT_GENERIC_TEXT_OPTIONS, it as listControlMeasureMetadata, j as BaselineFrameNormal, ji as DEFAULT_BOUNDARY_OPTIONS, jn as DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS, jr as PickupZoneOptions, jt as AntitankWallOptions, k as snapToMidpointPerpendicular, ki as unproject, kn as LimitOfAdvanceOptions, kr as DEFAULT_AREA_OF_OPERATIONS_OPTIONS, kt as DEFAULT_FORTIFIED_LINE_OPTIONS, l as line24DrawRule, la as TextAmplifierField, li as DirectionOfAttackAviationOptions, ln as CounterattackOptions, lr as GenericCircleOptions, lt as DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS, m as attackByFireDrawRule, ma as resolveAmplifierPlacement, mi as ContainOptions, mn as DEFAULT_CANALIZE_OPTIONS, mr as DEFAULT_GENERIC_LINE_OPTIONS, mt as TurnOptions, n as DEFAULT_AMBUSH_OPTIONS, na as resolveParameterSemanticRole, ni as DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, nn as DelayOptions, nr as RADAR_SEARCH_DOCTRINE_STROKE_COLOR, nt as getControlMeasureMetadataByValue, o as supportByFireDrawRule, oa as GeneratedLabelKey, oi as DEFAULT_DIRECTION_OF_MAIN_ATTACK_OPTIONS, on as TacticalArrowOptions, or as DEFAULT_GENERIC_SECTOR_OPTIONS, ot as ObstacleBypassImpossibleOptions, p as ambushDrawRule, pa as normalizeTextAmplifiers, pi as StrongPointOptions, pn as CanalizeOptions, pr as GenericPolygonOptions, pt as DEFAULT_TURN_OPTIONS, q as ControlMeasure, qi as ControlMeasureMetadata, qn as DEFAULT_ATTACK_BY_FIRE_OPTIONS, qr as DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS, qt as DEFAULT_PENETRATE_OPTIONS, r as sectorDrawRule, ra as AmplifierPlacement, ri as PrincipalDirectionOfFireOptions, rn as CoverOptions, rr as RadarSearchDoctrineOptions, rt as getDefaultOptions, s as line27DrawRule, sa as LabelPlacementOverride, si as DirectionOfMainAttackOptions, sn as CounterattackByFireOptions, sr as GenericSectorOptions, st as DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS, t as AmbushOptions, ta as resolveParameterPresentationTier, ti as SecondaryDirectionOfFireOptions, tn as DEFAULT_DELAY_OPTIONS, tr as RADAR_SEARCH_DOCTRINE_FILL_COLOR, tt as getControlMeasureMetadata, u as line23DrawRule, ua as TextAmplifierKey, ui as DEFAULT_RETAIN_OPTIONS, un as DEFAULT_COUNTERATTACK_OPTIONS, ur as DEFAULT_GENERIC_RECTANGLE_OPTIONS, ut as ObstacleBypassEasyOptions, v as penetrateDrawRule, vi as DEFAULT_GENERIC_C2_LINE_OPTIONS, vn as DEFAULT_BREACH_OPTIONS, vr as DEFAULT_BLOCK_ARROW_OPTIONS, vt as FixOptions, w as MidpointPerpendicularDrawRuleOptions, wi as LabelSizeOptions, wn as DEFAULT_LINE_OF_DEPARTURE_CONTACT_OPTIONS, wr as DEFAULT_MAIN_ATTACK_OPTIONS, wt as TurningMovementOptions, x as blockDrawRule, xi as EngineerWorkLineOptions, xn as DEFAULT_PROBABLE_LINE_OF_DEPLOYMENT_OPTIONS, xr as DEFAULT_CLASSIC_ARROW_OPTIONS, xt as BlockOptions, y as centerRadiusDrawRule, yi as GenericC2LineOptions, yn as BlockMissionTaskOptions, yr as ClassicArrowHeadStyle, yt as DEFAULT_DISRUPT_OPTIONS, z as SimpleStyleRender, zi as DEFAULT_STROKE_DASH_CSS_PIXELS, zn as DEFAULT_BRIDGEHEAD_LINE_OPTIONS, zr as DEFAULT_MOBILE_DEFENSE_OPTIONS, zt as DEFAULT_SEIZE_OPTIONS } from "./index-CwSQl5SE.mjs";
1
+ import { $ as CONTROL_MEASURE_METADATA, $i as ControlMeasurePaintCapability, $n as DEFAULT_ATTACK_HELICOPTER_OPTIONS, $r as StyleHints, $t as DEFAULT_DISRUPT_MISSION_TASK_OPTIONS, A as BaselineFrame, Ai as sphericalBearing, An as DEFAULT_LIMIT_OF_ADVANCE_OPTIONS, Ar as AreaOfOperationsOptions, At as FortifiedAreaOptions, B as toSimpleStyle, Bi as DEFAULT_LABEL_SIZE_CLAMP_CSS_PIXELS, Bn as BridgeheadLineOptions, Br as DEFAULT_ASSEMBLY_AREA_OPTIONS, Bt as WithdrawOptions, C as area27DrawRule, Ci as EngineerWorkLineOptions, Cn as DEFAULT_PROBABLE_LINE_OF_DEPLOYMENT_OPTIONS, Cr as DEFAULT_CLASSIC_ARROW_OPTIONS, Ct as BlockOptions, D as getMidpointPerpendicularSignedDistance, Di as Point2D, Dn as LineOfDepartureContactOptions, Dr as MainAttackOptions, Dt as DEFAULT_FRONTAL_ATTACK_OPTIONS, E as createMidpointPerpendicularDrawRule, Ei as LabelSizeOptions, En as DEFAULT_LINE_OF_DEPARTURE_CONTACT_OPTIONS, Er as DEFAULT_MAIN_ATTACK_OPTIONS, Et as TurningMovementOptions, F as EPSILON, Fi as ControlMeasureOptionHandle, Fn as HandoverLineOptions, Fr as DEFAULT_LANDING_ZONE_OPTIONS, Ft as AntitankDitchOptions, G as foldsBoxTransformOptions, Gi as DEFAULT_STROKE_WIDTH_CSS_PIXELS, Gn as PhaseLineOptions, Gr as AreaDefenseOptions, Gt as DEFAULT_RETIRE_OPTIONS, H as dragControlMeasureOptionHandle, Hi as DEFAULT_LINE_JOIN, Hn as DEFAULT_FORWARD_EDGE_OF_BATTLE_AREA_OPTIONS, Hr as MobileDefenseOptions, Ht as SeizeOptions, I as getMetersPerPixel, Ii as ControlMeasureOptionHandleDragEvent, In as DEFAULT_RELEASE_LINE_OPTIONS, Ir as LandingZoneOptions, It as DEFAULT_ANTITANK_DITCH_OPTIONS, J as renderControlMeasure, Ji as MeasuredText, Jn as AttackByFireOptions, Jr as EncirclementOptions, Jt as RearwardPassageOfLinesOptions, K as freezeOrientationOptions, Ki as LogicalTextStyle, Kn as DEFAULT_FLOT_OPTIONS, Kr as DEFAULT_AREA_DEFENSE_OPTIONS, Kt as RetireOptions, L as roundToFixed, Li as ControlMeasureOptionHandles, Ln as ReleaseLineOptions, Lr as DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS, Lt as DEFAULT_WITHDRAW_UNDER_PRESSURE_OPTIONS, M as BaselineFrameOptions, Mi as BoundaryOptions, Mn as BattleHandoverLineOptions, Mr as DEFAULT_PICKUP_ZONE_OPTIONS, Mt as FortifiedLineOptions, N as BaselineFrameOrigin, Ni as DEFAULT_BOUNDARY_OPTIONS, Nn as DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS, Nr as PickupZoneOptions, Nt as AntitankWallOptions, O as pointOnMidpointPerpendicularAxis, Oi as haversineDistance, On as DEFAULT_LINE_OF_DEPARTURE_OPTIONS, Or as calculateMetrics, Ot as FrontalAttackOptions, P as createBaselineFrame, Pi as BoxTransformDelta, Pn as DEFAULT_HANDOVER_LINE_OPTIONS, Pr as MineType, Pt as DEFAULT_ANTITANK_WALL_OPTIONS, Q as CONTROL_MEASURE_IDS, Qi as ControlMeasureMetadata, Qn as AttackHelicopterOptions, Qr as FeaturePartProps, Qt as GuardOptions, R as SimpleStyleProps, Ri as ControlMeasureRenderContext, Rn as DEFAULT_HOLDING_LINE_OPTIONS, Rr as JointTacticalActionAreaOptions, Rt as WithdrawUnderPressureOptions, S as containDrawRule, Si as DEFAULT_ENGINEER_WORK_LINE_OPTIONS, Sn as DEFAULT_BLOCK_MISSION_TASK_OPTIONS, Sr as ClassicArrowOptions, St as DisruptOptions, T as computeDefaultMidpointPerpendicularPoint, Ti as LightLineOptions, Tn as ProbableLineOfDeploymentOptions, Tr as SupportingAttackOptions, Tt as DEFAULT_TURNING_MOVEMENT_OPTIONS, U as getControlMeasureOptionHandles, Ui as DEFAULT_PORTRAYAL, Un as ForwardEdgeOfBattleAreaOptions, Ur as DEFAULT_ENGAGEMENT_AREA_OPTIONS, Ut as DEFAULT_SCREEN_OPTIONS, V as resolveStyleHints, Vi as DEFAULT_LINE_CAP, Vn as DEFAULT_BRIDGEHEAD_LINE_OPTIONS, Vr as DEFAULT_MOBILE_DEFENSE_OPTIONS, Vt as DEFAULT_SEIZE_OPTIONS, W as applyBoxTransformOptions, Wi as DEFAULT_STROKE_DASH_CSS_PIXELS, Wn as DEFAULT_PHASE_LINE_OPTIONS, Wr as EngagementAreaOptions, Wt as ScreenOptions, X as cloneControlMeasure, Xi as ControlMeasureGeometry, Xn as DEFAULT_SUPPORT_BY_FIRE_OPTIONS, Xr as FinalProtectiveFireOptions, Xt as PenetrateOptions, Y as ControlMeasure, Yi as ControlMeasureFillCapability, Yn as DEFAULT_ATTACK_BY_FIRE_OPTIONS, Yr as DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS, Yt as DEFAULT_PENETRATE_OPTIONS, Z as isKind, Zi as ControlMeasureGeometryType, Zn as SupportByFireOptions, Zr as ControlMeasureRender, Zt as DEFAULT_GUARD_OPTIONS, _ as point12DrawRule, _a as canonicalTextAmplifierKey, _i as DEFAULT_CONTAIN_OPTIONS, _n as BypassOptions, _r as GenericLineOptions, _t as DEFAULT_FIX_MISSION_TASK_OPTIONS, a as axis1DrawRule, aa as parameterPresentationTierRank, ai as PrincipalDirectionOfFireOptions, an as CoverOptions, ar as RadarSearchDoctrineOptions, at as getDefaultOptions, b as disruptDrawRule, ba as AnchorTransformEvent, bi as DEFAULT_GENERIC_C2_LINE_OPTIONS, bn as DEFAULT_BREACH_OPTIONS, br as DEFAULT_BLOCK_ARROW_OPTIONS, bt as FixOptions, c as line26DrawRule, ca as AmplifierPlacement, ci as DEFAULT_DIRECTION_OF_MAIN_ATTACK_OPTIONS, cn as TacticalArrowOptions, cr as DEFAULT_GENERIC_SECTOR_OPTIONS, ct as ObstacleBypassImpossibleOptions, d as turnDrawRule, da as GeneratedLabelKey, di as DirectionOfAttackAviationOptions, dn as CounterattackOptions, dr as GenericCircleOptions, dt as DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS, ea as PARAMETER_PRESENTATION_TIERS, ei as controlMeasureIdFromFeature, en as DisruptMissionTaskOptions, er as AirborneAttackOptions, et as ControlMeasureId, f as line1DrawRule, fa as LabelPlacementOverride, fi as DEFAULT_RETAIN_OPTIONS, fn as DEFAULT_COUNTERATTACK_OPTIONS, fr as DEFAULT_GENERIC_RECTANGLE_OPTIONS, ft as ObstacleBypassEasyOptions, g as staticPointDrawRule, ga as TextAmplifiers, gi as ContainOptions, gn as DEFAULT_CANALIZE_OPTIONS, gr as DEFAULT_GENERIC_LINE_OPTIONS, gt as TurnOptions, h as dynamicPointDrawRule, ha as TextAmplifierKey, hi as StrongPointOptions, hn as CanalizeOptions, hr as GenericPolygonOptions, ht as DEFAULT_TURN_OPTIONS, i as rectangleDrawRule, ia as TextAmplifierDescriptor, ii as DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, in as DelayOptions, ir as RADAR_SEARCH_DOCTRINE_STROKE_COLOR, it as getControlMeasureMetadataByValue, j as BaselineFrameNormal, ji as unproject, jn as LimitOfAdvanceOptions, jr as DEFAULT_AREA_OF_OPERATIONS_OPTIONS, jt as DEFAULT_FORTIFIED_LINE_OPTIONS, k as snapToMidpointPerpendicular, ki as project, kn as LineOfDepartureOptions, kr as computeInitialWidthPoint, kt as DEFAULT_FORTIFIED_AREA_OPTIONS, l as line24DrawRule, la as AmplifierPlacements, li as DirectionOfMainAttackOptions, ln as CounterattackByFireOptions, lr as GenericSectorOptions, lt as DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS, m as attackByFireDrawRule, ma as TextAmplifierField, mi as DEFAULT_STRONG_POINT_OPTIONS, mn as DEFAULT_CLEAR_OPTIONS, mr as DEFAULT_GENERIC_POLYGON_OPTIONS, mt as MinefieldOptions, n as DEFAULT_AMBUSH_OPTIONS, na as ParameterPresentationTier, ni as SECONDARY_DIRECTION_OF_FIRE_DASH, nn as DisengageOptions, nr as DEFAULT_RADAR_SEARCH_DOCTRINE_OPTIONS, nt as OptionsByKind, o as supportByFireDrawRule, oa as resolveParameterPresentationTier, oi as DEFAULT_DIRECTION_OF_SUPPORTING_ATTACK_OPTIONS, on as DEFAULT_COVER_OPTIONS, or as DEFAULT_GENERIC_TEXT_OPTIONS, ot as listControlMeasureMetadata, p as ambushDrawRule, pa as TEXT_AMPLIFIER_FIELDS, pi as RetainOptions, pn as ClearOptions, pr as GenericRectangleOptions, pt as DEFAULT_MINEFIELD_OPTIONS, q as RenderOptions, qi as MeasureTextRequest, qn as FLOTOptions, qr as DEFAULT_ENCIRCLEMENT_OPTIONS, qt as DEFAULT_REARWARD_PASSAGE_OF_LINES_OPTIONS, r as sectorDrawRule, ra as ParameterSemanticRole, ri as SecondaryDirectionOfFireOptions, rn as DEFAULT_DELAY_OPTIONS, rr as RADAR_SEARCH_DOCTRINE_FILL_COLOR, rt as getControlMeasureMetadata, s as line27DrawRule, sa as resolveParameterSemanticRole, si as DirectionOfSupportingAttackOptions, sn as DEFAULT_TACTICAL_ARROW_OPTIONS, sr as GenericTextOptions, st as DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS, t as AmbushOptions, ta as ParamDescriptor, ti as DEFAULT_SECONDARY_DIRECTION_OF_FIRE_OPTIONS, tn as DEFAULT_DISENGAGE_OPTIONS, tr as DEFAULT_AIRBORNE_ATTACK_OPTIONS, tt as ControlMeasureKind, u as line23DrawRule, ua as CanonicalTextAmplifiers, ui as DEFAULT_DIRECTION_OF_ATTACK_AVIATION_OPTIONS, un as DEFAULT_COUNTERATTACK_BY_FIRE_OPTIONS, ur as DEFAULT_GENERIC_CIRCLE_OPTIONS, ut as ObstacleBypassDifficultOptions, v as penetrateDrawRule, va as normalizeTextAmplifiers, vi as BattlePositionOptions, vn as DEFAULT_BYPASS_OPTIONS, vr as BlockArrowHeadStyle, vt as FixMissionTaskOptions, w as MidpointPerpendicularDrawRuleOptions, wi as DEFAULT_LIGHT_LINE_OPTIONS, wn as PROBABLE_LINE_OF_DEPLOYMENT_DASH, wr as DEFAULT_SUPPORTING_ATTACK_OPTIONS, wt as DEFAULT_BLOCK_OPTIONS, x as blockDrawRule, xa as ControlMeasureDrawRule, xi as GenericC2LineOptions, xn as BlockMissionTaskOptions, xr as ClassicArrowHeadStyle, xt as DEFAULT_DISRUPT_OPTIONS, y as centerRadiusDrawRule, ya as resolveAmplifierPlacement, yi as DEFAULT_BATTLE_POSITION_OPTIONS, yn as BreachOptions, yr as BlockArrowOptions, yt as DEFAULT_FIX_OPTIONS, z as SimpleStyleRender, zi as DEFAULT_LABEL_HEIGHT_CSS_PIXELS, zn as HoldingLineOptions, zr as AssemblyAreaOptions, zt as DEFAULT_WITHDRAW_OPTIONS } from "./index-IeI0ELGA.mjs";
2
2
  import { a as PatternId, c as PatternPoint, d as ControlMeasureStyle, f as FillPattern, i as NON_SOLID_FILL_PATTERNS, l as PatternStroke, n as FillPatternCommand, o as PatternPaint, r as FillPatternDefinition, s as PatternPathOperation, t as FILL_PATTERN_DEFINITIONS, u as getFillPatternDefinition } from "./patterns-CcQmmOuJ.mjs";
3
- 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 ContainOptions, type ControlMeasure, type ControlMeasureDrawRule, type ControlMeasureFillCapability, type ControlMeasureGeometry, type ControlMeasureGeometryType, type ControlMeasureId, type ControlMeasureKind, type ControlMeasureMetadata, type ControlMeasurePaintCapability, type ControlMeasureRender, type ControlMeasureRenderContext, 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_CONTAIN_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_ENGAGEMENT_AREA_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_SECTOR_OPTIONS, DEFAULT_GENERIC_TEXT_OPTIONS, DEFAULT_GUARD_OPTIONS, DEFAULT_HANDOVER_LINE_OPTIONS, DEFAULT_HOLDING_LINE_OPTIONS, DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS, DEFAULT_LABEL_HEIGHT_CSS_PIXELS, DEFAULT_LABEL_SIZE_CLAMP_CSS_PIXELS, DEFAULT_LANDING_ZONE_OPTIONS, DEFAULT_LIGHT_LINE_OPTIONS, DEFAULT_LIMIT_OF_ADVANCE_OPTIONS, DEFAULT_LINE_CAP, DEFAULT_LINE_JOIN, DEFAULT_LINE_OF_DEPARTURE_CONTACT_OPTIONS, DEFAULT_LINE_OF_DEPARTURE_OPTIONS, DEFAULT_MAIN_ATTACK_OPTIONS, DEFAULT_MINEFIELD_OPTIONS, DEFAULT_MOBILE_DEFENSE_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_PORTRAYAL, DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, DEFAULT_PROBABLE_LINE_OF_DEPLOYMENT_OPTIONS, DEFAULT_RADAR_SEARCH_DOCTRINE_OPTIONS, DEFAULT_REARWARD_PASSAGE_OF_LINES_OPTIONS, DEFAULT_RELEASE_LINE_OPTIONS, DEFAULT_RETAIN_OPTIONS, DEFAULT_RETIRE_OPTIONS, DEFAULT_SCREEN_OPTIONS, DEFAULT_SECONDARY_DIRECTION_OF_FIRE_OPTIONS, DEFAULT_SEIZE_OPTIONS, DEFAULT_STROKE_DASH_CSS_PIXELS, DEFAULT_STROKE_WIDTH_CSS_PIXELS, 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 EngagementAreaOptions, type EngineerWorkLineOptions, FILL_PATTERN_DEFINITIONS, type FLOTOptions, type FeaturePartProps, type FillPattern, type FillPatternCommand, type FillPatternDefinition, 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 GenericSectorOptions, type GenericTextOptions, type GuardOptions, type HandoverLineOptions, type HoldingLineOptions, type JointTacticalActionAreaOptions, type LabelPlacementOverride, type LabelSizeOptions, type LandingZoneOptions, type LightLineOptions, type LimitOfAdvanceOptions, type LineOfDepartureContactOptions, type LineOfDepartureOptions, type LogicalTextStyle, type MainAttackOptions, type MeasureTextRequest, type MeasuredText, type MidpointPerpendicularDrawRuleOptions, type MineType, type MinefieldOptions, type MobileDefenseOptions, NON_SOLID_FILL_PATTERNS, type ObstacleBypassDifficultOptions, type ObstacleBypassEasyOptions, type ObstacleBypassImpossibleOptions, type OptionsByKind, PARAMETER_PRESENTATION_TIERS, PROBABLE_LINE_OF_DEPLOYMENT_DASH, type ParamDescriptor, type ParameterPresentationTier, type ParameterSemanticRole, type PatternId, type PatternPaint, type PatternPathOperation, type PatternPoint, type PatternStroke, type PenetrateOptions, type PhaseLineOptions, type PickupZoneOptions, type Point2D, type PrincipalDirectionOfFireOptions, type ProbableLineOfDeploymentOptions, RADAR_SEARCH_DOCTRINE_FILL_COLOR, RADAR_SEARCH_DOCTRINE_STROKE_COLOR, type RadarSearchDoctrineOptions, type RearwardPassageOfLinesOptions, type ReleaseLineOptions, type RenderOptions, type RetainOptions, 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, area27DrawRule, attackByFireDrawRule, axis1DrawRule, blockDrawRule, calculateMetrics, canonicalTextAmplifierKey, centerRadiusDrawRule, cloneControlMeasure, computeDefaultMidpointPerpendicularPoint, computeInitialWidthPoint, containDrawRule, controlMeasureIdFromFeature, createBaselineFrame, createMidpointPerpendicularDrawRule, disruptDrawRule, dynamicPointDrawRule, foldsBoxTransformOptions, freezeOrientationOptions, getControlMeasureMetadata, getControlMeasureMetadataByValue, getDefaultOptions, getFillPatternDefinition, getMetersPerPixel, getMidpointPerpendicularSignedDistance, haversineDistance, isKind, line1DrawRule, line23DrawRule, line24DrawRule, line26DrawRule, line27DrawRule, listControlMeasureMetadata, normalizeTextAmplifiers, parameterPresentationTierRank, penetrateDrawRule, point12DrawRule, pointOnMidpointPerpendicularAxis, project, rectangleDrawRule, renderControlMeasure, resolveAmplifierPlacement, resolveParameterPresentationTier, resolveParameterSemanticRole, resolveStyleHints, roundToFixed, sectorDrawRule, snapToMidpointPerpendicular, sphericalBearing, staticPointDrawRule, supportByFireDrawRule, toSimpleStyle, turnDrawRule, unproject };
3
+ 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 ContainOptions, type ControlMeasure, type ControlMeasureDrawRule, type ControlMeasureFillCapability, type ControlMeasureGeometry, type ControlMeasureGeometryType, type ControlMeasureId, type ControlMeasureKind, type ControlMeasureMetadata, type ControlMeasureOptionHandle, type ControlMeasureOptionHandleDragEvent, type ControlMeasureOptionHandles, type ControlMeasurePaintCapability, type ControlMeasureRender, type ControlMeasureRenderContext, 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_CONTAIN_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_ENGAGEMENT_AREA_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_SECTOR_OPTIONS, DEFAULT_GENERIC_TEXT_OPTIONS, DEFAULT_GUARD_OPTIONS, DEFAULT_HANDOVER_LINE_OPTIONS, DEFAULT_HOLDING_LINE_OPTIONS, DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS, DEFAULT_LABEL_HEIGHT_CSS_PIXELS, DEFAULT_LABEL_SIZE_CLAMP_CSS_PIXELS, DEFAULT_LANDING_ZONE_OPTIONS, DEFAULT_LIGHT_LINE_OPTIONS, DEFAULT_LIMIT_OF_ADVANCE_OPTIONS, DEFAULT_LINE_CAP, DEFAULT_LINE_JOIN, DEFAULT_LINE_OF_DEPARTURE_CONTACT_OPTIONS, DEFAULT_LINE_OF_DEPARTURE_OPTIONS, DEFAULT_MAIN_ATTACK_OPTIONS, DEFAULT_MINEFIELD_OPTIONS, DEFAULT_MOBILE_DEFENSE_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_PORTRAYAL, DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, DEFAULT_PROBABLE_LINE_OF_DEPLOYMENT_OPTIONS, DEFAULT_RADAR_SEARCH_DOCTRINE_OPTIONS, DEFAULT_REARWARD_PASSAGE_OF_LINES_OPTIONS, DEFAULT_RELEASE_LINE_OPTIONS, DEFAULT_RETAIN_OPTIONS, DEFAULT_RETIRE_OPTIONS, DEFAULT_SCREEN_OPTIONS, DEFAULT_SECONDARY_DIRECTION_OF_FIRE_OPTIONS, DEFAULT_SEIZE_OPTIONS, DEFAULT_STROKE_DASH_CSS_PIXELS, DEFAULT_STROKE_WIDTH_CSS_PIXELS, 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 EngagementAreaOptions, type EngineerWorkLineOptions, FILL_PATTERN_DEFINITIONS, type FLOTOptions, type FeaturePartProps, type FillPattern, type FillPatternCommand, type FillPatternDefinition, 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 GenericSectorOptions, type GenericTextOptions, type GuardOptions, type HandoverLineOptions, type HoldingLineOptions, type JointTacticalActionAreaOptions, type LabelPlacementOverride, type LabelSizeOptions, type LandingZoneOptions, type LightLineOptions, type LimitOfAdvanceOptions, type LineOfDepartureContactOptions, type LineOfDepartureOptions, type LogicalTextStyle, type MainAttackOptions, type MeasureTextRequest, type MeasuredText, type MidpointPerpendicularDrawRuleOptions, type MineType, type MinefieldOptions, type MobileDefenseOptions, NON_SOLID_FILL_PATTERNS, type ObstacleBypassDifficultOptions, type ObstacleBypassEasyOptions, type ObstacleBypassImpossibleOptions, type OptionsByKind, PARAMETER_PRESENTATION_TIERS, PROBABLE_LINE_OF_DEPLOYMENT_DASH, type ParamDescriptor, type ParameterPresentationTier, type ParameterSemanticRole, type PatternId, type PatternPaint, type PatternPathOperation, type PatternPoint, type PatternStroke, type PenetrateOptions, type PhaseLineOptions, type PickupZoneOptions, type Point2D, type PrincipalDirectionOfFireOptions, type ProbableLineOfDeploymentOptions, RADAR_SEARCH_DOCTRINE_FILL_COLOR, RADAR_SEARCH_DOCTRINE_STROKE_COLOR, type RadarSearchDoctrineOptions, type RearwardPassageOfLinesOptions, type ReleaseLineOptions, type RenderOptions, type RetainOptions, 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, area27DrawRule, attackByFireDrawRule, axis1DrawRule, blockDrawRule, calculateMetrics, canonicalTextAmplifierKey, centerRadiusDrawRule, cloneControlMeasure, computeDefaultMidpointPerpendicularPoint, computeInitialWidthPoint, containDrawRule, controlMeasureIdFromFeature, createBaselineFrame, createMidpointPerpendicularDrawRule, disruptDrawRule, dragControlMeasureOptionHandle, dynamicPointDrawRule, foldsBoxTransformOptions, freezeOrientationOptions, getControlMeasureMetadata, getControlMeasureMetadataByValue, getControlMeasureOptionHandles, getDefaultOptions, getFillPatternDefinition, getMetersPerPixel, getMidpointPerpendicularSignedDistance, haversineDistance, isKind, line1DrawRule, line23DrawRule, line24DrawRule, line26DrawRule, line27DrawRule, listControlMeasureMetadata, normalizeTextAmplifiers, parameterPresentationTierRank, penetrateDrawRule, point12DrawRule, pointOnMidpointPerpendicularAxis, project, rectangleDrawRule, renderControlMeasure, resolveAmplifierPlacement, resolveParameterPresentationTier, resolveParameterSemanticRole, resolveStyleHints, roundToFixed, sectorDrawRule, snapToMidpointPerpendicular, sphericalBearing, staticPointDrawRule, supportByFireDrawRule, toSimpleStyle, turnDrawRule, unproject };
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as DEFAULT_DISRUPT_OPTIONS, $t as DEFAULT_STROKE_DASH_CSS_PIXELS, A as DEFAULT_RETIRE_OPTIONS, An as createBaselineFrame, At as DEFAULT_CONTAIN_OPTIONS, B as DEFAULT_LIMIT_OF_ADVANCE_OPTIONS, Bt as DEFAULT_AREA_DEFENSE_OPTIONS, C as DEFAULT_MAIN_ATTACK_OPTIONS, Cn as containDrawRule, Ct as DEFAULT_BLOCK_MISSION_TASK_OPTIONS, D as DEFAULT_WITHDRAW_OPTIONS, Dn as getMidpointPerpendicularSignedDistance, Dt as DEFAULT_BOUNDARY_OPTIONS, E as DEFAULT_WITHDRAW_UNDER_PRESSURE_OPTIONS, En as createMidpointPerpendicularDrawRule, Et as DEFAULT_LIGHT_LINE_OPTIONS, F as DEFAULT_FORTIFIED_LINE_OPTIONS, Fn as sphericalBearing, Ft as DEFAULT_ANTITANK_DITCH_OPTIONS, G as DEFAULT_HOLDING_LINE_OPTIONS, Gt as canonicalTextAmplifierKey, H as DEFAULT_HANDOVER_LINE_OPTIONS, Ht as DEFAULT_DIRECTION_OF_MAIN_ATTACK_OPTIONS, I as DEFAULT_PROBABLE_LINE_OF_DEPLOYMENT_OPTIONS, In as unproject, It as DEFAULT_ASSEMBLY_AREA_OPTIONS, J as DEFAULT_FLOT_OPTIONS, Jt as DEFAULT_LABEL_HEIGHT_CSS_PIXELS, K as DEFAULT_BRIDGEHEAD_LINE_OPTIONS, Kt as normalizeTextAmplifiers, L as PROBABLE_LINE_OF_DEPLOYMENT_DASH, Ln as EPSILON, Lt as DEFAULT_AREA_OF_OPERATIONS_OPTIONS, M as DEFAULT_PENETRATE_OPTIONS, Mn as computeInitialWidthPoint, Mt as DEFAULT_ATTACK_HELICOPTER_OPTIONS, N as DEFAULT_FRONTAL_ATTACK_OPTIONS, Nn as haversineDistance, Nt as DEFAULT_ATTACK_BY_FIRE_OPTIONS, O as DEFAULT_SEIZE_OPTIONS, On as pointOnMidpointPerpendicularAxis, Ot as DEFAULT_BLOCK_ARROW_OPTIONS, P as DEFAULT_FORTIFIED_AREA_OPTIONS, Pn as project, Pt as DEFAULT_ANTITANK_WALL_OPTIONS, Q as DEFAULT_ENCIRCLEMENT_OPTIONS, Qt as DEFAULT_PORTRAYAL, R as DEFAULT_LINE_OF_DEPARTURE_CONTACT_OPTIONS, Rn as getMetersPerPixel, Rt as DEFAULT_MOBILE_DEFENSE_OPTIONS, S as DEFAULT_MINEFIELD_OPTIONS, Sn as centerRadiusDrawRule, St as DEFAULT_BREACH_OPTIONS, T as DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS, Tn as computeDefaultMidpointPerpendicularPoint, Tt as DEFAULT_ENGINEER_WORK_LINE_OPTIONS, U as DEFAULT_FORWARD_EDGE_OF_BATTLE_AREA_OPTIONS, Ut as DEFAULT_DIRECTION_OF_ATTACK_AVIATION_OPTIONS, V as DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS, Vt as DEFAULT_DIRECTION_OF_SUPPORTING_ATTACK_OPTIONS, W as DEFAULT_RELEASE_LINE_OPTIONS, Wt as TEXT_AMPLIFIER_FIELDS, X as DEFAULT_FIX_OPTIONS, Xt as DEFAULT_LINE_CAP, Y as DEFAULT_FIX_MISSION_TASK_OPTIONS, Yt as DEFAULT_LABEL_SIZE_CLAMP_CSS_PIXELS, Z as DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS, Zt as DEFAULT_LINE_JOIN, _ as DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, _n as staticPointDrawRule, _t as DEFAULT_GENERIC_LINE_OPTIONS, a as DEFINITIONS, an as axis1DrawRule, at as DEFAULT_TACTICAL_ARROW_OPTIONS, b as DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS, bn as disruptDrawRule, bt as DEFAULT_CANALIZE_OPTIONS, c as getDefaultOptions, cn as line26DrawRule, ct as DEFAULT_SUPPORTING_ATTACK_OPTIONS, d as DEFAULT_TURN_OPTIONS, dn as turnDrawRule, dt as RADAR_SEARCH_DOCTRINE_FILL_COLOR, en as DEFAULT_STROKE_WIDTH_CSS_PIXELS, et as DEFAULT_GUARD_OPTIONS, f as DEFAULT_SUPPORT_BY_FIRE_OPTIONS, fn as line1DrawRule, ft as RADAR_SEARCH_DOCTRINE_STROKE_COLOR, g as SECONDARY_DIRECTION_OF_FIRE_DASH, gn as sectorDrawRule, gt as DEFAULT_GENERIC_POLYGON_OPTIONS, h as DEFAULT_SECONDARY_DIRECTION_OF_FIRE_OPTIONS, hn as dynamicPointDrawRule, ht as DEFAULT_GENERIC_RECTANGLE_OPTIONS, i as CONTROL_MEASURE_METADATA, in as rectangleDrawRule, it as DEFAULT_COVER_OPTIONS, j as DEFAULT_REARWARD_PASSAGE_OF_LINES_OPTIONS, jn as calculateMetrics, jt as DEFAULT_BATTLE_POSITION_OPTIONS, k as DEFAULT_SCREEN_OPTIONS, kn as snapToMidpointPerpendicular, kt as DEFAULT_BLOCK_OPTIONS, l as listControlMeasureMetadata, ln as line24DrawRule, lt as DEFAULT_CLEAR_OPTIONS, m as DEFAULT_STRONG_POINT_OPTIONS, mn as attackByFireDrawRule, mt as DEFAULT_GENERIC_SECTOR_OPTIONS, n as resolveStyleHints, nn as DEFAULT_AMBUSH_OPTIONS, nt as DEFAULT_DISENGAGE_OPTIONS, o as getControlMeasureMetadata, on as supportByFireDrawRule, ot as DEFAULT_COUNTERATTACK_BY_FIRE_OPTIONS, p as DEFAULT_RETAIN_OPTIONS, pn as ambushDrawRule, pt as DEFAULT_GENERIC_TEXT_OPTIONS, q as DEFAULT_PHASE_LINE_OPTIONS, qt as resolveAmplifierPlacement, r as CONTROL_MEASURE_IDS, rn as DEFAULT_AIRBORNE_ATTACK_OPTIONS, rt as DEFAULT_DELAY_OPTIONS, s as getControlMeasureMetadataByValue, sn as line27DrawRule, st as DEFAULT_COUNTERATTACK_OPTIONS, t as renderControlMeasure, tt as DEFAULT_DISRUPT_MISSION_TASK_OPTIONS, u as DEFAULT_TURNING_MOVEMENT_OPTIONS, un as line23DrawRule, ut as DEFAULT_RADAR_SEARCH_DOCTRINE_OPTIONS, v as DEFAULT_PICKUP_ZONE_OPTIONS, vn as point12DrawRule, vt as DEFAULT_GENERIC_CIRCLE_OPTIONS, w as DEFAULT_LANDING_ZONE_OPTIONS, wn as area27DrawRule, wt as DEFAULT_GENERIC_C2_LINE_OPTIONS, x as DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS, xn as blockDrawRule, xt as DEFAULT_BYPASS_OPTIONS, y as DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS, yn as penetrateDrawRule, yt as DEFAULT_CLASSIC_ARROW_OPTIONS, z as DEFAULT_LINE_OF_DEPARTURE_OPTIONS, zn as roundToFixed, zt as DEFAULT_ENGAGEMENT_AREA_OPTIONS } from "./renderControlMeasure-DJo_s-lN.mjs";
1
+ import { $ as DEFAULT_DISRUPT_OPTIONS, $t as DEFAULT_STROKE_DASH_CSS_PIXELS, A as DEFAULT_RETIRE_OPTIONS, An as createBaselineFrame, At as DEFAULT_CONTAIN_OPTIONS, B as DEFAULT_LIMIT_OF_ADVANCE_OPTIONS, Bt as DEFAULT_AREA_DEFENSE_OPTIONS, C as DEFAULT_MAIN_ATTACK_OPTIONS, Cn as containDrawRule, Ct as DEFAULT_BLOCK_MISSION_TASK_OPTIONS, D as DEFAULT_WITHDRAW_OPTIONS, Dn as getMidpointPerpendicularSignedDistance, Dt as DEFAULT_BOUNDARY_OPTIONS, E as DEFAULT_WITHDRAW_UNDER_PRESSURE_OPTIONS, En as createMidpointPerpendicularDrawRule, Et as DEFAULT_LIGHT_LINE_OPTIONS, F as DEFAULT_FORTIFIED_LINE_OPTIONS, Fn as sphericalBearing, Ft as DEFAULT_ANTITANK_DITCH_OPTIONS, G as DEFAULT_HOLDING_LINE_OPTIONS, Gt as canonicalTextAmplifierKey, H as DEFAULT_HANDOVER_LINE_OPTIONS, Ht as DEFAULT_DIRECTION_OF_MAIN_ATTACK_OPTIONS, I as DEFAULT_PROBABLE_LINE_OF_DEPLOYMENT_OPTIONS, In as unproject, It as DEFAULT_ASSEMBLY_AREA_OPTIONS, J as DEFAULT_FLOT_OPTIONS, Jt as DEFAULT_LABEL_HEIGHT_CSS_PIXELS, K as DEFAULT_BRIDGEHEAD_LINE_OPTIONS, Kt as normalizeTextAmplifiers, L as PROBABLE_LINE_OF_DEPLOYMENT_DASH, Ln as EPSILON, Lt as DEFAULT_AREA_OF_OPERATIONS_OPTIONS, M as DEFAULT_PENETRATE_OPTIONS, Mn as computeInitialWidthPoint, Mt as DEFAULT_ATTACK_HELICOPTER_OPTIONS, N as DEFAULT_FRONTAL_ATTACK_OPTIONS, Nn as haversineDistance, Nt as DEFAULT_ATTACK_BY_FIRE_OPTIONS, O as DEFAULT_SEIZE_OPTIONS, On as pointOnMidpointPerpendicularAxis, Ot as DEFAULT_BLOCK_ARROW_OPTIONS, P as DEFAULT_FORTIFIED_AREA_OPTIONS, Pn as project, Pt as DEFAULT_ANTITANK_WALL_OPTIONS, Q as DEFAULT_ENCIRCLEMENT_OPTIONS, Qt as DEFAULT_PORTRAYAL, R as DEFAULT_LINE_OF_DEPARTURE_CONTACT_OPTIONS, Rn as getMetersPerPixel, Rt as DEFAULT_MOBILE_DEFENSE_OPTIONS, S as DEFAULT_MINEFIELD_OPTIONS, Sn as centerRadiusDrawRule, St as DEFAULT_BREACH_OPTIONS, T as DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS, Tn as computeDefaultMidpointPerpendicularPoint, Tt as DEFAULT_ENGINEER_WORK_LINE_OPTIONS, U as DEFAULT_FORWARD_EDGE_OF_BATTLE_AREA_OPTIONS, Ut as DEFAULT_DIRECTION_OF_ATTACK_AVIATION_OPTIONS, V as DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS, Vt as DEFAULT_DIRECTION_OF_SUPPORTING_ATTACK_OPTIONS, W as DEFAULT_RELEASE_LINE_OPTIONS, Wt as TEXT_AMPLIFIER_FIELDS, X as DEFAULT_FIX_OPTIONS, Xt as DEFAULT_LINE_CAP, Y as DEFAULT_FIX_MISSION_TASK_OPTIONS, Yt as DEFAULT_LABEL_SIZE_CLAMP_CSS_PIXELS, Z as DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS, Zt as DEFAULT_LINE_JOIN, _ as DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, _n as staticPointDrawRule, _t as DEFAULT_GENERIC_LINE_OPTIONS, a as DEFINITIONS, an as axis1DrawRule, at as DEFAULT_TACTICAL_ARROW_OPTIONS, b as DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS, bn as disruptDrawRule, bt as DEFAULT_CANALIZE_OPTIONS, c as getDefaultOptions, cn as line26DrawRule, ct as DEFAULT_SUPPORTING_ATTACK_OPTIONS, d as DEFAULT_TURN_OPTIONS, dn as turnDrawRule, dt as RADAR_SEARCH_DOCTRINE_FILL_COLOR, en as DEFAULT_STROKE_WIDTH_CSS_PIXELS, et as DEFAULT_GUARD_OPTIONS, f as DEFAULT_SUPPORT_BY_FIRE_OPTIONS, fn as line1DrawRule, ft as RADAR_SEARCH_DOCTRINE_STROKE_COLOR, g as SECONDARY_DIRECTION_OF_FIRE_DASH, gn as sectorDrawRule, gt as DEFAULT_GENERIC_POLYGON_OPTIONS, h as DEFAULT_SECONDARY_DIRECTION_OF_FIRE_OPTIONS, hn as dynamicPointDrawRule, ht as DEFAULT_GENERIC_RECTANGLE_OPTIONS, i as CONTROL_MEASURE_METADATA, in as rectangleDrawRule, it as DEFAULT_COVER_OPTIONS, j as DEFAULT_REARWARD_PASSAGE_OF_LINES_OPTIONS, jn as calculateMetrics, jt as DEFAULT_BATTLE_POSITION_OPTIONS, k as DEFAULT_SCREEN_OPTIONS, kn as snapToMidpointPerpendicular, kt as DEFAULT_BLOCK_OPTIONS, l as listControlMeasureMetadata, ln as line24DrawRule, lt as DEFAULT_CLEAR_OPTIONS, m as DEFAULT_STRONG_POINT_OPTIONS, mn as attackByFireDrawRule, mt as DEFAULT_GENERIC_SECTOR_OPTIONS, n as resolveStyleHints, nn as DEFAULT_AMBUSH_OPTIONS, nt as DEFAULT_DISENGAGE_OPTIONS, o as getControlMeasureMetadata, on as supportByFireDrawRule, ot as DEFAULT_COUNTERATTACK_BY_FIRE_OPTIONS, p as DEFAULT_RETAIN_OPTIONS, pn as ambushDrawRule, pt as DEFAULT_GENERIC_TEXT_OPTIONS, q as DEFAULT_PHASE_LINE_OPTIONS, qt as resolveAmplifierPlacement, r as CONTROL_MEASURE_IDS, rn as DEFAULT_AIRBORNE_ATTACK_OPTIONS, rt as DEFAULT_DELAY_OPTIONS, s as getControlMeasureMetadataByValue, sn as line27DrawRule, st as DEFAULT_COUNTERATTACK_OPTIONS, t as renderControlMeasure, tt as DEFAULT_DISRUPT_MISSION_TASK_OPTIONS, u as DEFAULT_TURNING_MOVEMENT_OPTIONS, un as line23DrawRule, ut as DEFAULT_RADAR_SEARCH_DOCTRINE_OPTIONS, v as DEFAULT_PICKUP_ZONE_OPTIONS, vn as point12DrawRule, vt as DEFAULT_GENERIC_CIRCLE_OPTIONS, w as DEFAULT_LANDING_ZONE_OPTIONS, wn as area27DrawRule, wt as DEFAULT_GENERIC_C2_LINE_OPTIONS, x as DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS, xn as blockDrawRule, xt as DEFAULT_BYPASS_OPTIONS, y as DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS, yn as penetrateDrawRule, yt as DEFAULT_CLASSIC_ARROW_OPTIONS, z as DEFAULT_LINE_OF_DEPARTURE_OPTIONS, zn as roundToFixed, zt as DEFAULT_ENGAGEMENT_AREA_OPTIONS } from "./renderControlMeasure-CclYDSlM.mjs";
2
2
  import { FILL_PATTERN_DEFINITIONS, NON_SOLID_FILL_PATTERNS, getFillPatternDefinition } from "./patterns.mjs";
3
3
  //#region src/metadata.ts
4
4
  const PARAMETER_PRESENTATION_TIERS = [
@@ -56,6 +56,28 @@ function applyBoxTransformOptions(kind, options, delta) {
56
56
  return definition.transformOptions(options ?? {}, delta);
57
57
  }
58
58
  //#endregion
59
+ //#region src/option-handles.ts
60
+ /** Resolve the option-backed reshape handles declared by a measure definition. */
61
+ function getControlMeasureOptionHandles(kind, controlPoints, options) {
62
+ const definition = DEFINITIONS[kind];
63
+ if (!definition.optionHandles) return [];
64
+ return definition.optionHandles.get(controlPoints, options ?? {}).map((handle) => ({
65
+ id: handle.id,
66
+ position: [...handle.position]
67
+ }));
68
+ }
69
+ /** Map a dragged option handle coordinate to the definition-owned options patch. */
70
+ function dragControlMeasureOptionHandle(kind, controlPoints, options, handleId, position) {
71
+ const definition = DEFINITIONS[kind];
72
+ if (!definition.optionHandles) return void 0;
73
+ return definition.optionHandles.drag({
74
+ controlPoints,
75
+ options: options ?? {},
76
+ handleId,
77
+ position
78
+ });
79
+ }
80
+ //#endregion
59
81
  //#region src/instance.ts
60
82
  function isKind(cm, kind) {
61
83
  return cm.kind === kind;
@@ -157,4 +179,4 @@ function toHexChannel(value) {
157
179
  return Math.max(0, Math.min(255, Math.round(value))).toString(16).padStart(2, "0");
158
180
  }
159
181
  //#endregion
160
- 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_CONTAIN_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_ENGAGEMENT_AREA_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_SECTOR_OPTIONS, DEFAULT_GENERIC_TEXT_OPTIONS, DEFAULT_GUARD_OPTIONS, DEFAULT_HANDOVER_LINE_OPTIONS, DEFAULT_HOLDING_LINE_OPTIONS, DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS, DEFAULT_LABEL_HEIGHT_CSS_PIXELS, DEFAULT_LABEL_SIZE_CLAMP_CSS_PIXELS, DEFAULT_LANDING_ZONE_OPTIONS, DEFAULT_LIGHT_LINE_OPTIONS, DEFAULT_LIMIT_OF_ADVANCE_OPTIONS, DEFAULT_LINE_CAP, DEFAULT_LINE_JOIN, DEFAULT_LINE_OF_DEPARTURE_CONTACT_OPTIONS, DEFAULT_LINE_OF_DEPARTURE_OPTIONS, DEFAULT_MAIN_ATTACK_OPTIONS, DEFAULT_MINEFIELD_OPTIONS, DEFAULT_MOBILE_DEFENSE_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_PORTRAYAL, DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, DEFAULT_PROBABLE_LINE_OF_DEPLOYMENT_OPTIONS, DEFAULT_RADAR_SEARCH_DOCTRINE_OPTIONS, DEFAULT_REARWARD_PASSAGE_OF_LINES_OPTIONS, DEFAULT_RELEASE_LINE_OPTIONS, DEFAULT_RETAIN_OPTIONS, DEFAULT_RETIRE_OPTIONS, DEFAULT_SCREEN_OPTIONS, DEFAULT_SECONDARY_DIRECTION_OF_FIRE_OPTIONS, DEFAULT_SEIZE_OPTIONS, DEFAULT_STROKE_DASH_CSS_PIXELS, DEFAULT_STROKE_WIDTH_CSS_PIXELS, 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, FILL_PATTERN_DEFINITIONS, NON_SOLID_FILL_PATTERNS, PARAMETER_PRESENTATION_TIERS, PROBABLE_LINE_OF_DEPLOYMENT_DASH, RADAR_SEARCH_DOCTRINE_FILL_COLOR, RADAR_SEARCH_DOCTRINE_STROKE_COLOR, SECONDARY_DIRECTION_OF_FIRE_DASH, TEXT_AMPLIFIER_FIELDS, ambushDrawRule, applyBoxTransformOptions, area27DrawRule, attackByFireDrawRule, axis1DrawRule, blockDrawRule, calculateMetrics, canonicalTextAmplifierKey, centerRadiusDrawRule, cloneControlMeasure, computeDefaultMidpointPerpendicularPoint, computeInitialWidthPoint, containDrawRule, controlMeasureIdFromFeature, createBaselineFrame, createMidpointPerpendicularDrawRule, disruptDrawRule, dynamicPointDrawRule, foldsBoxTransformOptions, freezeOrientationOptions, getControlMeasureMetadata, getControlMeasureMetadataByValue, getDefaultOptions, getFillPatternDefinition, getMetersPerPixel, getMidpointPerpendicularSignedDistance, haversineDistance, isKind, line1DrawRule, line23DrawRule, line24DrawRule, line26DrawRule, line27DrawRule, listControlMeasureMetadata, normalizeTextAmplifiers, parameterPresentationTierRank, penetrateDrawRule, point12DrawRule, pointOnMidpointPerpendicularAxis, project, rectangleDrawRule, renderControlMeasure, resolveAmplifierPlacement, resolveParameterPresentationTier, resolveParameterSemanticRole, resolveStyleHints, roundToFixed, sectorDrawRule, snapToMidpointPerpendicular, sphericalBearing, staticPointDrawRule, supportByFireDrawRule, toSimpleStyle, turnDrawRule, unproject };
182
+ 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_CONTAIN_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_ENGAGEMENT_AREA_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_SECTOR_OPTIONS, DEFAULT_GENERIC_TEXT_OPTIONS, DEFAULT_GUARD_OPTIONS, DEFAULT_HANDOVER_LINE_OPTIONS, DEFAULT_HOLDING_LINE_OPTIONS, DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS, DEFAULT_LABEL_HEIGHT_CSS_PIXELS, DEFAULT_LABEL_SIZE_CLAMP_CSS_PIXELS, DEFAULT_LANDING_ZONE_OPTIONS, DEFAULT_LIGHT_LINE_OPTIONS, DEFAULT_LIMIT_OF_ADVANCE_OPTIONS, DEFAULT_LINE_CAP, DEFAULT_LINE_JOIN, DEFAULT_LINE_OF_DEPARTURE_CONTACT_OPTIONS, DEFAULT_LINE_OF_DEPARTURE_OPTIONS, DEFAULT_MAIN_ATTACK_OPTIONS, DEFAULT_MINEFIELD_OPTIONS, DEFAULT_MOBILE_DEFENSE_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_PORTRAYAL, DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, DEFAULT_PROBABLE_LINE_OF_DEPLOYMENT_OPTIONS, DEFAULT_RADAR_SEARCH_DOCTRINE_OPTIONS, DEFAULT_REARWARD_PASSAGE_OF_LINES_OPTIONS, DEFAULT_RELEASE_LINE_OPTIONS, DEFAULT_RETAIN_OPTIONS, DEFAULT_RETIRE_OPTIONS, DEFAULT_SCREEN_OPTIONS, DEFAULT_SECONDARY_DIRECTION_OF_FIRE_OPTIONS, DEFAULT_SEIZE_OPTIONS, DEFAULT_STROKE_DASH_CSS_PIXELS, DEFAULT_STROKE_WIDTH_CSS_PIXELS, 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, FILL_PATTERN_DEFINITIONS, NON_SOLID_FILL_PATTERNS, PARAMETER_PRESENTATION_TIERS, PROBABLE_LINE_OF_DEPLOYMENT_DASH, RADAR_SEARCH_DOCTRINE_FILL_COLOR, RADAR_SEARCH_DOCTRINE_STROKE_COLOR, SECONDARY_DIRECTION_OF_FIRE_DASH, TEXT_AMPLIFIER_FIELDS, ambushDrawRule, applyBoxTransformOptions, area27DrawRule, attackByFireDrawRule, axis1DrawRule, blockDrawRule, calculateMetrics, canonicalTextAmplifierKey, centerRadiusDrawRule, cloneControlMeasure, computeDefaultMidpointPerpendicularPoint, computeInitialWidthPoint, containDrawRule, controlMeasureIdFromFeature, createBaselineFrame, createMidpointPerpendicularDrawRule, disruptDrawRule, dragControlMeasureOptionHandle, dynamicPointDrawRule, foldsBoxTransformOptions, freezeOrientationOptions, getControlMeasureMetadata, getControlMeasureMetadataByValue, getControlMeasureOptionHandles, getDefaultOptions, getFillPatternDefinition, getMetersPerPixel, getMidpointPerpendicularSignedDistance, haversineDistance, isKind, line1DrawRule, line23DrawRule, line24DrawRule, line26DrawRule, line27DrawRule, listControlMeasureMetadata, normalizeTextAmplifiers, parameterPresentationTierRank, penetrateDrawRule, point12DrawRule, pointOnMidpointPerpendicularAxis, project, rectangleDrawRule, renderControlMeasure, resolveAmplifierPlacement, resolveParameterPresentationTier, resolveParameterSemanticRole, resolveStyleHints, roundToFixed, sectorDrawRule, snapToMidpointPerpendicular, sphericalBearing, staticPointDrawRule, supportByFireDrawRule, toSimpleStyle, turnDrawRule, unproject };
@@ -1,4 +1,4 @@
1
- import { Q as ControlMeasureId, da as TextAmplifiers } from "../index-CwSQl5SE.mjs";
1
+ import { et as ControlMeasureId, ga as TextAmplifiers } from "../index-IeI0ELGA.mjs";
2
2
  import { f as FillPattern } from "../patterns-CcQmmOuJ.mjs";
3
3
  import { FeatureCollection, Geometry } from "geojson";
4
4
 
@@ -1,4 +1,4 @@
1
- import { a as DEFINITIONS, t as renderControlMeasure } from "../renderControlMeasure-DJo_s-lN.mjs";
1
+ import { a as DEFINITIONS, t as renderControlMeasure } from "../renderControlMeasure-CclYDSlM.mjs";
2
2
  import { FILL_PATTERN_DEFINITIONS, NON_SOLID_FILL_PATTERNS } from "../patterns.mjs";
3
3
  //#region src/preview/index.ts
4
4
  /** Side length (SVG units) of the repeating non-mine tile in {@link PREVIEW_FILL_PATTERNS}. */
@@ -130,15 +130,27 @@ const destinationPoint = (origin, distance, bearing) => {
130
130
  //#endregion
131
131
  //#region src/internal/vector-utils.ts
132
132
  /**
133
- * Offsets a polyline using Miter Joins or Round Joins.
133
+ * Offsets a polyline to both sides at once, using Miter Joins or Round Joins.
134
+ * `offsets` carries one half-width per vertex, so the outline may taper along
135
+ * its centerline; both sides read the same array rather than materialising a
136
+ * negated copy per geometry pass.
134
137
  */
135
- function offsetPolyline(points, offset, rounded = false, segments = 5) {
138
+ function offsetPolylineSides(points, offsets, rounded = false, segments = 5) {
139
+ return {
140
+ left: offsetPolylineWithOffsets(points, offsets, rounded, segments, 1),
141
+ right: offsetPolylineWithOffsets(points, offsets, rounded, segments, -1)
142
+ };
143
+ }
144
+ /** One side of {@link offsetPolylineSides}; `sign` picks which. */
145
+ function offsetPolylineWithOffsets(points, offsets, rounded, segments, sign) {
136
146
  if (points.length < 2) return points;
147
+ if (offsets.length !== points.length) return points;
137
148
  const result = [];
138
149
  const N = points.length;
139
150
  for (let i = 0; i < N; i++) {
140
151
  const p = points[i];
141
152
  if (!p) continue;
153
+ const offset = offsets[i] * sign;
142
154
  if (i === 0) {
143
155
  const next = points[i + 1];
144
156
  if (next) {
@@ -195,6 +207,17 @@ function offsetPolyline(points, offset, rounded = false, segments = 5) {
195
207
  }
196
208
  return result;
197
209
  }
210
+ /** Linearly interpolates values by distance along a polyline, not vertex count. */
211
+ function interpolatePolylineValues(points, startValue, endValue) {
212
+ const distances = [0];
213
+ for (let i = 1; i < points.length; i++) distances.push(distances[i - 1] + vecMag(vecSub(points[i], points[i - 1])));
214
+ const totalLength = distances.at(-1) ?? 0;
215
+ if (totalLength < 1e-6) return points.map(() => endValue);
216
+ return distances.map((distance) => {
217
+ const progress = distance / totalLength;
218
+ return startValue + (endValue - startValue) * progress;
219
+ });
220
+ }
198
221
  function vecAdd(a, b) {
199
222
  return [a[0] + b[0], a[1] + b[1]];
200
223
  }
@@ -248,9 +271,81 @@ function lineIntersection(p1, p2, p3, p4) {
248
271
  }
249
272
  //#endregion
250
273
  //#region src/attack-utils.ts
251
- const DEFAULT_SHAFT_WIDTH_RATIO = .6;
274
+ const DEFAULT_SHAFT_WIDTH_RATIO$1 = .6;
275
+ const DEFAULT_REAR_WIDTH_RATIO = DEFAULT_SHAFT_WIDTH_RATIO$1;
252
276
  const SHAFT_MIN_RATIO = .1;
253
277
  const SHAFT_MAX_RATIO = .9;
278
+ const REAR_WIDTH_OPTION_HANDLE_ID = "rear-width";
279
+ const SHAFT_WIDTH_OPTION_HANDLE_ID = "shaft-width";
280
+ /**
281
+ * Creates the definition-owned rear-/shaft-width handle pair shared by every
282
+ * variable-width arrow body. Callers supply only how their own geometry maps
283
+ * onto {@link WidthHandleGeometry}; placement (the two ends of the left edge)
284
+ * and the drag math (perpendicular distance from the dragged point to the
285
+ * matching centerline segment, over the reference half-width) live here once.
286
+ */
287
+ function createWidthOptionHandles(config) {
288
+ return {
289
+ get(controlPoints, options) {
290
+ const geometry = config.geometry(controlPoints, options);
291
+ const rearLeft = geometry?.leftEdge[0];
292
+ const neckLeft = geometry?.leftEdge.at(-1);
293
+ if (!rearLeft || !neckLeft) return [];
294
+ return [{
295
+ id: REAR_WIDTH_OPTION_HANDLE_ID,
296
+ position: unproject(rearLeft[0], rearLeft[1])
297
+ }, {
298
+ id: SHAFT_WIDTH_OPTION_HANDLE_ID,
299
+ position: unproject(neckLeft[0], neckLeft[1])
300
+ }];
301
+ },
302
+ drag({ controlPoints, options, handleId, position }) {
303
+ const geometry = config.geometry(controlPoints, options);
304
+ if (!geometry || geometry.referenceHalfWidth < 1e-6) return void 0;
305
+ const rear = handleId === REAR_WIDTH_OPTION_HANDLE_ID;
306
+ if (!rear && !(handleId === "shaft-width")) return void 0;
307
+ const from = rear ? geometry.spine[0] : geometry.spine.at(-2);
308
+ const to = rear ? geometry.spine[1] : geometry.spine.at(-1);
309
+ if (!from || !to) return void 0;
310
+ const ratio = clamp(pointToInfiniteLineDistance(project(position[0], position[1]), from, to) / geometry.referenceHalfWidth, config.minRatio, rear ? config.maxRearRatio : config.maxShaftRatio);
311
+ return rear ? { rearWidthRatio: ratio } : { shaftWidthRatio: ratio };
312
+ }
313
+ };
314
+ }
315
+ /**
316
+ * The width handles for attack bodies built by {@link processAttackGeometry},
317
+ * whose ratios are fractions of the arrowhead half-width. A coordinate resolver
318
+ * lets derivative measures (Counterattack by Fire) map their authored Axis1
319
+ * points to the body coordinates first.
320
+ */
321
+ function createVariableWidthAttackOptionHandles(resolveCoordinates = (points) => points) {
322
+ return createWidthOptionHandles({
323
+ geometry(controlPoints, options) {
324
+ const coordinates = resolveCoordinates(controlPoints);
325
+ if (!coordinates) return null;
326
+ const { geometry } = processAttackGeometry(coordinates, options);
327
+ const outerLeft = geometry?.headRing[0];
328
+ if (!geometry || !outerLeft) return null;
329
+ return {
330
+ spine: geometry.shaftCenterline,
331
+ leftEdge: geometry.shaftLeft,
332
+ referenceHalfWidth: vecMag(vecSub(outerLeft, geometry.ptBase))
333
+ };
334
+ },
335
+ minRatio: SHAFT_MIN_RATIO,
336
+ maxRearRatio: 3,
337
+ maxShaftRatio: SHAFT_MAX_RATIO
338
+ });
339
+ }
340
+ const variableWidthAttackOptionHandles = createVariableWidthAttackOptionHandles();
341
+ /**
342
+ * The single home of the "rear inherits shaft" rule: an omitted `rearWidthRatio`
343
+ * leaves the body parallel by matching the effective shaft ratio. Every
344
+ * variable-width body resolves the option through here so the rule cannot drift.
345
+ */
346
+ function resolveRearWidthRatio(options, shaftRatio) {
347
+ return options.rearWidthRatio ?? shaftRatio;
348
+ }
254
349
  /**
255
350
  * Processes input coordinates and options to generate the core symbol geometry.
256
351
  * This handles validation, default values, projection, and geometry calculation.
@@ -259,6 +354,7 @@ function processAttackGeometry(coordinates, options = {}) {
259
354
  const shaftRatio = clamp(options.shaftWidthRatio ?? .6, SHAFT_MIN_RATIO, SHAFT_MAX_RATIO);
260
355
  const smooth = options.smooth ?? false;
261
356
  const smoothResolution = options.smoothResolution ?? 5;
357
+ const rearRatio = clamp(resolveRearWidthRatio(options, shaftRatio), SHAFT_MIN_RATIO, 3);
262
358
  const points = coordinates.map((c) => project(c[0], c[1]));
263
359
  const numPoints = points.length;
264
360
  const ptTip = points[0];
@@ -268,9 +364,9 @@ function processAttackGeometry(coordinates, options = {}) {
268
364
  const p = points[i];
269
365
  if (p) spinePoints.push(p);
270
366
  }
271
- return { geometry: calculateSymbolGeometry(ptTip, ptWidth, spinePoints, shaftRatio, smooth, smoothResolution) };
367
+ return { geometry: calculateSymbolGeometry(ptTip, ptWidth, spinePoints, shaftRatio, rearRatio, smooth, smoothResolution) };
272
368
  }
273
- function calculateSymbolGeometry(ptTip, ptWidth, spine, shaftRatio, smooth, smoothResolution) {
369
+ function calculateSymbolGeometry(ptTip, ptWidth, spine, shaftRatio, rearWidthRatio, smooth, smoothResolution) {
274
370
  const initialNeck = spine[spine.length - 1];
275
371
  if (!initialNeck) return null;
276
372
  const initialTipDir = vecNorm(vecSub(ptTip, initialNeck));
@@ -323,10 +419,11 @@ function calculateSymbolGeometry(ptTip, ptWidth, spine, shaftRatio, smooth, smoo
323
419
  outerLeft
324
420
  ];
325
421
  const fullSpine = [...remainingSpine, shaftEndCenter];
422
+ const { left: shaftLeft, right: shaftRight } = offsetPolylineSides(fullSpine, interpolatePolylineValues(fullSpine, headHalfWidth * rearWidthRatio, shaftHalfWidth), smooth, smoothResolution);
326
423
  return {
327
424
  shaftCenterline: fullSpine,
328
- shaftLeft: offsetPolyline(fullSpine, shaftHalfWidth, smooth, smoothResolution),
329
- shaftRight: offsetPolyline(fullSpine, -shaftHalfWidth, smooth, smoothResolution),
425
+ shaftLeft,
426
+ shaftRight,
330
427
  headRing,
331
428
  ptTip,
332
429
  ptNeck,
@@ -1726,6 +1823,16 @@ const ATTACK_SHAFT_PARAMS = [
1726
1823
  max: 1,
1727
1824
  step: .05
1728
1825
  },
1826
+ {
1827
+ key: "rearWidthRatio",
1828
+ presentationTier: "advanced",
1829
+ label: "Rear width",
1830
+ description: "Width at the rear of the shaft as a ratio of the arrowhead width.",
1831
+ type: "number",
1832
+ min: .1,
1833
+ max: 2,
1834
+ step: .05
1835
+ },
1729
1836
  {
1730
1837
  key: "smooth",
1731
1838
  label: "Smooth",
@@ -1954,7 +2061,8 @@ const AREA_TEXT_AMPLIFIERS_DESIGNATION_HOSTILE = AREA_TEXT_AMPLIFIERS.filter((d)
1954
2061
  //#endregion
1955
2062
  //#region src/generators/cm15-maneuver-areas/airborneAttack.ts
1956
2063
  const DEFAULT_AIRBORNE_ATTACK_OPTIONS = {
1957
- shaftWidthRatio: DEFAULT_SHAFT_WIDTH_RATIO,
2064
+ shaftWidthRatio: DEFAULT_SHAFT_WIDTH_RATIO$1,
2065
+ rearWidthRatio: DEFAULT_REAR_WIDTH_RATIO,
1958
2066
  smooth: false,
1959
2067
  smoothResolution: 5
1960
2068
  };
@@ -2019,7 +2127,8 @@ const AIRBORNE_ATTACK = defineControlMeasure({
2019
2127
  metadata: AIRBORNE_ATTACK_METADATA,
2020
2128
  generator: createAirborneAttack,
2021
2129
  defaultOptions: DEFAULT_AIRBORNE_ATTACK_OPTIONS,
2022
- rule: axis1DrawRule
2130
+ rule: axis1DrawRule,
2131
+ optionHandles: variableWidthAttackOptionHandles
2023
2132
  });
2024
2133
  /**
2025
2134
  * Reacts to an **input-contract** violation according to `mode`: `throw`
@@ -5856,7 +5965,8 @@ const ATTACK_BY_FIRE = defineControlMeasure({
5856
5965
  //#endregion
5857
5966
  //#region src/generators/cm15-maneuver-areas/attackHelicopter.ts
5858
5967
  const DEFAULT_ATTACK_HELICOPTER_OPTIONS = {
5859
- shaftWidthRatio: DEFAULT_SHAFT_WIDTH_RATIO,
5968
+ shaftWidthRatio: DEFAULT_SHAFT_WIDTH_RATIO$1,
5969
+ rearWidthRatio: DEFAULT_REAR_WIDTH_RATIO,
5860
5970
  smooth: false,
5861
5971
  smoothResolution: 5,
5862
5972
  symbolHeightRatio: .45,
@@ -6075,7 +6185,8 @@ const ATTACK_HELICOPTER = defineControlMeasure({
6075
6185
  metadata: ATTACK_HELICOPTER_METADATA,
6076
6186
  generator: createAttackHelicopter,
6077
6187
  defaultOptions: DEFAULT_ATTACK_HELICOPTER_OPTIONS,
6078
- rule: axis1DrawRule
6188
+ rule: axis1DrawRule,
6189
+ optionHandles: variableWidthAttackOptionHandles
6079
6190
  });
6080
6191
  //#endregion
6081
6192
  //#region src/generators/cm15-maneuver-areas/battlePosition.ts
@@ -6710,8 +6821,12 @@ const BRIDGE_OR_GAP = defineControlMeasure({
6710
6821
  const DEFAULT_SMOOTH_RESOLUTION$5 = 12;
6711
6822
  const MIN_SMOOTH_RESOLUTION$1 = 2;
6712
6823
  const MAX_SMOOTH_RESOLUTION$1 = 64;
6824
+ const DEFAULT_SHAFT_WIDTH_RATIO = .06;
6825
+ const MIN_SHAFT_WIDTH_RATIO = .01;
6826
+ const MAX_SHAFT_WIDTH_RATIO = .3;
6713
6827
  const DEFAULT_BLOCK_ARROW_OPTIONS = {
6714
- shaftWidthRatio: .06,
6828
+ shaftWidthRatio: DEFAULT_SHAFT_WIDTH_RATIO,
6829
+ rearWidthRatio: DEFAULT_SHAFT_WIDTH_RATIO,
6715
6830
  arrowheadStyle: "triangle",
6716
6831
  arrowheadWidthRatio: .18,
6717
6832
  arrowheadLengthRatio: .22,
@@ -6743,8 +6858,18 @@ const BLOCK_ARROW_METADATA = {
6743
6858
  label: "Shaft width",
6744
6859
  description: "Shaft band width as a fraction of the total path length",
6745
6860
  type: "number",
6746
- min: .01,
6747
- max: .3,
6861
+ min: MIN_SHAFT_WIDTH_RATIO,
6862
+ max: MAX_SHAFT_WIDTH_RATIO,
6863
+ step: .01
6864
+ },
6865
+ {
6866
+ key: "rearWidthRatio",
6867
+ presentationTier: "advanced",
6868
+ label: "Rear width",
6869
+ description: "Width at the rear of the shaft as a fraction of the total path length",
6870
+ type: "number",
6871
+ min: MIN_SHAFT_WIDTH_RATIO,
6872
+ max: MAX_SHAFT_WIDTH_RATIO,
6748
6873
  step: .01
6749
6874
  },
6750
6875
  {
@@ -6835,25 +6960,42 @@ const BLOCK_ARROW_METADATA = {
6835
6960
  * right side of the shaft.
6836
6961
  */
6837
6962
  function createBlockArrow(coordinates, options = {}) {
6838
- const { shaftWidthRatio, arrowheadStyle, arrowheadWidthRatio, arrowheadLengthRatio, smooth, smoothResolution, filled } = {
6839
- ...DEFAULT_BLOCK_ARROW_OPTIONS,
6840
- ...options
6841
- };
6842
- const axis1 = axis1Geometry(coordinates);
6843
- const axis = arrowAxis(axis1.path);
6844
- if (!axis) return {
6963
+ const resolved = resolveBlockArrowOptions(options);
6964
+ const geometry = calculateBlockArrowGeometry(coordinates, resolved);
6965
+ if (!geometry) return {
6845
6966
  type: "FeatureCollection",
6846
6967
  features: []
6847
6968
  };
6969
+ const { ring } = geometry;
6970
+ return {
6971
+ type: "FeatureCollection",
6972
+ features: [{
6973
+ type: "Feature",
6974
+ properties: {
6975
+ part: "body",
6976
+ fill: resolved.filled
6977
+ },
6978
+ geometry: {
6979
+ type: "Polygon",
6980
+ coordinates: [ring.map((p) => unproject(p[0], p[1]))]
6981
+ }
6982
+ }]
6983
+ };
6984
+ }
6985
+ function calculateBlockArrowGeometry(coordinates, options) {
6986
+ const axis1 = axis1Geometry(coordinates);
6987
+ const axis = arrowAxis(axis1.path);
6988
+ if (!axis) return null;
6848
6989
  const { pts, pathLength, tip, dir, perp, segLength } = axis;
6849
- const requestedHeadLen = axis1.headLength ?? pathLength * arrowheadLengthRatio;
6990
+ const requestedHeadLen = axis1.headLength ?? pathLength * options.arrowheadLengthRatio;
6850
6991
  const headLen = Math.min(requestedHeadLen, segLength * .95);
6851
- const halfShaft = pathLength * shaftWidthRatio / 2;
6852
- const halfHead = axis1.headHalfWidth ?? pathLength * arrowheadWidthRatio / 2;
6992
+ const halfShaft = pathLength * options.shaftWidthRatio / 2;
6993
+ const halfRear = pathLength * options.rearWidthRatio / 2;
6994
+ const halfHead = axis1.headHalfWidth ?? pathLength * options.arrowheadWidthRatio / 2;
6853
6995
  const onAxis = (d, side = 0) => [tip[0] - dir[0] * d + perp[0] * side, tip[1] - dir[1] * d + perp[1] * side];
6854
6996
  let shaftEndDist;
6855
6997
  let headPts;
6856
- switch (arrowheadStyle) {
6998
+ switch (options.arrowheadStyle) {
6857
6999
  case "barbed":
6858
7000
  shaftEndDist = headLen * .55;
6859
7001
  headPts = [
@@ -6911,9 +7053,9 @@ function createBlockArrow(coordinates, options = {}) {
6911
7053
  break;
6912
7054
  }
6913
7055
  let spine = [...pts.slice(0, -1), onAxis(shaftEndDist)];
6914
- if (smooth) spine = catmullRom(spine, normalizeSmoothResolution$1(smoothResolution));
6915
- const leftSide = offsetPolyline(spine, halfShaft);
6916
- const rightSide = offsetPolyline(spine, -halfShaft);
7056
+ if (options.smooth) spine = catmullRom(spine, normalizeSmoothResolution$1(options.smoothResolution));
7057
+ const widths = interpolatePolylineValues(spine, halfRear, halfShaft);
7058
+ const { left: leftSide, right: rightSide } = offsetPolylineSides(spine, widths);
6917
7059
  const ring = [
6918
7060
  ...leftSide,
6919
7061
  ...headPts,
@@ -6921,18 +7063,20 @@ function createBlockArrow(coordinates, options = {}) {
6921
7063
  ];
6922
7064
  ring.push(ring[0]);
6923
7065
  return {
6924
- type: "FeatureCollection",
6925
- features: [{
6926
- type: "Feature",
6927
- properties: {
6928
- part: "body",
6929
- fill: filled
6930
- },
6931
- geometry: {
6932
- type: "Polygon",
6933
- coordinates: [ring.map((p) => unproject(p[0], p[1]))]
6934
- }
6935
- }]
7066
+ ring,
7067
+ spine,
7068
+ leftSide,
7069
+ pathLength
7070
+ };
7071
+ }
7072
+ function resolveBlockArrowOptions(options) {
7073
+ const resolved = {
7074
+ ...DEFAULT_BLOCK_ARROW_OPTIONS,
7075
+ ...options
7076
+ };
7077
+ return {
7078
+ ...resolved,
7079
+ rearWidthRatio: resolveRearWidthRatio(options, resolved.shaftWidthRatio)
6936
7080
  };
6937
7081
  }
6938
7082
  const BLOCK_ARROW = defineControlMeasure({
@@ -6940,6 +7084,20 @@ const BLOCK_ARROW = defineControlMeasure({
6940
7084
  generator: createBlockArrow,
6941
7085
  defaultOptions: DEFAULT_BLOCK_ARROW_OPTIONS,
6942
7086
  rule: axis1DrawRule,
7087
+ optionHandles: createWidthOptionHandles({
7088
+ geometry(controlPoints, options) {
7089
+ const geometry = calculateBlockArrowGeometry(controlPoints, resolveBlockArrowOptions(options));
7090
+ if (!geometry) return null;
7091
+ return {
7092
+ spine: geometry.spine,
7093
+ leftEdge: geometry.leftSide,
7094
+ referenceHalfWidth: geometry.pathLength / 2
7095
+ };
7096
+ },
7097
+ minRatio: MIN_SHAFT_WIDTH_RATIO,
7098
+ maxRearRatio: MAX_SHAFT_WIDTH_RATIO,
7099
+ maxShaftRatio: MAX_SHAFT_WIDTH_RATIO
7100
+ }),
6943
7101
  previewSample: {
6944
7102
  controlPoints: [
6945
7103
  [1.4, 0],
@@ -9392,7 +9550,8 @@ const CLEAR = defineControlMeasure({
9392
9550
  //#endregion
9393
9551
  //#region src/generators/cm15-maneuver-areas/supportingAttack.ts
9394
9552
  const DEFAULT_SUPPORTING_ATTACK_OPTIONS = {
9395
- shaftWidthRatio: DEFAULT_SHAFT_WIDTH_RATIO,
9553
+ shaftWidthRatio: DEFAULT_SHAFT_WIDTH_RATIO$1,
9554
+ rearWidthRatio: DEFAULT_REAR_WIDTH_RATIO,
9396
9555
  smooth: false,
9397
9556
  smoothResolution: 5
9398
9557
  };
@@ -9464,12 +9623,14 @@ const SUPPORTING_ATTACK = defineControlMeasure({
9464
9623
  metadata: SUPPORTING_ATTACK_METADATA,
9465
9624
  generator: createSupportingAttack,
9466
9625
  defaultOptions: DEFAULT_SUPPORTING_ATTACK_OPTIONS,
9467
- rule: axis1DrawRule
9626
+ rule: axis1DrawRule,
9627
+ optionHandles: variableWidthAttackOptionHandles
9468
9628
  });
9469
9629
  //#endregion
9470
9630
  //#region src/generators/cm34-mission-tasks/counterattack.ts
9471
9631
  const DEFAULT_COUNTERATTACK_OPTIONS = {
9472
- shaftWidthRatio: DEFAULT_SHAFT_WIDTH_RATIO,
9632
+ shaftWidthRatio: DEFAULT_SHAFT_WIDTH_RATIO$1,
9633
+ rearWidthRatio: DEFAULT_REAR_WIDTH_RATIO,
9473
9634
  smooth: false,
9474
9635
  smoothResolution: 5,
9475
9636
  labelPosition: 1
@@ -9554,6 +9715,7 @@ const COUNTERATTACK = defineControlMeasure({
9554
9715
  generator: createCounterattack,
9555
9716
  defaultOptions: DEFAULT_COUNTERATTACK_OPTIONS,
9556
9717
  rule: axis1DrawRule,
9718
+ optionHandles: variableWidthAttackOptionHandles,
9557
9719
  previewSample: {
9558
9720
  controlPoints: [
9559
9721
  [1, 0],
@@ -9714,6 +9876,7 @@ const COUNTERATTACK_BY_FIRE = defineControlMeasure({
9714
9876
  generator: createCounterattackByFire,
9715
9877
  defaultOptions: DEFAULT_COUNTERATTACK_BY_FIRE_OPTIONS,
9716
9878
  rule: counterattackByFireDrawRule,
9879
+ optionHandles: createVariableWidthAttackOptionHandles(counterattackByFireBodyCoordinates),
9717
9880
  previewSample: {
9718
9881
  controlPoints: [
9719
9882
  [1.35, 0],
@@ -13153,7 +13316,8 @@ const FORTIFIED_AREA = defineControlMeasure({
13153
13316
  //#endregion
13154
13317
  //#region src/generators/cm15-maneuver-areas/maneuver-arrow-task-shared.ts
13155
13318
  const DEFAULT_MANEUVER_ARROW_TASK_OPTIONS = {
13156
- shaftWidthRatio: DEFAULT_SHAFT_WIDTH_RATIO,
13319
+ shaftWidthRatio: DEFAULT_SHAFT_WIDTH_RATIO$1,
13320
+ rearWidthRatio: DEFAULT_REAR_WIDTH_RATIO,
13157
13321
  smooth: false,
13158
13322
  smoothResolution: 5,
13159
13323
  crossbarLengthRatio: 1.1,
@@ -13162,10 +13326,14 @@ const DEFAULT_MANEUVER_ARROW_TASK_OPTIONS = {
13162
13326
  labelPadding: 0
13163
13327
  };
13164
13328
  function createManeuverArrowTask(coordinates, options, textAmplifiers, config) {
13165
- const resolved = {
13329
+ const merged = {
13166
13330
  ...DEFAULT_MANEUVER_ARROW_TASK_OPTIONS,
13167
13331
  ...options
13168
13332
  };
13333
+ const resolved = {
13334
+ ...merged,
13335
+ rearWidthRatio: resolveRearWidthRatio(options, merged.shaftWidthRatio)
13336
+ };
13169
13337
  const { geometry } = processAttackGeometry(coordinates, resolved);
13170
13338
  if (!geometry) return {
13171
13339
  type: "FeatureCollection",
@@ -13186,17 +13354,22 @@ function createManeuverArrowTask(coordinates, options, textAmplifiers, config) {
13186
13354
  };
13187
13355
  const tipVector = vecSub(geometry.ptTip, geometry.ptBase);
13188
13356
  const tipDirection = vecNorm(tipVector);
13189
- const crossbarLength = vecMag(vecSub(geometry.headRing[0], geometry.headRing[2])) * Math.max(1, resolved.crossbarLengthRatio);
13357
+ const headWidth = vecMag(vecSub(geometry.headRing[0], geometry.headRing[2]));
13190
13358
  let crossbarCenter;
13191
13359
  let crossbarAlong;
13360
+ let crossbarBaseWidth = headWidth;
13192
13361
  if (config.crossbarAt === "tip") {
13193
13362
  crossbarCenter = geometry.ptTip;
13194
13363
  crossbarAlong = tipDirection;
13195
13364
  } else {
13196
- const crossbarFrame = pointAlongPolyline(segments, totalLength, Number.isFinite(config.crossbarAt.shaftPosition) ? clamp01(config.crossbarAt.shaftPosition) : 0);
13365
+ const shaftPosition = Number.isFinite(config.crossbarAt.shaftPosition) ? clamp01(config.crossbarAt.shaftPosition) : 0;
13366
+ const crossbarFrame = pointAlongPolyline(segments, totalLength, shaftPosition);
13197
13367
  crossbarCenter = crossbarFrame.point;
13198
13368
  crossbarAlong = crossbarFrame.along;
13369
+ const rearWidth = vecMag(vecSub(geometry.shaftLeft[0], geometry.shaftRight[0]));
13370
+ crossbarBaseWidth = rearWidth + (vecMag(vecSub(geometry.shaftLeft.at(-1), geometry.shaftRight.at(-1))) - rearWidth) * shaftPosition;
13199
13371
  }
13372
+ const crossbarLength = crossbarBaseWidth * Math.max(1, resolved.crossbarLengthRatio);
13200
13373
  const crossbarPerp = [-crossbarAlong[1], crossbarAlong[0]];
13201
13374
  const crossbar = [vecAdd(crossbarCenter, vecScale(crossbarPerp, crossbarLength / 2)), vecSub(crossbarCenter, vecScale(crossbarPerp, crossbarLength / 2))];
13202
13375
  const features = [{
@@ -13336,6 +13509,7 @@ const FRONTAL_ATTACK = defineControlMeasure({
13336
13509
  generator: createFrontalAttack,
13337
13510
  defaultOptions: DEFAULT_FRONTAL_ATTACK_OPTIONS,
13338
13511
  rule: axis1DrawRule,
13512
+ optionHandles: variableWidthAttackOptionHandles,
13339
13513
  previewSample: {
13340
13514
  controlPoints: [
13341
13515
  [1, 0],
@@ -14373,7 +14547,8 @@ const NO_FIRE_AREA_IRREGULAR = defineControlMeasure({
14373
14547
  //#endregion
14374
14548
  //#region src/generators/cm15-maneuver-areas/mainAttack.ts
14375
14549
  const DEFAULT_MAIN_ATTACK_OPTIONS = {
14376
- shaftWidthRatio: DEFAULT_SHAFT_WIDTH_RATIO,
14550
+ shaftWidthRatio: DEFAULT_SHAFT_WIDTH_RATIO$1,
14551
+ rearWidthRatio: DEFAULT_REAR_WIDTH_RATIO,
14377
14552
  smooth: false,
14378
14553
  smoothResolution: 5
14379
14554
  };
@@ -14401,7 +14576,7 @@ const MAIN_ATTACK_METADATA = {
14401
14576
  *
14402
14577
  * The symbol consists of a single MultiLineString feature containing:
14403
14578
  * 1. **Arrowhead**: A line forming a "chevron" or "roof" shape.
14404
- * 2. **Shaft**: Two parallel lines behind the arrow.
14579
+ * 2. **Shaft**: Two boundary lines behind the arrow, optionally flared toward the rear.
14405
14580
  *
14406
14581
  * The shaft is calculated to terminate exactly where it touches the inner walls
14407
14582
  * of the arrowhead, creating a seamless connection.
@@ -14440,7 +14615,8 @@ const MAIN_ATTACK = defineControlMeasure({
14440
14615
  metadata: MAIN_ATTACK_METADATA,
14441
14616
  generator: createMainAttack,
14442
14617
  defaultOptions: DEFAULT_MAIN_ATTACK_OPTIONS,
14443
- rule: axis1DrawRule
14618
+ rule: axis1DrawRule,
14619
+ optionHandles: variableWidthAttackOptionHandles
14444
14620
  });
14445
14621
  //#endregion
14446
14622
  //#region src/generators/cm27-protection-areas/mine-types.ts
@@ -16659,6 +16835,7 @@ const DEFINITIONS = {
16659
16835
  generator: createTurningMovement,
16660
16836
  defaultOptions: DEFAULT_TURNING_MOVEMENT_OPTIONS,
16661
16837
  rule: axis1DrawRule,
16838
+ optionHandles: variableWidthAttackOptionHandles,
16662
16839
  previewSample: {
16663
16840
  controlPoints: [
16664
16841
  [1, 0],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orbat-mapper/control-measures",
3
- "version": "0.11.0",
3
+ "version": "0.12.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",