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