@orbat-mapper/control-measures 0.5.0 → 0.5.2

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.
@@ -803,7 +803,7 @@ interface ControlMeasureStyle {
803
803
  /**
804
804
  * How a filled part's interior is painted. See `ControlMeasureStyle.fillPattern`.
805
805
  */
806
- type FillPattern = "solid" | "hatch" | "reverse-hatch" | "cross-hatch" | "horizontal" | "vertical" | "dots" | "mine-unspecified" | "mine-antipersonnel" | "mine-antipersonnel-directional" | "mine-antitank" | "mine-antitank-antihandling" | "mine-wide-area-antitank";
806
+ type FillPattern = "solid" | "hatch" | "reverse-hatch" | "cross-hatch" | "horizontal" | "vertical" | "dots" | "mine-unspecified" | "mine-antipersonnel" | "mine-antipersonnel-directional" | "mine-antitank" | "mine-antitank-antihandling" | "mine-wide-area-antitank" | "mine-cluster";
807
807
  //#endregion
808
808
  //#region src/internal/area-labels.d.ts
809
809
  /** Shared placement options for the centered-label area measures. */
@@ -1339,8 +1339,8 @@ interface NoFireAreaIrregularOptions extends AreaLabelOptions {
1339
1339
  declare function createNoFireAreaIrregular(positions: Position[], options?: NoFireAreaIrregularOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<Polygon | MultiLineString | Point>;
1340
1340
  //#endregion
1341
1341
  //#region src/generators/cm27-protection-areas/mine-types.d.ts
1342
- /** Modifier 1 mine-type values 13–18 from symbol set 25. */
1343
- type MineType = "unspecified" | "antipersonnel" | "antipersonnel-directional" | "antitank" | "antitank-antihandling" | "wide-area-antitank";
1342
+ /** Modifier 1 mine-type values 13–19 from symbol set 25. */
1343
+ type MineType = "unspecified" | "antipersonnel" | "antipersonnel-directional" | "antitank" | "antitank-antihandling" | "wide-area-antitank" | "mine-cluster";
1344
1344
  //#endregion
1345
1345
  //#region src/generators/cm27-protection-areas/mine-areas.d.ts
1346
1346
  interface MineAreaOptions extends LabeledAreaOptions {
package/dist/index.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { $ as getDefaultOptions, $n as DEFAULT_BLOCK_ARROW_OPTIONS, $r as LabelSizeOptions, $t as CoverOptions, A as createBaselineFrame, Ai as normalizeTextAmplifiers, An as PhaseLineOptions, Ar as DEFAULT_SECONDARY_DIRECTION_OF_FIRE_OPTIONS, At as DEFAULT_ANTITANK_DITCH_OPTIONS, B as freezeOrientationOptions, Bn as DEFAULT_AIRBORNE_ATTACK_OPTIONS, Br as DirectionOfAttackAviationOptions, Bt as RetireOptions, C as getMidpointPerpendicularSignedDistance, Ci as GeneratedLabelKey, Cn as DEFAULT_HOLDING_LINE_OPTIONS, Cr as EncirclementOptions, Ct as DEFAULT_FORTIFIED_AREA_OPTIONS, D as BaselineFrameNormal, Di as TextAmplifierKey, Dn as DEFAULT_FORWARD_EDGE_OF_BATTLE_AREA_OPTIONS, Dr as FeaturePartProps, Dt as AntitankWallOptions, E as BaselineFrame, Ei as TextAmplifierField, En as DEFAULT_BRIDGEHEAD_LINE_OPTIONS, Er as ControlMeasureRender, Et as FortifiedLineOptions, F as SimpleStyleRender, Fn as DEFAULT_SUPPORT_BY_FIRE_OPTIONS, Fr as DEFAULT_DIRECTION_OF_SUPPORTING_ATTACK_OPTIONS, Ft as DEFAULT_SEIZE_OPTIONS, G as isKind, Gn as DEFAULT_GENERIC_RECTANGLE_OPTIONS, Gr as ControlMeasureStyle, Gt as DEFAULT_GUARD_OPTIONS, H as renderControlMeasure, Hn as GenericTextOptions, Hr as StrongPointOptions, Ht as RearwardPassageOfLinesOptions, I as toSimpleStyle, In as SupportByFireOptions, Ir as DirectionOfSupportingAttackOptions, It as SeizeOptions, J as ControlMeasureId, Jn as GenericPolygonOptions, Jr as GenericC2LineOptions, Jt as DisruptMissionTaskOptions, K as CONTROL_MEASURE_IDS, Kn as GenericRectangleOptions, Kr as FillPattern, Kt as GuardOptions, L as resolveStyleHints, Ln as AttackHelicopterOptions, Lr as DEFAULT_DIRECTION_OF_MAIN_ATTACK_OPTIONS, Lt as DEFAULT_SCREEN_OPTIONS, M as getMetersPerPixel, Mi as AnchorTransformEvent, Mn as FLOTOptions, Mr as SecondaryDirectionOfFireOptions, Mt as WithdrawUnderPressureOptions, N as roundToFixed, Ni as ControlMeasureDrawRule, Nn as AttackByFireOptions, Nr as DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, Nt as DEFAULT_WITHDRAW_OPTIONS, O as BaselineFrameOptions, Oi as TextAmplifiers, On as ForwardEdgeOfBattleAreaOptions, Or as StyleHints, Ot as DEFAULT_ANTITANK_WALL_OPTIONS, P as SimpleStyleProps, Pn as DEFAULT_ATTACK_BY_FIRE_OPTIONS, Pr as PrincipalDirectionOfFireOptions, Pt as WithdrawOptions, Q as getControlMeasureMetadataByValue, Qn as BlockArrowOptions, Qr as LightLineOptions, Qt as DelayOptions, R as applyBoxTransformOptions, Rn as DEFAULT_ATTACK_HELICOPTER_OPTIONS, Rr as DirectionOfMainAttackOptions, Rt as ScreenOptions, S as createMidpointPerpendicularDrawRule, Si as CanonicalTextAmplifiers, Sn as ReleaseLineOptions, Sr as DEFAULT_ENCIRCLEMENT_OPTIONS, St as FrontalAttackOptions, T as snapToMidpointPerpendicular, Ti as TEXT_AMPLIFIER_FIELDS, Tn as BridgeheadLineOptions, Tr as FinalProtectiveFireOptions, Tt as DEFAULT_FORTIFIED_LINE_OPTIONS, U as ControlMeasure, Un as DEFAULT_GENERIC_CIRCLE_OPTIONS, Ur as BattlePositionOptions, Ut as DEFAULT_PENETRATE_OPTIONS, V as RenderOptions, Vn as DEFAULT_GENERIC_TEXT_OPTIONS, Vr as DEFAULT_STRONG_POINT_OPTIONS, Vt as DEFAULT_REARWARD_PASSAGE_OF_LINES_OPTIONS, W as cloneControlMeasure, Wn as GenericCircleOptions, Wr as DEFAULT_BATTLE_POSITION_OPTIONS, Wt as PenetrateOptions, X as OptionsByKind, Xn as GenericLineOptions, Xr as EngineerWorkLineOptions, Xt as DisengageOptions, Y as ControlMeasureKind, Yn as DEFAULT_GENERIC_LINE_OPTIONS, Yr as DEFAULT_ENGINEER_WORK_LINE_OPTIONS, Yt as DEFAULT_DISENGAGE_OPTIONS, Z as getControlMeasureMetadata, Zn as BlockArrowHeadStyle, Zr as DEFAULT_LIGHT_LINE_OPTIONS, Zt as DEFAULT_DELAY_OPTIONS, _ as centerRadiusDrawRule, _i as parameterPresentationTierRank, _n as BattleHandoverLineOptions, _r as JointTacticalActionAreaOptions, _t as BlockOptions, a as supportByFireDrawRule, ai as DEFAULT_BOUNDARY_OPTIONS, an as CounterattackOptions, ar as DEFAULT_MAIN_ATTACK_OPTIONS, at as DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS, b as MidpointPerpendicularDrawRuleOptions, bi as AmplifierPlacement, bn as HandoverLineOptions, br as AreaDefenseOptions, bt as TurningMovementOptions, c as line24DrawRule, ci as ControlMeasureGeometry, cn as DEFAULT_CLEAR_OPTIONS, cr as computeInitialWidthPoint, ct as MinefieldOptions, d as line1DrawRule, di as ControlMeasurePaintCapability, dn as BypassOptions, dr as DEFAULT_PICKUP_ZONE_OPTIONS, dt as DEFAULT_FIX_MISSION_TASK_OPTIONS, ei as Point2D, en as DEFAULT_COVER_OPTIONS, er as ClassicArrowHeadStyle, et as listControlMeasureMetadata, f as ambushDrawRule, fi as PARAMETER_PRESENTATION_TIERS, fn as DEFAULT_BYPASS_OPTIONS, fr as PickupZoneOptions, ft as FixMissionTaskOptions, g as penetrateDrawRule, gi as TextAmplifierDescriptor, gn as DEFAULT_BLOCK_MISSION_TASK_OPTIONS, gr as DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS, gt as DisruptOptions, h as point12DrawRule, hi as ParameterSemanticRole, hn as BlockMissionTaskOptions, hr as LandingZoneOptions, ht as DEFAULT_DISRUPT_OPTIONS, i as axis1DrawRule, ii as BoundaryOptions, in as DEFAULT_COUNTERATTACK_BY_FIRE_OPTIONS, ir as SupportingAttackOptions, it as ObstacleBypassDifficultOptions, j as EPSILON, ji as resolveAmplifierPlacement, jn as DEFAULT_FLOT_OPTIONS, jr as SECONDARY_DIRECTION_OF_FIRE_DASH, jt as DEFAULT_WITHDRAW_UNDER_PRESSURE_OPTIONS, k as BaselineFrameOrigin, ki as canonicalTextAmplifierKey, kn as DEFAULT_PHASE_LINE_OPTIONS, kr as controlMeasureIdFromFeature, kt as AntitankDitchOptions, l as line23DrawRule, li as ControlMeasureGeometryType, ln as CanalizeOptions, lr as AreaOfOperationsOptions, lt as DEFAULT_TURN_OPTIONS, m as staticPointDrawRule, mi as ParameterPresentationTier, mn as DEFAULT_BREACH_OPTIONS, mr as DEFAULT_LANDING_ZONE_OPTIONS, mt as FixOptions, n as DEFAULT_AMBUSH_OPTIONS, ni as project, nn as TacticalArrowOptions, nr as DEFAULT_CLASSIC_ARROW_OPTIONS, nt as ObstacleBypassImpossibleOptions, o as line27DrawRule, oi as BoxTransformDelta, on as DEFAULT_COUNTERATTACK_OPTIONS, or as MainAttackOptions, ot as ObstacleBypassEasyOptions, p as attackByFireDrawRule, pi as ParamDescriptor, pn as BreachOptions, pr as MineType, pt as DEFAULT_FIX_OPTIONS, q as CONTROL_MEASURE_METADATA, qn as DEFAULT_GENERIC_POLYGON_OPTIONS, qr as DEFAULT_GENERIC_C2_LINE_OPTIONS, qt as DEFAULT_DISRUPT_MISSION_TASK_OPTIONS, r as rectangleDrawRule, ri as unproject, rn as CounterattackByFireOptions, rr as DEFAULT_SUPPORTING_ATTACK_OPTIONS, rt as DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS, s as line26DrawRule, si as ControlMeasureFillCapability, sn as ClearOptions, sr as calculateMetrics, st as DEFAULT_MINEFIELD_OPTIONS, t as AmbushOptions, ti as haversineDistance, tn as DEFAULT_TACTICAL_ARROW_OPTIONS, tr as ClassicArrowOptions, tt as DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS, u as turnDrawRule, ui as ControlMeasureMetadata, un as DEFAULT_CANALIZE_OPTIONS, ur as DEFAULT_AREA_OF_OPERATIONS_OPTIONS, ut as TurnOptions, v as disruptDrawRule, vi as resolveParameterPresentationTier, vn as DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS, vr as AssemblyAreaOptions, vt as DEFAULT_BLOCK_OPTIONS, w as pointOnMidpointPerpendicularAxis, wi as LabelPlacementOverride, wn as HoldingLineOptions, wr as DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS, wt as FortifiedAreaOptions, x as computeDefaultMidpointPerpendicularPoint, xi as AmplifierPlacements, xn as DEFAULT_RELEASE_LINE_OPTIONS, xr as DEFAULT_AREA_DEFENSE_OPTIONS, xt as DEFAULT_FRONTAL_ATTACK_OPTIONS, y as blockDrawRule, yi as resolveParameterSemanticRole, yn as DEFAULT_HANDOVER_LINE_OPTIONS, yr as DEFAULT_ASSEMBLY_AREA_OPTIONS, yt as DEFAULT_TURNING_MOVEMENT_OPTIONS, z as foldsBoxTransformOptions, zn as AirborneAttackOptions, zr as DEFAULT_DIRECTION_OF_ATTACK_AVIATION_OPTIONS, zt as DEFAULT_RETIRE_OPTIONS } from "./index-B4PZpprJ.mjs";
1
+ import { $ as getDefaultOptions, $n as DEFAULT_BLOCK_ARROW_OPTIONS, $r as LabelSizeOptions, $t as CoverOptions, A as createBaselineFrame, Ai as normalizeTextAmplifiers, An as PhaseLineOptions, Ar as DEFAULT_SECONDARY_DIRECTION_OF_FIRE_OPTIONS, At as DEFAULT_ANTITANK_DITCH_OPTIONS, B as freezeOrientationOptions, Bn as DEFAULT_AIRBORNE_ATTACK_OPTIONS, Br as DirectionOfAttackAviationOptions, Bt as RetireOptions, C as getMidpointPerpendicularSignedDistance, Ci as GeneratedLabelKey, Cn as DEFAULT_HOLDING_LINE_OPTIONS, Cr as EncirclementOptions, Ct as DEFAULT_FORTIFIED_AREA_OPTIONS, D as BaselineFrameNormal, Di as TextAmplifierKey, Dn as DEFAULT_FORWARD_EDGE_OF_BATTLE_AREA_OPTIONS, Dr as FeaturePartProps, Dt as AntitankWallOptions, E as BaselineFrame, Ei as TextAmplifierField, En as DEFAULT_BRIDGEHEAD_LINE_OPTIONS, Er as ControlMeasureRender, Et as FortifiedLineOptions, F as SimpleStyleRender, Fn as DEFAULT_SUPPORT_BY_FIRE_OPTIONS, Fr as DEFAULT_DIRECTION_OF_SUPPORTING_ATTACK_OPTIONS, Ft as DEFAULT_SEIZE_OPTIONS, G as isKind, Gn as DEFAULT_GENERIC_RECTANGLE_OPTIONS, Gr as ControlMeasureStyle, Gt as DEFAULT_GUARD_OPTIONS, H as renderControlMeasure, Hn as GenericTextOptions, Hr as StrongPointOptions, Ht as RearwardPassageOfLinesOptions, I as toSimpleStyle, In as SupportByFireOptions, Ir as DirectionOfSupportingAttackOptions, It as SeizeOptions, J as ControlMeasureId, Jn as GenericPolygonOptions, Jr as GenericC2LineOptions, Jt as DisruptMissionTaskOptions, K as CONTROL_MEASURE_IDS, Kn as GenericRectangleOptions, Kr as FillPattern, Kt as GuardOptions, L as resolveStyleHints, Ln as AttackHelicopterOptions, Lr as DEFAULT_DIRECTION_OF_MAIN_ATTACK_OPTIONS, Lt as DEFAULT_SCREEN_OPTIONS, M as getMetersPerPixel, Mi as AnchorTransformEvent, Mn as FLOTOptions, Mr as SecondaryDirectionOfFireOptions, Mt as WithdrawUnderPressureOptions, N as roundToFixed, Ni as ControlMeasureDrawRule, Nn as AttackByFireOptions, Nr as DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, Nt as DEFAULT_WITHDRAW_OPTIONS, O as BaselineFrameOptions, Oi as TextAmplifiers, On as ForwardEdgeOfBattleAreaOptions, Or as StyleHints, Ot as DEFAULT_ANTITANK_WALL_OPTIONS, P as SimpleStyleProps, Pn as DEFAULT_ATTACK_BY_FIRE_OPTIONS, Pr as PrincipalDirectionOfFireOptions, Pt as WithdrawOptions, Q as getControlMeasureMetadataByValue, Qn as BlockArrowOptions, Qr as LightLineOptions, Qt as DelayOptions, R as applyBoxTransformOptions, Rn as DEFAULT_ATTACK_HELICOPTER_OPTIONS, Rr as DirectionOfMainAttackOptions, Rt as ScreenOptions, S as createMidpointPerpendicularDrawRule, Si as CanonicalTextAmplifiers, Sn as ReleaseLineOptions, Sr as DEFAULT_ENCIRCLEMENT_OPTIONS, St as FrontalAttackOptions, T as snapToMidpointPerpendicular, Ti as TEXT_AMPLIFIER_FIELDS, Tn as BridgeheadLineOptions, Tr as FinalProtectiveFireOptions, Tt as DEFAULT_FORTIFIED_LINE_OPTIONS, U as ControlMeasure, Un as DEFAULT_GENERIC_CIRCLE_OPTIONS, Ur as BattlePositionOptions, Ut as DEFAULT_PENETRATE_OPTIONS, V as RenderOptions, Vn as DEFAULT_GENERIC_TEXT_OPTIONS, Vr as DEFAULT_STRONG_POINT_OPTIONS, Vt as DEFAULT_REARWARD_PASSAGE_OF_LINES_OPTIONS, W as cloneControlMeasure, Wn as GenericCircleOptions, Wr as DEFAULT_BATTLE_POSITION_OPTIONS, Wt as PenetrateOptions, X as OptionsByKind, Xn as GenericLineOptions, Xr as EngineerWorkLineOptions, Xt as DisengageOptions, Y as ControlMeasureKind, Yn as DEFAULT_GENERIC_LINE_OPTIONS, Yr as DEFAULT_ENGINEER_WORK_LINE_OPTIONS, Yt as DEFAULT_DISENGAGE_OPTIONS, Z as getControlMeasureMetadata, Zn as BlockArrowHeadStyle, Zr as DEFAULT_LIGHT_LINE_OPTIONS, Zt as DEFAULT_DELAY_OPTIONS, _ as centerRadiusDrawRule, _i as parameterPresentationTierRank, _n as BattleHandoverLineOptions, _r as JointTacticalActionAreaOptions, _t as BlockOptions, a as supportByFireDrawRule, ai as DEFAULT_BOUNDARY_OPTIONS, an as CounterattackOptions, ar as DEFAULT_MAIN_ATTACK_OPTIONS, at as DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS, b as MidpointPerpendicularDrawRuleOptions, bi as AmplifierPlacement, bn as HandoverLineOptions, br as AreaDefenseOptions, bt as TurningMovementOptions, c as line24DrawRule, ci as ControlMeasureGeometry, cn as DEFAULT_CLEAR_OPTIONS, cr as computeInitialWidthPoint, ct as MinefieldOptions, d as line1DrawRule, di as ControlMeasurePaintCapability, dn as BypassOptions, dr as DEFAULT_PICKUP_ZONE_OPTIONS, dt as DEFAULT_FIX_MISSION_TASK_OPTIONS, ei as Point2D, en as DEFAULT_COVER_OPTIONS, er as ClassicArrowHeadStyle, et as listControlMeasureMetadata, f as ambushDrawRule, fi as PARAMETER_PRESENTATION_TIERS, fn as DEFAULT_BYPASS_OPTIONS, fr as PickupZoneOptions, ft as FixMissionTaskOptions, g as penetrateDrawRule, gi as TextAmplifierDescriptor, gn as DEFAULT_BLOCK_MISSION_TASK_OPTIONS, gr as DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS, gt as DisruptOptions, h as point12DrawRule, hi as ParameterSemanticRole, hn as BlockMissionTaskOptions, hr as LandingZoneOptions, ht as DEFAULT_DISRUPT_OPTIONS, i as axis1DrawRule, ii as BoundaryOptions, in as DEFAULT_COUNTERATTACK_BY_FIRE_OPTIONS, ir as SupportingAttackOptions, it as ObstacleBypassDifficultOptions, j as EPSILON, ji as resolveAmplifierPlacement, jn as DEFAULT_FLOT_OPTIONS, jr as SECONDARY_DIRECTION_OF_FIRE_DASH, jt as DEFAULT_WITHDRAW_UNDER_PRESSURE_OPTIONS, k as BaselineFrameOrigin, ki as canonicalTextAmplifierKey, kn as DEFAULT_PHASE_LINE_OPTIONS, kr as controlMeasureIdFromFeature, kt as AntitankDitchOptions, l as line23DrawRule, li as ControlMeasureGeometryType, ln as CanalizeOptions, lr as AreaOfOperationsOptions, lt as DEFAULT_TURN_OPTIONS, m as staticPointDrawRule, mi as ParameterPresentationTier, mn as DEFAULT_BREACH_OPTIONS, mr as DEFAULT_LANDING_ZONE_OPTIONS, mt as FixOptions, n as DEFAULT_AMBUSH_OPTIONS, ni as project, nn as TacticalArrowOptions, nr as DEFAULT_CLASSIC_ARROW_OPTIONS, nt as ObstacleBypassImpossibleOptions, o as line27DrawRule, oi as BoxTransformDelta, on as DEFAULT_COUNTERATTACK_OPTIONS, or as MainAttackOptions, ot as ObstacleBypassEasyOptions, p as attackByFireDrawRule, pi as ParamDescriptor, pn as BreachOptions, pr as MineType, pt as DEFAULT_FIX_OPTIONS, q as CONTROL_MEASURE_METADATA, qn as DEFAULT_GENERIC_POLYGON_OPTIONS, qr as DEFAULT_GENERIC_C2_LINE_OPTIONS, qt as DEFAULT_DISRUPT_MISSION_TASK_OPTIONS, r as rectangleDrawRule, ri as unproject, rn as CounterattackByFireOptions, rr as DEFAULT_SUPPORTING_ATTACK_OPTIONS, rt as DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS, s as line26DrawRule, si as ControlMeasureFillCapability, sn as ClearOptions, sr as calculateMetrics, st as DEFAULT_MINEFIELD_OPTIONS, t as AmbushOptions, ti as haversineDistance, tn as DEFAULT_TACTICAL_ARROW_OPTIONS, tr as ClassicArrowOptions, tt as DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS, u as turnDrawRule, ui as ControlMeasureMetadata, un as DEFAULT_CANALIZE_OPTIONS, ur as DEFAULT_AREA_OF_OPERATIONS_OPTIONS, ut as TurnOptions, v as disruptDrawRule, vi as resolveParameterPresentationTier, vn as DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS, vr as AssemblyAreaOptions, vt as DEFAULT_BLOCK_OPTIONS, w as pointOnMidpointPerpendicularAxis, wi as LabelPlacementOverride, wn as HoldingLineOptions, wr as DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS, wt as FortifiedAreaOptions, x as computeDefaultMidpointPerpendicularPoint, xi as AmplifierPlacements, xn as DEFAULT_RELEASE_LINE_OPTIONS, xr as DEFAULT_AREA_DEFENSE_OPTIONS, xt as DEFAULT_FRONTAL_ATTACK_OPTIONS, y as blockDrawRule, yi as resolveParameterSemanticRole, yn as DEFAULT_HANDOVER_LINE_OPTIONS, yr as DEFAULT_ASSEMBLY_AREA_OPTIONS, yt as DEFAULT_TURNING_MOVEMENT_OPTIONS, z as foldsBoxTransformOptions, zn as AirborneAttackOptions, zr as DEFAULT_DIRECTION_OF_ATTACK_AVIATION_OPTIONS, zt as DEFAULT_RETIRE_OPTIONS } from "./index-B9foUCfy.mjs";
2
2
  export { type AirborneAttackOptions, type AmbushOptions, type AmplifierPlacement, type AmplifierPlacements, type AnchorTransformEvent, type AntitankDitchOptions, type AntitankWallOptions, type AreaDefenseOptions, type AreaOfOperationsOptions, type AssemblyAreaOptions, type AttackByFireOptions, type AttackHelicopterOptions, type BaselineFrame, type BaselineFrameNormal, type BaselineFrameOptions, type BaselineFrameOrigin, type BattleHandoverLineOptions, type BattlePositionOptions, type BlockArrowHeadStyle, type BlockArrowOptions, type BlockMissionTaskOptions, type BlockOptions, type BoundaryOptions, type BoxTransformDelta, type BreachOptions, type BridgeheadLineOptions, type BypassOptions, CONTROL_MEASURE_IDS, CONTROL_MEASURE_METADATA, type CanalizeOptions, type CanonicalTextAmplifiers, type ClassicArrowHeadStyle, type ClassicArrowOptions, type ClearOptions, type ControlMeasure, type ControlMeasureDrawRule, type ControlMeasureFillCapability, type ControlMeasureGeometry, type ControlMeasureGeometryType, type ControlMeasureId, type ControlMeasureKind, type ControlMeasureMetadata, type ControlMeasurePaintCapability, type ControlMeasureRender, type ControlMeasureStyle, type CounterattackByFireOptions, type CounterattackOptions, type CoverOptions, DEFAULT_AIRBORNE_ATTACK_OPTIONS, DEFAULT_AMBUSH_OPTIONS, DEFAULT_ANTITANK_DITCH_OPTIONS, DEFAULT_ANTITANK_WALL_OPTIONS, DEFAULT_AREA_DEFENSE_OPTIONS, DEFAULT_AREA_OF_OPERATIONS_OPTIONS, DEFAULT_ASSEMBLY_AREA_OPTIONS, DEFAULT_ATTACK_BY_FIRE_OPTIONS, DEFAULT_ATTACK_HELICOPTER_OPTIONS, DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS, DEFAULT_BATTLE_POSITION_OPTIONS, DEFAULT_BLOCK_ARROW_OPTIONS, DEFAULT_BLOCK_MISSION_TASK_OPTIONS, DEFAULT_BLOCK_OPTIONS, DEFAULT_BOUNDARY_OPTIONS, DEFAULT_BREACH_OPTIONS, DEFAULT_BRIDGEHEAD_LINE_OPTIONS, DEFAULT_BYPASS_OPTIONS, DEFAULT_CANALIZE_OPTIONS, DEFAULT_CLASSIC_ARROW_OPTIONS, DEFAULT_CLEAR_OPTIONS, DEFAULT_COUNTERATTACK_BY_FIRE_OPTIONS, DEFAULT_COUNTERATTACK_OPTIONS, DEFAULT_COVER_OPTIONS, DEFAULT_DELAY_OPTIONS, DEFAULT_DIRECTION_OF_ATTACK_AVIATION_OPTIONS, DEFAULT_DIRECTION_OF_MAIN_ATTACK_OPTIONS, DEFAULT_DIRECTION_OF_SUPPORTING_ATTACK_OPTIONS, DEFAULT_DISENGAGE_OPTIONS, DEFAULT_DISRUPT_MISSION_TASK_OPTIONS, DEFAULT_DISRUPT_OPTIONS, DEFAULT_ENCIRCLEMENT_OPTIONS, DEFAULT_ENGINEER_WORK_LINE_OPTIONS, DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS, DEFAULT_FIX_MISSION_TASK_OPTIONS, DEFAULT_FIX_OPTIONS, DEFAULT_FLOT_OPTIONS, DEFAULT_FORTIFIED_AREA_OPTIONS, DEFAULT_FORTIFIED_LINE_OPTIONS, DEFAULT_FORWARD_EDGE_OF_BATTLE_AREA_OPTIONS, DEFAULT_FRONTAL_ATTACK_OPTIONS, DEFAULT_GENERIC_C2_LINE_OPTIONS, DEFAULT_GENERIC_CIRCLE_OPTIONS, DEFAULT_GENERIC_LINE_OPTIONS, DEFAULT_GENERIC_POLYGON_OPTIONS, DEFAULT_GENERIC_RECTANGLE_OPTIONS, DEFAULT_GENERIC_TEXT_OPTIONS, DEFAULT_GUARD_OPTIONS, DEFAULT_HANDOVER_LINE_OPTIONS, DEFAULT_HOLDING_LINE_OPTIONS, DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS, DEFAULT_LANDING_ZONE_OPTIONS, DEFAULT_LIGHT_LINE_OPTIONS, DEFAULT_MAIN_ATTACK_OPTIONS, DEFAULT_MINEFIELD_OPTIONS, DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS, DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS, DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS, DEFAULT_PENETRATE_OPTIONS, DEFAULT_PHASE_LINE_OPTIONS, DEFAULT_PICKUP_ZONE_OPTIONS, DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, DEFAULT_REARWARD_PASSAGE_OF_LINES_OPTIONS, DEFAULT_RELEASE_LINE_OPTIONS, DEFAULT_RETIRE_OPTIONS, DEFAULT_SCREEN_OPTIONS, DEFAULT_SECONDARY_DIRECTION_OF_FIRE_OPTIONS, DEFAULT_SEIZE_OPTIONS, DEFAULT_STRONG_POINT_OPTIONS, DEFAULT_SUPPORTING_ATTACK_OPTIONS, DEFAULT_SUPPORT_BY_FIRE_OPTIONS, DEFAULT_TACTICAL_ARROW_OPTIONS, DEFAULT_TURNING_MOVEMENT_OPTIONS, DEFAULT_TURN_OPTIONS, DEFAULT_WITHDRAW_OPTIONS, DEFAULT_WITHDRAW_UNDER_PRESSURE_OPTIONS, type DelayOptions, type DirectionOfAttackAviationOptions, type DirectionOfMainAttackOptions, type DirectionOfSupportingAttackOptions, type DisengageOptions, type DisruptMissionTaskOptions, type DisruptOptions, EPSILON, type EncirclementOptions, type EngineerWorkLineOptions, type FLOTOptions, type FeaturePartProps, type FillPattern, type FinalProtectiveFireOptions, type FixMissionTaskOptions, type FixOptions, type FortifiedAreaOptions, type FortifiedLineOptions, type ForwardEdgeOfBattleAreaOptions, type FrontalAttackOptions, type GeneratedLabelKey, type GenericC2LineOptions, type GenericCircleOptions, type GenericLineOptions, type GenericPolygonOptions, type GenericRectangleOptions, type GenericTextOptions, type GuardOptions, type HandoverLineOptions, type HoldingLineOptions, type JointTacticalActionAreaOptions, type LabelPlacementOverride, type LabelSizeOptions, type LandingZoneOptions, type LightLineOptions, type MainAttackOptions, type MidpointPerpendicularDrawRuleOptions, type MineType, type MinefieldOptions, type ObstacleBypassDifficultOptions, type ObstacleBypassEasyOptions, type ObstacleBypassImpossibleOptions, type OptionsByKind, PARAMETER_PRESENTATION_TIERS, type ParamDescriptor, type ParameterPresentationTier, type ParameterSemanticRole, type PenetrateOptions, type PhaseLineOptions, type PickupZoneOptions, type Point2D, type PrincipalDirectionOfFireOptions, type RearwardPassageOfLinesOptions, type ReleaseLineOptions, type RenderOptions, type RetireOptions, SECONDARY_DIRECTION_OF_FIRE_DASH, type ScreenOptions, type SecondaryDirectionOfFireOptions, type SeizeOptions, type SimpleStyleProps, type SimpleStyleRender, type StrongPointOptions, type StyleHints, type SupportByFireOptions, type SupportingAttackOptions, TEXT_AMPLIFIER_FIELDS, type TacticalArrowOptions, type TextAmplifierDescriptor, type TextAmplifierField, type TextAmplifierKey, type TextAmplifiers, type TurnOptions, type TurningMovementOptions, type WithdrawOptions, type WithdrawUnderPressureOptions, ambushDrawRule, applyBoxTransformOptions, attackByFireDrawRule, axis1DrawRule, blockDrawRule, calculateMetrics, canonicalTextAmplifierKey, centerRadiusDrawRule, cloneControlMeasure, computeDefaultMidpointPerpendicularPoint, computeInitialWidthPoint, controlMeasureIdFromFeature, createBaselineFrame, createMidpointPerpendicularDrawRule, disruptDrawRule, foldsBoxTransformOptions, freezeOrientationOptions, getControlMeasureMetadata, getControlMeasureMetadataByValue, getDefaultOptions, getMetersPerPixel, getMidpointPerpendicularSignedDistance, haversineDistance, isKind, line1DrawRule, line23DrawRule, line24DrawRule, line26DrawRule, line27DrawRule, listControlMeasureMetadata, normalizeTextAmplifiers, parameterPresentationTierRank, penetrateDrawRule, point12DrawRule, pointOnMidpointPerpendicularAxis, project, rectangleDrawRule, renderControlMeasure, resolveAmplifierPlacement, resolveParameterPresentationTier, resolveParameterSemanticRole, resolveStyleHints, roundToFixed, snapToMidpointPerpendicular, staticPointDrawRule, supportByFireDrawRule, toSimpleStyle, turnDrawRule, unproject };
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as DEFAULT_TACTICAL_ARROW_OPTIONS, $t as blockDrawRule, A as DEFAULT_REARWARD_PASSAGE_OF_LINES_OPTIONS, At as DEFAULT_DIRECTION_OF_ATTACK_AVIATION_OPTIONS, B as DEFAULT_BRIDGEHEAD_LINE_OPTIONS, Bt as line27DrawRule, C as DEFAULT_LANDING_ZONE_OPTIONS, Ct as DEFAULT_ANTITANK_WALL_OPTIONS, D as DEFAULT_SEIZE_OPTIONS, Dt as DEFAULT_AREA_DEFENSE_OPTIONS, E as DEFAULT_WITHDRAW_OPTIONS, Et as DEFAULT_AREA_OF_OPERATIONS_OPTIONS, F as DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS, Ft as DEFAULT_AMBUSH_OPTIONS, G as DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS, Gt as line1DrawRule, H as DEFAULT_FLOT_OPTIONS, Ht as line24DrawRule, I as DEFAULT_HANDOVER_LINE_OPTIONS, It as DEFAULT_AIRBORNE_ATTACK_OPTIONS, J as DEFAULT_GUARD_OPTIONS, Jt as staticPointDrawRule, K as DEFAULT_ENCIRCLEMENT_OPTIONS, Kt as ambushDrawRule, L as DEFAULT_FORWARD_EDGE_OF_BATTLE_AREA_OPTIONS, Lt as rectangleDrawRule, M as DEFAULT_FRONTAL_ATTACK_OPTIONS, Mt as canonicalTextAmplifierKey, N as DEFAULT_FORTIFIED_AREA_OPTIONS, Nt as normalizeTextAmplifiers, O as DEFAULT_SCREEN_OPTIONS, Ot as DEFAULT_DIRECTION_OF_SUPPORTING_ATTACK_OPTIONS, P as DEFAULT_FORTIFIED_LINE_OPTIONS, Pt as resolveAmplifierPlacement, Q as DEFAULT_COVER_OPTIONS, Qt as disruptDrawRule, R as DEFAULT_RELEASE_LINE_OPTIONS, Rt as axis1DrawRule, S as DEFAULT_MAIN_ATTACK_OPTIONS, St as DEFAULT_ATTACK_BY_FIRE_OPTIONS, T as DEFAULT_WITHDRAW_UNDER_PRESSURE_OPTIONS, Tt as DEFAULT_ASSEMBLY_AREA_OPTIONS, U as DEFAULT_FIX_MISSION_TASK_OPTIONS, Ut as line23DrawRule, V as DEFAULT_PHASE_LINE_OPTIONS, Vt as line26DrawRule, W as DEFAULT_FIX_OPTIONS, Wt as turnDrawRule, X as DEFAULT_DISENGAGE_OPTIONS, Xt as penetrateDrawRule, Y as DEFAULT_DISRUPT_MISSION_TASK_OPTIONS, Yt as point12DrawRule, Z as DEFAULT_DELAY_OPTIONS, Zt as centerRadiusDrawRule, _ as DEFAULT_PICKUP_ZONE_OPTIONS, _t as DEFAULT_BOUNDARY_OPTIONS, a as DEFINITIONS, an as createBaselineFrame, at as DEFAULT_GENERIC_RECTANGLE_OPTIONS, b as DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS, bt as DEFAULT_BATTLE_POSITION_OPTIONS, c as getDefaultOptions, cn as haversineDistance, ct as DEFAULT_GENERIC_CIRCLE_OPTIONS, d as DEFAULT_TURN_OPTIONS, dn as EPSILON, dt as DEFAULT_BYPASS_OPTIONS, en as computeDefaultMidpointPerpendicularPoint, et as DEFAULT_COUNTERATTACK_BY_FIRE_OPTIONS, f as DEFAULT_SUPPORT_BY_FIRE_OPTIONS, fn as getMetersPerPixel, ft as DEFAULT_BREACH_OPTIONS, g as DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, gt as DEFAULT_LIGHT_LINE_OPTIONS, h as SECONDARY_DIRECTION_OF_FIRE_DASH, ht as DEFAULT_ENGINEER_WORK_LINE_OPTIONS, i as CONTROL_MEASURE_METADATA, in as snapToMidpointPerpendicular, it as DEFAULT_GENERIC_TEXT_OPTIONS, j as DEFAULT_PENETRATE_OPTIONS, jt as TEXT_AMPLIFIER_FIELDS, k as DEFAULT_RETIRE_OPTIONS, kt as DEFAULT_DIRECTION_OF_MAIN_ATTACK_OPTIONS, l as listControlMeasureMetadata, ln as project, lt as DEFAULT_CLASSIC_ARROW_OPTIONS, m as DEFAULT_SECONDARY_DIRECTION_OF_FIRE_OPTIONS, mt as DEFAULT_GENERIC_C2_LINE_OPTIONS, n as resolveStyleHints, nn as getMidpointPerpendicularSignedDistance, nt as DEFAULT_SUPPORTING_ATTACK_OPTIONS, o as getControlMeasureMetadata, on as calculateMetrics, ot as DEFAULT_GENERIC_POLYGON_OPTIONS, p as DEFAULT_STRONG_POINT_OPTIONS, pn as roundToFixed, pt as DEFAULT_BLOCK_MISSION_TASK_OPTIONS, q as DEFAULT_DISRUPT_OPTIONS, qt as attackByFireDrawRule, r as CONTROL_MEASURE_IDS, rn as pointOnMidpointPerpendicularAxis, rt as DEFAULT_CLEAR_OPTIONS, s as getControlMeasureMetadataByValue, sn as computeInitialWidthPoint, st as DEFAULT_GENERIC_LINE_OPTIONS, t as renderControlMeasure, tn as createMidpointPerpendicularDrawRule, tt as DEFAULT_COUNTERATTACK_OPTIONS, u as DEFAULT_TURNING_MOVEMENT_OPTIONS, un as unproject, ut as DEFAULT_CANALIZE_OPTIONS, v as DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS, vt as DEFAULT_BLOCK_ARROW_OPTIONS, w as DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS, wt as DEFAULT_ANTITANK_DITCH_OPTIONS, x as DEFAULT_MINEFIELD_OPTIONS, xt as DEFAULT_ATTACK_HELICOPTER_OPTIONS, y as DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS, yt as DEFAULT_BLOCK_OPTIONS, z as DEFAULT_HOLDING_LINE_OPTIONS, zt as supportByFireDrawRule } from "./renderControlMeasure-o7IpeFDt.mjs";
1
+ import { $ as DEFAULT_TACTICAL_ARROW_OPTIONS, $t as blockDrawRule, A as DEFAULT_REARWARD_PASSAGE_OF_LINES_OPTIONS, At as DEFAULT_DIRECTION_OF_ATTACK_AVIATION_OPTIONS, B as DEFAULT_BRIDGEHEAD_LINE_OPTIONS, Bt as line27DrawRule, C as DEFAULT_LANDING_ZONE_OPTIONS, Ct as DEFAULT_ANTITANK_WALL_OPTIONS, D as DEFAULT_SEIZE_OPTIONS, Dt as DEFAULT_AREA_DEFENSE_OPTIONS, E as DEFAULT_WITHDRAW_OPTIONS, Et as DEFAULT_AREA_OF_OPERATIONS_OPTIONS, F as DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS, Ft as DEFAULT_AMBUSH_OPTIONS, G as DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS, Gt as line1DrawRule, H as DEFAULT_FLOT_OPTIONS, Ht as line24DrawRule, I as DEFAULT_HANDOVER_LINE_OPTIONS, It as DEFAULT_AIRBORNE_ATTACK_OPTIONS, J as DEFAULT_GUARD_OPTIONS, Jt as staticPointDrawRule, K as DEFAULT_ENCIRCLEMENT_OPTIONS, Kt as ambushDrawRule, L as DEFAULT_FORWARD_EDGE_OF_BATTLE_AREA_OPTIONS, Lt as rectangleDrawRule, M as DEFAULT_FRONTAL_ATTACK_OPTIONS, Mt as canonicalTextAmplifierKey, N as DEFAULT_FORTIFIED_AREA_OPTIONS, Nt as normalizeTextAmplifiers, O as DEFAULT_SCREEN_OPTIONS, Ot as DEFAULT_DIRECTION_OF_SUPPORTING_ATTACK_OPTIONS, P as DEFAULT_FORTIFIED_LINE_OPTIONS, Pt as resolveAmplifierPlacement, Q as DEFAULT_COVER_OPTIONS, Qt as disruptDrawRule, R as DEFAULT_RELEASE_LINE_OPTIONS, Rt as axis1DrawRule, S as DEFAULT_MAIN_ATTACK_OPTIONS, St as DEFAULT_ATTACK_BY_FIRE_OPTIONS, T as DEFAULT_WITHDRAW_UNDER_PRESSURE_OPTIONS, Tt as DEFAULT_ASSEMBLY_AREA_OPTIONS, U as DEFAULT_FIX_MISSION_TASK_OPTIONS, Ut as line23DrawRule, V as DEFAULT_PHASE_LINE_OPTIONS, Vt as line26DrawRule, W as DEFAULT_FIX_OPTIONS, Wt as turnDrawRule, X as DEFAULT_DISENGAGE_OPTIONS, Xt as penetrateDrawRule, Y as DEFAULT_DISRUPT_MISSION_TASK_OPTIONS, Yt as point12DrawRule, Z as DEFAULT_DELAY_OPTIONS, Zt as centerRadiusDrawRule, _ as DEFAULT_PICKUP_ZONE_OPTIONS, _t as DEFAULT_BOUNDARY_OPTIONS, a as DEFINITIONS, an as createBaselineFrame, at as DEFAULT_GENERIC_RECTANGLE_OPTIONS, b as DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS, bt as DEFAULT_BATTLE_POSITION_OPTIONS, c as getDefaultOptions, cn as haversineDistance, ct as DEFAULT_GENERIC_CIRCLE_OPTIONS, d as DEFAULT_TURN_OPTIONS, dn as EPSILON, dt as DEFAULT_BYPASS_OPTIONS, en as computeDefaultMidpointPerpendicularPoint, et as DEFAULT_COUNTERATTACK_BY_FIRE_OPTIONS, f as DEFAULT_SUPPORT_BY_FIRE_OPTIONS, fn as getMetersPerPixel, ft as DEFAULT_BREACH_OPTIONS, g as DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, gt as DEFAULT_LIGHT_LINE_OPTIONS, h as SECONDARY_DIRECTION_OF_FIRE_DASH, ht as DEFAULT_ENGINEER_WORK_LINE_OPTIONS, i as CONTROL_MEASURE_METADATA, in as snapToMidpointPerpendicular, it as DEFAULT_GENERIC_TEXT_OPTIONS, j as DEFAULT_PENETRATE_OPTIONS, jt as TEXT_AMPLIFIER_FIELDS, k as DEFAULT_RETIRE_OPTIONS, kt as DEFAULT_DIRECTION_OF_MAIN_ATTACK_OPTIONS, l as listControlMeasureMetadata, ln as project, lt as DEFAULT_CLASSIC_ARROW_OPTIONS, m as DEFAULT_SECONDARY_DIRECTION_OF_FIRE_OPTIONS, mt as DEFAULT_GENERIC_C2_LINE_OPTIONS, n as resolveStyleHints, nn as getMidpointPerpendicularSignedDistance, nt as DEFAULT_SUPPORTING_ATTACK_OPTIONS, o as getControlMeasureMetadata, on as calculateMetrics, ot as DEFAULT_GENERIC_POLYGON_OPTIONS, p as DEFAULT_STRONG_POINT_OPTIONS, pn as roundToFixed, pt as DEFAULT_BLOCK_MISSION_TASK_OPTIONS, q as DEFAULT_DISRUPT_OPTIONS, qt as attackByFireDrawRule, r as CONTROL_MEASURE_IDS, rn as pointOnMidpointPerpendicularAxis, rt as DEFAULT_CLEAR_OPTIONS, s as getControlMeasureMetadataByValue, sn as computeInitialWidthPoint, st as DEFAULT_GENERIC_LINE_OPTIONS, t as renderControlMeasure, tn as createMidpointPerpendicularDrawRule, tt as DEFAULT_COUNTERATTACK_OPTIONS, u as DEFAULT_TURNING_MOVEMENT_OPTIONS, un as unproject, ut as DEFAULT_CANALIZE_OPTIONS, v as DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS, vt as DEFAULT_BLOCK_ARROW_OPTIONS, w as DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS, wt as DEFAULT_ANTITANK_DITCH_OPTIONS, x as DEFAULT_MINEFIELD_OPTIONS, xt as DEFAULT_ATTACK_HELICOPTER_OPTIONS, y as DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS, yt as DEFAULT_BLOCK_OPTIONS, z as DEFAULT_HOLDING_LINE_OPTIONS, zt as supportByFireDrawRule } from "./renderControlMeasure-DaBe00Or.mjs";
2
2
  //#region src/metadata.ts
3
3
  const PARAMETER_PRESENTATION_TIERS = [
4
4
  "primary",
@@ -1,4 +1,4 @@
1
- import { J as ControlMeasureId, Kr as FillPattern, Oi as TextAmplifiers } from "../index-B4PZpprJ.mjs";
1
+ import { J as ControlMeasureId, Kr as FillPattern, Oi as TextAmplifiers } from "../index-B9foUCfy.mjs";
2
2
  import { FeatureCollection, Geometry } from "geojson";
3
3
 
4
4
  //#region src/preview/index.d.ts
@@ -17,7 +17,8 @@ declare const PREVIEW_PATTERN_TILE = 8;
17
17
  declare const PREVIEW_FILL_PATTERNS: readonly {
18
18
  readonly id: PreviewFillPattern;
19
19
  readonly paths: readonly string[];
20
- readonly filledPaths?: readonly string[];
20
+ readonly filledPaths?: readonly string[]; /** Optional SVG dash pattern applied to this pattern's stroked paths. */
21
+ readonly strokeDash?: readonly number[];
21
22
  readonly tileSize?: number; /** Filled dot centers (tile units); the `"dots"` family has no stroked path. */
22
23
  readonly dots?: readonly (readonly [number, number])[];
23
24
  }[];
@@ -1,4 +1,4 @@
1
- import { a as DEFINITIONS, t as renderControlMeasure } from "../renderControlMeasure-o7IpeFDt.mjs";
1
+ import { a as DEFINITIONS, t as renderControlMeasure } from "../renderControlMeasure-DaBe00Or.mjs";
2
2
  //#region src/preview/index.ts
3
3
  /** Side length (SVG units) of the repeating hatch tile in {@link PREVIEW_FILL_PATTERNS}. */
4
4
  const PREVIEW_PATTERN_TILE = 8;
@@ -43,14 +43,14 @@ const PREVIEW_FILL_PATTERNS = [
43
43
  {
44
44
  id: "mine-antipersonnel",
45
45
  tileSize: 16,
46
- paths: ["M6.5,6 L4.5,3.5 M9.5,6 L11.5,3.5"],
46
+ paths: ["M6.433,6.05 L4.667,3.833 M9.567,6.05 L11.333,3.833"],
47
47
  filledPaths: ["M10.5,8 A2.5,2.5 0 1,1 5.5,8 A2.5,2.5 0 1,1 10.5,8 Z"]
48
48
  },
49
49
  {
50
50
  id: "mine-antipersonnel-directional",
51
51
  tileSize: 16,
52
- paths: ["M6.5,6 L4.5,3.5 M9.5,6 L11.5,3.5 M10,8 L13.5,8"],
53
- filledPaths: ["M10.5,8 A2.5,2.5 0 1,1 5.5,8 A2.5,2.5 0 1,1 10.5,8 Z", "M14.5,8 L13,6.8 L13,9.2 Z"]
52
+ paths: ["M6.433,6.05 L4.667,3.833 M9.567,6.05 L11.333,3.833 M10.5,8 L11.05,8 M11.833,7.667 L12.167,7.95 L11.833,8.333 Z"],
53
+ filledPaths: ["M10.5,8 A2.5,2.5 0 1,1 5.5,8 A2.5,2.5 0 1,1 10.5,8 Z"]
54
54
  },
55
55
  {
56
56
  id: "mine-antitank",
@@ -61,14 +61,20 @@ const PREVIEW_FILL_PATTERNS = [
61
61
  {
62
62
  id: "mine-antitank-antihandling",
63
63
  tileSize: 16,
64
- paths: ["M8,10 L8,13.5 L9.5,12"],
64
+ paths: ["M8,10.5 L8,12.667 L9,11.667"],
65
65
  filledPaths: ["M10.5,8 A2.5,2.5 0 1,1 5.5,8 A2.5,2.5 0 1,1 10.5,8 Z"]
66
66
  },
67
67
  {
68
68
  id: "mine-wide-area-antitank",
69
69
  tileSize: 16,
70
- paths: ["M5,11 L6,12.5 L7,10.5 M9,10.5 L10,12.5 L11,11"],
70
+ paths: ["M4.667,10.5 L6,12.167 L6.917,10.333 M9.083,10.333 L10,12.167 L11.333,10.5"],
71
71
  filledPaths: ["M10.5,8 A2.5,2.5 0 1,1 5.5,8 A2.5,2.5 0 1,1 10.5,8 Z"]
72
+ },
73
+ {
74
+ id: "mine-cluster",
75
+ tileSize: 16,
76
+ paths: ["M11,9.667 L5,9.667 C5,8 5.5,6.333 8,6.333 C10.5,6.333 11,8 11,9.667 Z"],
77
+ strokeDash: [1.25, .833]
72
78
  }
73
79
  ];
74
80
  /** Radius (SVG units) of a {@link PREVIEW_FILL_PATTERNS} dot. */
@@ -1579,7 +1579,7 @@ const AREA_LABEL_PADDING_PARAM = {
1579
1579
  key: "labelPadding",
1580
1580
  presentationTier: "advanced",
1581
1581
  label: "Label padding",
1582
- description: "Extra spacing between the area's label rows, as a ratio of the label height",
1582
+ description: "Extra spacing between or around the area's labels, as a ratio of label height",
1583
1583
  type: "number",
1584
1584
  min: 0,
1585
1585
  max: 2,
@@ -8853,7 +8853,8 @@ function createTacticalArrow(origin, tip, opposite, options) {
8853
8853
  const amplitude = totalLegLength * options.zigzagAmplitudeRatio;
8854
8854
  const zigzagPointA = vecAdd(vecAdd(origin, vecScale(leg, options.zigzagStart)), vecScale(normal, amplitude));
8855
8855
  const zigzagPointB = vecAdd(vecAdd(origin, vecScale(leg, options.zigzagEnd)), vecScale(normal, -amplitude));
8856
- const arrowhead = arrowheadAt(origin, tip, options.arrowheadLengthRatio, options.arrowheadWidthRatio);
8856
+ const finalSegmentLength = vecMag(vecSub(tip, zigzagPointB));
8857
+ const arrowhead = arrowheadAt(finalSegmentLength >= 1e-6 ? zigzagPointB : origin, tip, finalSegmentLength >= 1e-6 ? totalLegLength * options.arrowheadLengthRatio / finalSegmentLength : options.arrowheadLengthRatio, options.arrowheadWidthRatio);
8857
8858
  if (!arrowhead) return void 0;
8858
8859
  return [[
8859
8860
  origin,
@@ -12536,7 +12537,7 @@ const MAIN_ATTACK = defineControlMeasure({
12536
12537
  const MINE_TYPE_PARAM = {
12537
12538
  key: "mineType",
12538
12539
  label: "Mine type",
12539
- description: "Modifier 1 (symbol set 25 values 13–18).",
12540
+ description: "Modifier 1 (symbol set 25 values 13–19).",
12540
12541
  type: "enum",
12541
12542
  presentationTier: "primary",
12542
12543
  semanticRole: "doctrinal",
@@ -12564,6 +12565,10 @@ const MINE_TYPE_PARAM = {
12564
12565
  {
12565
12566
  label: "Wide area antitank mine (18)",
12566
12567
  value: "wide-area-antitank"
12568
+ },
12569
+ {
12570
+ label: "Mine cluster (19)",
12571
+ value: "mine-cluster"
12567
12572
  }
12568
12573
  ]
12569
12574
  };
@@ -12573,7 +12578,8 @@ const MINE_FILL_PATTERNS = {
12573
12578
  "antipersonnel-directional": "mine-antipersonnel-directional",
12574
12579
  antitank: "mine-antitank",
12575
12580
  "antitank-antihandling": "mine-antitank-antihandling",
12576
- "wide-area-antitank": "mine-wide-area-antitank"
12581
+ "wide-area-antitank": "mine-wide-area-antitank",
12582
+ "mine-cluster": "mine-cluster"
12577
12583
  };
12578
12584
  function mineFillPattern(mineType) {
12579
12585
  return MINE_FILL_PATTERNS[mineType];
@@ -12655,8 +12661,16 @@ const MINEFIELD_METADATA = {
12655
12661
  ]
12656
12662
  };
12657
12663
  const CIRCLE_SEGMENTS = 32;
12658
- const FRAME_HEIGHT_RATIO = .48;
12659
- const MINE_RADIUS_RATIO = .075;
12664
+ /** Milsymbol's 270701 frame is 150 units wide by 70 high. */
12665
+ const FRAME_HEIGHT_RATIO = 70 / 150;
12666
+ /** Modifier 1 mine rings use radius 15 within that 150-unit frame. */
12667
+ const MINE_RADIUS_RATIO = 15 / 150;
12668
+ /** Milsymbol centers the three rings at x=55,100,145 in a frame spanning x=25..175. */
12669
+ const MINE_CENTER_RATIOS = [
12670
+ -45 / 150,
12671
+ 0,
12672
+ 45 / 150
12673
+ ];
12660
12674
  const LABEL_SIZE_RATIO = .14;
12661
12675
  const LABEL_CLEARANCE_RATIO = .11;
12662
12676
  /** Unit-circle offsets, built once — a mine ring is rotation-invariant. */
@@ -12676,6 +12690,47 @@ function circleRing(center, radius) {
12676
12690
  function line(points) {
12677
12691
  return points.map(toPosition);
12678
12692
  }
12693
+ function cubicPoint(t, p0, p1, p2, p3) {
12694
+ const u = 1 - t;
12695
+ const u2 = u * u;
12696
+ const t2 = t * t;
12697
+ return [u2 * u * p0[0] + 3 * u2 * t * p1[0] + 3 * u * t2 * p2[0] + t2 * t * p3[0], u2 * u * p0[1] + 3 * u2 * t * p1[1] + 3 * u * t2 * p2[1] + t2 * t * p3[1]];
12698
+ }
12699
+ /**
12700
+ * Arc-length gaps reproducing a dash/gap cadence along a polyline of length
12701
+ * `total`, starting on a dash. Feeding these to {@link buildGappedLine} dashes
12702
+ * the outline with the same walker the boundary measures already use.
12703
+ */
12704
+ function dashGaps(total, dashLength, gapLength) {
12705
+ const gaps = [];
12706
+ for (let start = dashLength; start < total; start += dashLength + gapLength) gaps.push({
12707
+ g0: start,
12708
+ g1: Math.min(start + gapLength, total)
12709
+ });
12710
+ return gaps;
12711
+ }
12712
+ /** Total arc length of an open polyline. */
12713
+ function polylineLength(points) {
12714
+ let total = 0;
12715
+ for (let index = 0; index < points.length - 1; index++) total += pointToPointDistance(points[index], points[index + 1]);
12716
+ return total;
12717
+ }
12718
+ /**
12719
+ * Milsymbol's 36×20-unit dashed mine-cluster outline, scaled from its 15-unit
12720
+ * mine radius. `tactical-draw`'s `fill-pattern.ts` rasterizes the same curve in
12721
+ * tile units for the area-fill pictogram — keep the two in step.
12722
+ */
12723
+ function mineClusterGlyph(mineCenter, radius, offset) {
12724
+ const scale = radius / 15;
12725
+ const local = (x, y) => offset(mineCenter, x * scale, y * scale);
12726
+ const right = local(18, -10);
12727
+ const left = local(-18, -10);
12728
+ const top = local(0, 10);
12729
+ const outline = [right, left];
12730
+ for (let index = 1; index <= 16; index++) outline.push(cubicPoint(index / 16, left, local(-18, 0), local(-15, 10), top));
12731
+ for (let index = 1; index <= 16; index++) outline.push(cubicPoint(index / 16, top, local(15, 10), local(18, 0), right));
12732
+ return buildGappedLine(outline, dashGaps(polylineLength(outline), 7.5 * scale, 5 * scale));
12733
+ }
12679
12734
  /** Creates the frame and three Modifier 1 mine glyphs around the center anchor. */
12680
12735
  function createMinefield(coordinates, options = {}, textAmplifiers = {}, context = {}) {
12681
12736
  const anchor = coordinates[0];
@@ -12693,11 +12748,7 @@ function createMinefield(coordinates, options = {}, textAmplifiers = {}, context
12693
12748
  };
12694
12749
  const height = width * FRAME_HEIGHT_RATIO;
12695
12750
  const radius = width * MINE_RADIUS_RATIO;
12696
- const mineCenters = [
12697
- -.25,
12698
- 0,
12699
- .25
12700
- ].map((ratio) => offset(center, width * ratio, 0));
12751
+ const mineCenters = MINE_CENTER_RATIOS.map((ratio) => offset(center, width * ratio, 0));
12701
12752
  const halfWidth = width / 2;
12702
12753
  const halfHeight = height / 2;
12703
12754
  const frameVerts = [
@@ -12753,39 +12804,48 @@ function createMinefield(coordinates, options = {}, textAmplifiers = {}, context
12753
12804
  features
12754
12805
  };
12755
12806
  }
12807
+ if (mineType === "mine-cluster") {
12808
+ features.push({
12809
+ type: "Feature",
12810
+ properties: { part: "mine-details" },
12811
+ geometry: {
12812
+ type: "MultiLineString",
12813
+ coordinates: mineCenters.flatMap((mineCenter) => mineClusterGlyph(mineCenter, radius, offset))
12814
+ }
12815
+ });
12816
+ return {
12817
+ type: "FeatureCollection",
12818
+ features
12819
+ };
12820
+ }
12756
12821
  const filledRings = circles.map((ring) => [ring]);
12757
12822
  const details = [];
12758
- if (mineType === "antipersonnel" || mineType === "antipersonnel-directional") for (const mineCenter of mineCenters) details.push(line([offset(mineCenter, -radius * .55, radius * .7), offset(mineCenter, -radius * 1.35, radius * 1.55)]), line([offset(mineCenter, radius * .55, radius * .7), offset(mineCenter, radius * 1.35, radius * 1.55)]));
12759
- if (mineType === "antipersonnel-directional") for (const mineCenter of mineCenters) {
12760
- const shaftEnd = offset(mineCenter, radius * 1.45, 0);
12761
- const tip = offset(mineCenter, radius * 1.9, 0);
12762
- details.push(line([offset(mineCenter, radius * .75, 0), shaftEnd]));
12763
- filledRings.push([closeRing(line([
12764
- tip,
12765
- offset(shaftEnd, 0, radius * .25),
12766
- offset(shaftEnd, 0, -radius * .25)
12767
- ]))]);
12768
- }
12823
+ if (mineType === "antipersonnel" || mineType === "antipersonnel-directional") for (const mineCenter of mineCenters) details.push(line([offset(mineCenter, -9.4 / 15 * radius, 11.7 / 15 * radius), offset(mineCenter, -20 / 15 * radius, 25 / 15 * radius)]), line([offset(mineCenter, 9.4 / 15 * radius, 11.7 / 15 * radius), offset(mineCenter, 20 / 15 * radius, 25 / 15 * radius)]));
12824
+ if (mineType === "antipersonnel-directional") for (const mineCenter of mineCenters) details.push(line([offset(mineCenter, radius, 0), offset(mineCenter, 18.3 / 15 * radius, 0)]), closeRing(line([
12825
+ offset(mineCenter, 23 / 15 * radius, 2 / 15 * radius),
12826
+ offset(mineCenter, 25 / 15 * radius, .3 / 15 * radius),
12827
+ offset(mineCenter, 23 / 15 * radius, -2 / 15 * radius)
12828
+ ])));
12769
12829
  if (mineType === "antitank-antihandling") for (const mineCenter of mineCenters) details.push(line([
12770
- offset(mineCenter, 0, -radius * .75),
12771
- offset(mineCenter, 0, -radius * 1.75),
12772
- offset(mineCenter, radius * .4, -radius * 1.45)
12830
+ offset(mineCenter, 0, -radius),
12831
+ offset(mineCenter, 0, -28 / 15 * radius),
12832
+ offset(mineCenter, 6 / 15 * radius, -22 / 15 * radius)
12773
12833
  ]));
12774
12834
  if (mineType === "wide-area-antitank") {
12775
- const touchX = radius * .55;
12776
- const touchY = -Math.sqrt(radius * radius - touchX * touchX);
12777
- const troughX = radius * 1.05;
12778
- const troughY = -radius * 1.45;
12779
- const outerX = radius * 1.45;
12780
- const peakY = -radius * .8;
12835
+ const innerX = 6.5 / 15 * radius;
12836
+ const innerY = -14 / 15 * radius;
12837
+ const troughX = 12 / 15 * radius;
12838
+ const troughY = -25 / 15 * radius;
12839
+ const outerX = 20 / 15 * radius;
12840
+ const outerY = -radius;
12781
12841
  for (const mineCenter of mineCenters) details.push(line([
12782
- offset(mineCenter, -outerX, peakY),
12842
+ offset(mineCenter, -outerX, outerY),
12783
12843
  offset(mineCenter, -troughX, troughY),
12784
- offset(mineCenter, -touchX, touchY)
12844
+ offset(mineCenter, -innerX, innerY)
12785
12845
  ]), line([
12786
- offset(mineCenter, touchX, touchY),
12846
+ offset(mineCenter, innerX, innerY),
12787
12847
  offset(mineCenter, troughX, troughY),
12788
- offset(mineCenter, outerX, peakY)
12848
+ offset(mineCenter, outerX, outerY)
12789
12849
  ]));
12790
12850
  }
12791
12851
  features.push({
@@ -12924,13 +12984,14 @@ function createMineArea(positions, options, minedArea, textAmplifiers, context)
12924
12984
  const ring = buildClosedRing(positions, options.smooth ?? DEFAULT_MINE_AREA_OPTIONS.smooth, options.smoothResolution ?? DEFAULT_MINE_AREA_OPTIONS.smoothResolution, 16);
12925
12985
  const mineType = options.mineType ?? DEFAULT_MINE_AREA_OPTIONS.mineType;
12926
12986
  const labelFeatures = [];
12987
+ const labelPadding = Math.max(0, options.labelPadding ?? 0);
12927
12988
  const sideOffset = textAmplifiers.N ? resolveLabelOffsetMeters(options, 1.5) : 0;
12928
12989
  return {
12929
12990
  type: "FeatureCollection",
12930
12991
  features: [...patternedAreaFeatures(ring, [...minedArea ? pushBoundaryMarkers(labelFeatures, ring, "M", cardinalBoundaryPoints(ring, sideOffset).map((point) => ({ point })), {
12931
12992
  rotation: HORIZONTAL_LABEL_ROTATION,
12932
12993
  textHeight: resolveLabelOffsetMeters(options, 1),
12933
- clearance: resolveLabelOffsetMeters(options, .12),
12994
+ clearance: resolveLabelOffsetMeters(options, .12 + labelPadding),
12934
12995
  sizeProps: labelSizeProps(options)
12935
12996
  }) : [], ...pushAreaLabels(labelFeatures, ring, { hostile: textAmplifiers.N }, options, context.amplifierPlacements)], mineFillPattern(mineType)), ...labelFeatures]
12936
12997
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orbat-mapper/control-measures",
3
- "version": "0.5.0",
3
+ "version": "0.5.2",
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",