@orbat-mapper/control-measures 0.2.0-alpha.9 → 0.3.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 +51 -0
- package/dist/{index-26Xb77jE.d.mts → index-85rqbfeE.d.mts} +1429 -230
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +20 -5
- package/dist/preview/index.d.mts +114 -3
- package/dist/preview/index.mjs +242 -23
- package/dist/renderControlMeasure-CjSKeoV0.mjs +14278 -0
- package/media/airborne-attack.svg +1 -1
- package/media/airfield-zone.svg +1 -0
- package/media/ambush.svg +1 -1
- package/media/antitank-ditch-completed.svg +1 -1
- package/media/antitank-ditch-under-construction.svg +1 -1
- package/media/antitank-wall.svg +1 -1
- package/media/area-defense.svg +1 -0
- package/media/area-of-operations.svg +1 -0
- package/media/area.svg +1 -0
- package/media/assault-position.svg +1 -0
- package/media/assembly-area.svg +1 -0
- package/media/attack-by-fire.svg +1 -1
- package/media/attack-helicopter.svg +1 -1
- package/media/attack-position.svg +1 -0
- package/media/base-camp.svg +1 -0
- package/media/battle-handover-line.svg +1 -0
- package/media/battle-position.svg +1 -1
- package/media/block-arrow.svg +1 -1
- package/media/block-mission-task.svg +1 -1
- package/media/block.svg +1 -1
- package/media/boundary.svg +1 -1
- package/media/breach.svg +1 -1
- package/media/bypass.svg +1 -1
- package/media/canalize.svg +1 -1
- package/media/circle.svg +1 -1
- package/media/classic-arrow.svg +1 -1
- package/media/clear.svg +1 -1
- package/media/counterattack-by-fire.svg +1 -0
- package/media/counterattack.svg +1 -0
- package/media/cover.svg +1 -0
- package/media/delay.svg +1 -1
- package/media/direction-of-attack-aviation.svg +1 -0
- package/media/direction-of-main-attack.svg +1 -0
- package/media/direction-of-supporting-attack.svg +1 -0
- package/media/disrupt.svg +1 -1
- package/media/drop-zone.svg +1 -0
- package/media/encirclement.svg +1 -1
- package/media/engineer-work-line.svg +1 -0
- package/media/extraction-zone.svg +1 -0
- package/media/final-protective-fire-left.svg +1 -1
- package/media/final-protective-fire-right.svg +1 -1
- package/media/fix-mission-task.svg +1 -0
- package/media/fix.svg +1 -1
- package/media/flot.svg +1 -1
- package/media/fortified-area.svg +1 -1
- package/media/fortified-line.svg +1 -1
- package/media/forward-edge-of-battle-area.svg +1 -0
- package/media/frontal-attack.svg +1 -0
- package/media/generic-c2-area.svg +1 -0
- package/media/generic-c2-line.svg +1 -0
- package/media/guard.svg +1 -0
- package/media/guerrilla-base.svg +1 -0
- package/media/handover-line.svg +1 -0
- package/media/isolate.svg +1 -1
- package/media/joint-tactical-action-area.svg +1 -0
- package/media/landing-zone.svg +1 -0
- package/media/light-line.svg +1 -0
- package/media/limited-access-area.svg +1 -0
- package/media/line.svg +1 -1
- package/media/main-attack.svg +1 -1
- package/media/named-area-of-interest.svg +1 -0
- package/media/no-fire-area-irregular.svg +1 -0
- package/media/objective-area.svg +1 -0
- package/media/obstacle-bypass-difficult.svg +1 -1
- package/media/obstacle-bypass-easy.svg +1 -1
- package/media/obstacle-bypass-impossible.svg +1 -1
- package/media/phase-line.svg +1 -0
- package/media/pickup-zone.svg +1 -0
- package/media/polygon.svg +1 -1
- package/media/principal-direction-of-fire.svg +1 -1
- package/media/rectangle.svg +1 -1
- package/media/screen.svg +1 -0
- package/media/search-area.svg +1 -1
- package/media/secondary-direction-of-fire.svg +1 -0
- package/media/strong-point.svg +1 -1
- package/media/submarine-action-area.svg +1 -0
- package/media/submarine-generated-action-area.svg +1 -0
- package/media/support-by-fire.svg +1 -1
- package/media/supporting-attack.svg +1 -1
- package/media/target-area-of-interest.svg +1 -0
- package/media/turn.svg +1 -1
- package/media/turning-movement.svg +1 -0
- package/package.json +1 -1
- package/dist/renderControlMeasure-CFdgTURO.mjs +0 -7521
|
@@ -23,6 +23,13 @@ interface ControlMeasureDrawRule {
|
|
|
23
23
|
* `minimumUserPoints` (no early preview).
|
|
24
24
|
*/
|
|
25
25
|
readonly minimumPreviewPoints?: number;
|
|
26
|
+
/**
|
|
27
|
+
* Let a repeat click on the latest point commit the rule's early derived
|
|
28
|
+
* preview before `minimumUserPoints` raw anchors have been placed. Use only
|
|
29
|
+
* when `derive` produces a meaningful default canonical shape from
|
|
30
|
+
* `minimumPreviewPoints` points.
|
|
31
|
+
*/
|
|
32
|
+
readonly finishOnLastPointRepeat?: boolean;
|
|
26
33
|
/**
|
|
27
34
|
* Opt a fixed-length draw into the standard dashed interaction guide. Fixed
|
|
28
35
|
* shapes suppress guides by default because their generator preview is
|
|
@@ -145,6 +152,37 @@ type FriendlyKey = `${FriendlyName}${Suffix}`;
|
|
|
145
152
|
* this is resolved to canonical form.
|
|
146
153
|
*/
|
|
147
154
|
type TextAmplifiers = Partial<Record<TextAmplifierKey | FriendlyKey, string>>;
|
|
155
|
+
/**
|
|
156
|
+
* Stable key for a non-amplifier generated label. The renderer assigns these
|
|
157
|
+
* from the label's part and per-part label ordinal when a generator has not
|
|
158
|
+
* supplied a doctrinal field key. Generators that can change a label's order
|
|
159
|
+
* should supply an explicit `labelPlacementKey` instead.
|
|
160
|
+
*/
|
|
161
|
+
type GeneratedLabelKey = `label:${string}`;
|
|
162
|
+
/**
|
|
163
|
+
* Object form of a per-label override. `rotation` is in stored radians — the
|
|
164
|
+
* same convention as `FeaturePartProps.rotation` (adapters render the
|
|
165
|
+
* on-screen angle as `π − rotation`).
|
|
166
|
+
*/
|
|
167
|
+
interface LabelPlacementOverride {
|
|
168
|
+
position?: Position;
|
|
169
|
+
rotation?: number;
|
|
170
|
+
}
|
|
171
|
+
/** A per-label override: a bare anchor (legacy shorthand) or the object form. */
|
|
172
|
+
type AmplifierPlacement = Position | LabelPlacementOverride;
|
|
173
|
+
/**
|
|
174
|
+
* User-adjusted anchor positions (and, optionally, rotations) for doctrinal
|
|
175
|
+
* and generated text labels, keyed by a canonical `TextAmplifierKey` or a
|
|
176
|
+
* synthesized `GeneratedLabelKey`.
|
|
177
|
+
*/
|
|
178
|
+
type AmplifierPlacements = Record<string, AmplifierPlacement | undefined>;
|
|
179
|
+
/**
|
|
180
|
+
* Resolves a raw placement entry to its object form: a bare `Position` is
|
|
181
|
+
* legacy shorthand for `{ position }`; an object form passes through only the
|
|
182
|
+
* fields that are actually valid (`position` must be a finite `[lon, lat]`,
|
|
183
|
+
* `rotation` a finite number); `undefined` resolves to `{}`.
|
|
184
|
+
*/
|
|
185
|
+
declare function resolveAmplifierPlacement(value: AmplifierPlacement | undefined): LabelPlacementOverride;
|
|
148
186
|
/** Amplifier values resolved to canonical doctrinal keys, as generators receive them. */
|
|
149
187
|
type CanonicalTextAmplifiers = Readonly<Partial<Record<TextAmplifierKey, string>>>;
|
|
150
188
|
/**
|
|
@@ -174,7 +212,7 @@ declare function normalizeTextAmplifiers(input: TextAmplifiers | undefined): Can
|
|
|
174
212
|
//#region src/metadata.d.ts
|
|
175
213
|
type ControlMeasureGeometryType = Geometry["type"];
|
|
176
214
|
type ControlMeasureGeometry = "point" | "line" | "area";
|
|
177
|
-
declare const DRAW_RULE_IDS: readonly ["Area1", "Area7", "Area8", "Area11", "Area12", "Area15", "Area21", "Axis1", "Line1", "Line3", "Line9", "Line10", "Line23", "Line24", "Line29", "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", "Point12", "Rectangle"];
|
|
178
216
|
type DrawRuleId = (typeof DRAW_RULE_IDS)[number];
|
|
179
217
|
interface BaseParamDescriptor {
|
|
180
218
|
key: string;
|
|
@@ -206,6 +244,20 @@ interface TextParamDescriptor extends BaseParamDescriptor {
|
|
|
206
244
|
type: "text";
|
|
207
245
|
placeholder?: string;
|
|
208
246
|
maxLength?: number;
|
|
247
|
+
/**
|
|
248
|
+
* The doctrinal Table L-II field this free-text option renders (e.g.
|
|
249
|
+
* `phaseLineName` renders field `T`) — lets metadata-driven UIs (e.g. a
|
|
250
|
+
* label-placement preview) substitute a `<T>`-style placeholder for the
|
|
251
|
+
* option, the same way a `TextAmplifierDescriptor` does for a real
|
|
252
|
+
* amplifier field.
|
|
253
|
+
*/
|
|
254
|
+
field?: TextAmplifierField;
|
|
255
|
+
/**
|
|
256
|
+
* Whether the value may contain explicit line breaks that a metadata-driven
|
|
257
|
+
* editor should let the user enter directly (a multi-row textarea rather
|
|
258
|
+
* than a single-line input), e.g. the generic Text measure's `text` option.
|
|
259
|
+
*/
|
|
260
|
+
multiline?: boolean;
|
|
209
261
|
}
|
|
210
262
|
type ParamDescriptor = NumberParamDescriptor | BooleanParamDescriptor | ColorParamDescriptor | TextParamDescriptor | EnumParamDescriptor;
|
|
211
263
|
/** Editor-facing description of one text amplifier field a measure accepts. */
|
|
@@ -248,6 +300,40 @@ interface ControlMeasureMetadata {
|
|
|
248
300
|
* definition means adding such a measure stays a one-file change (ADR-0013).
|
|
249
301
|
*/
|
|
250
302
|
capturesLabelSize?: boolean;
|
|
303
|
+
/**
|
|
304
|
+
* Static, per-kind declaration of what a rendered instance can paint — used
|
|
305
|
+
* by a host editor to decide which style controls (stroke color/width,
|
|
306
|
+
* fill toggle/pattern/color, text color) are meaningful to show for this
|
|
307
|
+
* kind. It describes the *kind*, not a particular instance: a `filled`
|
|
308
|
+
* boolean option still governs whether any given instance is actually
|
|
309
|
+
* filled, this only says whether fill control is meaningful at all.
|
|
310
|
+
*/
|
|
311
|
+
paints: ControlMeasurePaintCapability;
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* A control measure's fill capability, per {@link ControlMeasurePaintCapability.fill}.
|
|
315
|
+
*
|
|
316
|
+
* - `"none"` — no emitted part is ever filled; a fill/fillColor/fillPattern
|
|
317
|
+
* control would be inert.
|
|
318
|
+
* - `"fixed"` — a filled part exists, but the generator pins its
|
|
319
|
+
* `fillPattern` (a solid accent like an echelon marker, or a doctrinal
|
|
320
|
+
* hatch like Limited Access Area's back-hatch) — `cm.style.fillPattern`
|
|
321
|
+
* never reaches it. `fillColor` is *not* pinned, so a fill color override
|
|
322
|
+
* still reaches the part; only the pattern control is inert.
|
|
323
|
+
* - `"user"` — a filled part exists whose pattern the generator leaves
|
|
324
|
+
* unset, so `cm.style.fillPattern` reaches the output. These are exactly
|
|
325
|
+
* the kinds governed by a `filled` boolean {@link ParamDescriptor}
|
|
326
|
+
* (polygon, rectangle, circle, block-arrow).
|
|
327
|
+
*/
|
|
328
|
+
type ControlMeasureFillCapability = "none" | "fixed" | "user";
|
|
329
|
+
/** What a rendered control-measure kind can paint — see {@link ControlMeasureMetadata.paints}. */
|
|
330
|
+
interface ControlMeasurePaintCapability {
|
|
331
|
+
/** Whether any emitted part is stroked (non-Point) geometry — gates a stroke color/width control. */
|
|
332
|
+
stroke: boolean;
|
|
333
|
+
/** Whether/how any emitted part is filled — see {@link ControlMeasureFillCapability}. */
|
|
334
|
+
fill: ControlMeasureFillCapability;
|
|
335
|
+
/** Whether the kind emits text label features — gates a text color control. */
|
|
336
|
+
text: boolean;
|
|
251
337
|
}
|
|
252
338
|
//#endregion
|
|
253
339
|
//#region src/define.d.ts
|
|
@@ -256,6 +342,10 @@ interface ControlMeasureMetadata {
|
|
|
256
342
|
* geometry, with per-feature properties that the renderer normalizes.
|
|
257
343
|
*/
|
|
258
344
|
type AnyFeatureCollection = FeatureCollection<Geometry, Record<string, unknown> | null>;
|
|
345
|
+
/** Read-only instance state that can affect generated geometry. */
|
|
346
|
+
interface ControlMeasureGeneratorContext {
|
|
347
|
+
amplifierPlacements?: AmplifierPlacements;
|
|
348
|
+
}
|
|
259
349
|
/**
|
|
260
350
|
* A generator's call signature, constrained only by its inputs and output. The
|
|
261
351
|
* options parameter is typed `never` so that a generator with *any* concrete
|
|
@@ -266,9 +356,11 @@ type AnyFeatureCollection = FeatureCollection<Geometry, Record<string, unknown>
|
|
|
266
356
|
*
|
|
267
357
|
* The optional third parameter carries the instance's normalized text
|
|
268
358
|
* amplifiers (ADR-0027); a generator that ignores text amplifiers just omits
|
|
269
|
-
* the parameter
|
|
359
|
+
* the parameter. The optional fourth parameter carries instance state needed
|
|
360
|
+
* while generating geometry derived from an individual label placement.
|
|
361
|
+
* Generators may omit either trailing parameter.
|
|
270
362
|
*/
|
|
271
|
-
type ControlMeasureGenerator = (controlPoints: Position[], options: never, textAmplifiers?: CanonicalTextAmplifiers) => AnyFeatureCollection;
|
|
363
|
+
type ControlMeasureGenerator = (controlPoints: Position[], options: never, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext) => AnyFeatureCollection;
|
|
272
364
|
/**
|
|
273
365
|
* Everything that defines one control measure, co-located with its generator.
|
|
274
366
|
* `registry.ts` collects these into the single `DEFINITIONS` map, from which
|
|
@@ -314,6 +406,30 @@ interface ControlMeasureDefinition<Id extends string, G extends ControlMeasureGe
|
|
|
314
406
|
* against the new orientation. See ADR-0023.
|
|
315
407
|
*/
|
|
316
408
|
freezeOrientation?: (controlPoints: Position[], options: NonNullable<Parameters<G>[1]>) => Partial<NonNullable<Parameters<G>[1]>> | undefined;
|
|
409
|
+
/**
|
|
410
|
+
* Folds a box transform gesture's screen-space delta into option values for a
|
|
411
|
+
* graphic that persists orientation and/or size as options rather than in its
|
|
412
|
+
* geometry — single-point graphics (e.g. Text) have no geometry to encode
|
|
413
|
+
* them. Returns an options patch to merge onto the working options, or
|
|
414
|
+
* `undefined` when the kind carries no such option (or the delta is inert).
|
|
415
|
+
* Edit hosts call this at a rotate/scale gesture's commit, alongside the rigid
|
|
416
|
+
* transform of the control points, so the persisted rotation/size follow the
|
|
417
|
+
* box. The measure owns the unit/sign conversion (e.g. Text stores degrees
|
|
418
|
+
* clockwise-on-screen while the delta is radians). See ADR-0017/0023.
|
|
419
|
+
*/
|
|
420
|
+
transformOptions?: (options: NonNullable<Parameters<G>[1]>, delta: BoxTransformDelta) => Partial<NonNullable<Parameters<G>[1]>> | undefined;
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* A box transform gesture's screen-space delta, folded into orientation- and
|
|
424
|
+
* size-carrying options by {@link ControlMeasureDefinition.transformOptions}.
|
|
425
|
+
* The transform box (ADR-0017) is the source: `scale` is the uniform corner
|
|
426
|
+
* -scale factor (`1` = no scaling), `rotationRadians` the rotate-grip delta
|
|
427
|
+
* (positive = clockwise on screen, matching the box angle convention; `0` = no
|
|
428
|
+
* rotation). A body translate reports neither (`{ scale: 1, rotationRadians: 0 }`).
|
|
429
|
+
*/
|
|
430
|
+
interface BoxTransformDelta {
|
|
431
|
+
scale: number;
|
|
432
|
+
rotationRadians: number;
|
|
317
433
|
}
|
|
318
434
|
/**
|
|
319
435
|
* A measure's representative preview input. Shared between the typed
|
|
@@ -324,6 +440,12 @@ interface ControlMeasureDefinition<Id extends string, G extends ControlMeasureGe
|
|
|
324
440
|
interface PreviewSample<Options> {
|
|
325
441
|
controlPoints: readonly (readonly [number, number])[];
|
|
326
442
|
options?: Partial<Options>;
|
|
443
|
+
/**
|
|
444
|
+
* Sample text amplifiers (ADR-0027) rendered onto the representative
|
|
445
|
+
* preview, for measures whose doctrinal appearance is carried by amplifier
|
|
446
|
+
* text (e.g. Boundary-style end/center labels) rather than options alone.
|
|
447
|
+
*/
|
|
448
|
+
textAmplifiers?: TextAmplifiers;
|
|
327
449
|
}
|
|
328
450
|
/**
|
|
329
451
|
* Extracts a definition's options type covariantly from its generator's
|
|
@@ -369,23 +491,10 @@ interface BoundaryOptions {
|
|
|
369
491
|
* lock the T/AS text size to the glyph height.
|
|
370
492
|
*/
|
|
371
493
|
metersPerPixel?: number;
|
|
372
|
-
/**
|
|
373
|
-
* Map zoom captured at draw-commit (`capturesLabelSize`). Forwarded onto the
|
|
374
|
-
* T/AS labels as `textSizeZoom` so a ground-anchored boundary's text scales
|
|
375
|
-
* with zoom like its meter-baked echelon glyph (maplibre).
|
|
376
|
-
*/
|
|
377
|
-
labelSizeZoom?: number;
|
|
378
|
-
/**
|
|
379
|
-
* Map resolution (meters-per-pixel) captured at draw-commit
|
|
380
|
-
* (`capturesLabelSize`). Forwarded onto the T/AS labels as `textSizeResolution`
|
|
381
|
-
* so a ground-anchored boundary's text scales with zoom (OpenLayers), and used
|
|
382
|
-
* as the reference resolution that sizes the text to the glyph height.
|
|
383
|
-
*/
|
|
384
|
-
labelSizeResolution?: number;
|
|
385
494
|
/**
|
|
386
495
|
* Number of label groups (echelon + designators), spaced evenly by cumulative
|
|
387
|
-
* arc length along the whole boundary. `1` places a single group at
|
|
388
|
-
* midpoint of the total length
|
|
496
|
+
* arc length along the whole boundary. `1` places a single group at
|
|
497
|
+
* `labelPosition`, whose default is the midpoint of the total length.
|
|
389
498
|
* @default 1
|
|
390
499
|
*/
|
|
391
500
|
labelRepetitions?: number;
|
|
@@ -397,6 +506,13 @@ interface BoundaryOptions {
|
|
|
397
506
|
* @default 1
|
|
398
507
|
*/
|
|
399
508
|
labelSpacing?: number;
|
|
509
|
+
/**
|
|
510
|
+
* Position of a single label group as a fraction of cumulative arc length
|
|
511
|
+
* from the boundary's first control point (0) to its last (1). Ignored when
|
|
512
|
+
* `labelRepetitions > 1`.
|
|
513
|
+
* @default 0.5
|
|
514
|
+
*/
|
|
515
|
+
labelPosition?: number;
|
|
400
516
|
/**
|
|
401
517
|
* Clearance between the line/echelon glyph and the unit labels, as a ratio
|
|
402
518
|
* of the echelon glyph height (like `echelonPadding`). In `"along"` mode
|
|
@@ -450,9 +566,269 @@ declare const DEFAULT_BOUNDARY_OPTIONS: BoundaryOptions;
|
|
|
450
566
|
*/
|
|
451
567
|
declare function createBoundary(positions: Position[], options?: BoundaryOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<MultiLineString | MultiPolygon | Point>;
|
|
452
568
|
//#endregion
|
|
569
|
+
//#region src/projection.d.ts
|
|
570
|
+
type Point2D = [number, number];
|
|
571
|
+
/**
|
|
572
|
+
* Project WGS84 (Lon/Lat) to Web Mercator (Meters).
|
|
573
|
+
*/
|
|
574
|
+
declare const project: (lon: number, lat: number) => Point2D;
|
|
575
|
+
/**
|
|
576
|
+
* Unproject Web Mercator (Meters) back to WGS84 (Lon/Lat).
|
|
577
|
+
*/
|
|
578
|
+
declare const unproject: (x: number, y: number) => Position;
|
|
579
|
+
/**
|
|
580
|
+
* Great-circle distance in meters between two lon/lat positions (haversine on
|
|
581
|
+
* the WGS84 mean-radius sphere). Accurate at all scales — use this for
|
|
582
|
+
* measurement readouts (segment lengths, radii). Most generators still build
|
|
583
|
+
* geometry in projected Web Mercator meters, so at high latitudes a graphic's
|
|
584
|
+
* Mercator dimensions can exceed the true ground distance this returns; the
|
|
585
|
+
* generic circle is the exception — it samples at constant geodesic radius,
|
|
586
|
+
* so its ring and this readout agree exactly.
|
|
587
|
+
*/
|
|
588
|
+
declare const haversineDistance: (a: Position, b: Position) => number;
|
|
589
|
+
//#endregion
|
|
590
|
+
//#region src/internal/sketch.d.ts
|
|
591
|
+
/**
|
|
592
|
+
* Shared `smooth`/`smoothResolution` option pair for free n-point polyline
|
|
593
|
+
* measures (draw rule Line1): curves the rendered path through the control
|
|
594
|
+
* points via a centripetal Catmull-Rom spline. The spline preserves the
|
|
595
|
+
* endpoints, so the line still meets its drawn anchors, and is a no-op for
|
|
596
|
+
* fewer than three control points (a single segment cannot be smoothed).
|
|
597
|
+
*/
|
|
598
|
+
interface SmoothLineOptions {
|
|
599
|
+
/**
|
|
600
|
+
* Round the line's corners by curving the path through the control points
|
|
601
|
+
* (centripetal Catmull-Rom spline). The spline preserves the endpoints, so
|
|
602
|
+
* the line still meets its drawn anchors.
|
|
603
|
+
* @default false
|
|
604
|
+
*/
|
|
605
|
+
smooth?: boolean;
|
|
606
|
+
/**
|
|
607
|
+
* Number of samples per segment when `smooth` is enabled. Higher values
|
|
608
|
+
* yield a denser, smoother curve.
|
|
609
|
+
* @default (varies per measure)
|
|
610
|
+
*/
|
|
611
|
+
smoothResolution?: number;
|
|
612
|
+
}
|
|
613
|
+
//#endregion
|
|
614
|
+
//#region src/internal/line-labels.d.ts
|
|
615
|
+
/**
|
|
616
|
+
* Label sizing per the size-anchor model (ADR-0020, ADR-0028): the presence of
|
|
617
|
+
* `labelSizePixels` marks the labels screen-anchored; `labelSize` alone is
|
|
618
|
+
* ground-anchored. Carrying both behaves screen-anchored (pixels win),
|
|
619
|
+
* matching the geometry options' precedence.
|
|
620
|
+
*/
|
|
621
|
+
interface LabelSizeOptions {
|
|
622
|
+
/** Text height in projected meters — ground-anchored label size (ADR-0028). */
|
|
623
|
+
labelSize?: number;
|
|
624
|
+
/** Text height in CSS pixels — screen-anchored label size (ADR-0028). */
|
|
625
|
+
labelSizePixels?: number;
|
|
626
|
+
/**
|
|
627
|
+
* Meters-per-pixel at the current view. Stamped by the host when the labels
|
|
628
|
+
* are screen-anchored; resolves `labelSizePixels` to the projected-meter
|
|
629
|
+
* height that meter-denominated placement (offsets, gaps, row pitch) needs.
|
|
630
|
+
*/
|
|
631
|
+
metersPerPixel?: number;
|
|
632
|
+
}
|
|
633
|
+
/** Shared placement options for the fixed-end-label line measures. */
|
|
634
|
+
interface LineLabelOptions extends LabelSizeOptions {
|
|
635
|
+
/**
|
|
636
|
+
* Extra clearance between the line and its labels, as a ratio of the
|
|
637
|
+
* label's resolved text height (`labelSize`, or `labelSizePixels ×
|
|
638
|
+
* metersPerPixel`), like Boundary's `labelPadding`. Negative values clamp
|
|
639
|
+
* to 0. Only effective when a label size resolves — the no-size fallback
|
|
640
|
+
* offset is a fixed meter value, unaffected by this ratio.
|
|
641
|
+
* @default 0
|
|
642
|
+
*/
|
|
643
|
+
labelPadding?: number;
|
|
644
|
+
}
|
|
645
|
+
//#endregion
|
|
646
|
+
//#region src/generators/cm11-command-control-lines/light-line.d.ts
|
|
647
|
+
/** Configuration options for the Light line control measure. */
|
|
648
|
+
interface LightLineOptions extends LineLabelOptions, SmoothLineOptions {
|
|
649
|
+
/**
|
|
650
|
+
* Optional phase line naming: renders `PL <name>` just beyond each end of
|
|
651
|
+
* the line, additive to the fixed "LL" labels. Empty or whitespace-only
|
|
652
|
+
* renders no label.
|
|
653
|
+
* @default none
|
|
654
|
+
*/
|
|
655
|
+
phaseLineName?: string;
|
|
656
|
+
/**
|
|
657
|
+
* Prefix the `phaseLineName` label with "PL" (`"PL DAVID"`, or a bare
|
|
658
|
+
* "DAVID" when `false`). No effect when `phaseLineName` is empty — unlike
|
|
659
|
+
* Phase Line itself, this measure already carries its own fixed "LL"
|
|
660
|
+
* label, so there is no bare "PL" fallback.
|
|
661
|
+
* @default true
|
|
662
|
+
*/
|
|
663
|
+
includePrefix?: boolean;
|
|
664
|
+
}
|
|
665
|
+
/** Default options for the Light line control measure. */
|
|
666
|
+
declare const DEFAULT_LIGHT_LINE_OPTIONS: LightLineOptions;
|
|
667
|
+
/**
|
|
668
|
+
* Creates a Light line control measure: a polyline through `positions`
|
|
669
|
+
* labeled "LL" above the line near each end.
|
|
670
|
+
*/
|
|
671
|
+
declare function createLightLine(positions: Position[], options?: LightLineOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<LineString | Point>;
|
|
672
|
+
//#endregion
|
|
673
|
+
//#region src/generators/cm11-command-control-lines/engineer-work-line.d.ts
|
|
674
|
+
/** Configuration options for the Engineer work line control measure. */
|
|
675
|
+
interface EngineerWorkLineOptions extends LineLabelOptions, SmoothLineOptions {
|
|
676
|
+
/**
|
|
677
|
+
* Optional phase line naming: renders `PL <name>` just beyond each end of
|
|
678
|
+
* the line, additive to the fixed "EWL" labels. Empty or whitespace-only
|
|
679
|
+
* renders no label.
|
|
680
|
+
* @default none
|
|
681
|
+
*/
|
|
682
|
+
phaseLineName?: string;
|
|
683
|
+
/**
|
|
684
|
+
* Prefix the `phaseLineName` label with "PL" (`"PL DAVID"`, or a bare
|
|
685
|
+
* "DAVID" when `false`). No effect when `phaseLineName` is empty — unlike
|
|
686
|
+
* Phase Line itself, this measure already carries its own fixed "EWL"
|
|
687
|
+
* label, so there is no bare "PL" fallback.
|
|
688
|
+
* @default true
|
|
689
|
+
*/
|
|
690
|
+
includePrefix?: boolean;
|
|
691
|
+
}
|
|
692
|
+
/** Default options for the Engineer work line control measure. */
|
|
693
|
+
declare const DEFAULT_ENGINEER_WORK_LINE_OPTIONS: EngineerWorkLineOptions;
|
|
694
|
+
/**
|
|
695
|
+
* Creates an Engineer work line control measure: a polyline through
|
|
696
|
+
* `positions` labeled "EWL" above the line near each end, plus one center
|
|
697
|
+
* label group at the midpoint of the total arc length carrying the
|
|
698
|
+
* responsible units' Field T/AS designator+country (left-of-travel side
|
|
699
|
+
* above the line, T1/AS1 below). No center group is emitted when all four
|
|
700
|
+
* amplifiers are empty.
|
|
701
|
+
*/
|
|
702
|
+
declare function createEngineerWorkLine(positions: Position[], options?: EngineerWorkLineOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<LineString | Point>;
|
|
703
|
+
//#endregion
|
|
704
|
+
//#region src/generators/cm11-command-control-lines/generic-c2-line.d.ts
|
|
705
|
+
/** Configuration options for the Generic command and control line. */
|
|
706
|
+
interface GenericC2LineOptions extends LineLabelOptions, SmoothLineOptions {
|
|
707
|
+
/**
|
|
708
|
+
* Optional phase line naming: renders `PL <name>` just beyond each end of
|
|
709
|
+
* the line, additive to the H/T/W/W1 amplifier labels. Empty or
|
|
710
|
+
* whitespace-only renders no label.
|
|
711
|
+
* @default none
|
|
712
|
+
*/
|
|
713
|
+
phaseLineName?: string;
|
|
714
|
+
/**
|
|
715
|
+
* Prefix the `phaseLineName` label with "PL" (`"PL DAVID"`, or a bare
|
|
716
|
+
* "DAVID" when `false`). No effect when `phaseLineName` is empty — this
|
|
717
|
+
* measure already carries its own H/T/W/W1 amplifier labels, so there is
|
|
718
|
+
* no bare "PL" fallback.
|
|
719
|
+
* @default true
|
|
720
|
+
*/
|
|
721
|
+
includePrefix?: boolean;
|
|
722
|
+
}
|
|
723
|
+
/** Default options for the Generic command and control line. */
|
|
724
|
+
declare const DEFAULT_GENERIC_C2_LINE_OPTIONS: GenericC2LineOptions;
|
|
725
|
+
/**
|
|
726
|
+
* Creates a Generic command and control line: a polyline through `positions`
|
|
727
|
+
* with optional near-end text — `H`/`T` joined above the line, `W`/`W1`
|
|
728
|
+
* joined as a "from - to" range below it. Both rows share the per-tip
|
|
729
|
+
* placement from {@link import("../../internal/line-labels").aboveEndFrames}
|
|
730
|
+
* (inset from the tip, anchored toward the line's interior), one at
|
|
731
|
+
* `base + perp·offset` and the other at `base − perp·offset`.
|
|
732
|
+
*/
|
|
733
|
+
declare function createGenericC2Line(positions: Position[], options?: GenericC2LineOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<LineString | Point>;
|
|
734
|
+
//#endregion
|
|
735
|
+
//#region src/style.d.ts
|
|
736
|
+
/**
|
|
737
|
+
* Framework-agnostic style hints attached to a `ControlMeasure`.
|
|
738
|
+
*
|
|
739
|
+
* Mirrors the per-feature subset of what map adapters render. The renderer
|
|
740
|
+
* fans these into each emitted feature's `properties.style` ([[StyleHints]]).
|
|
741
|
+
* Adapters merge them over their layer-level style; generator-emitted hints
|
|
742
|
+
* on individual features win over both.
|
|
743
|
+
*/
|
|
744
|
+
interface ControlMeasureStyle {
|
|
745
|
+
/**
|
|
746
|
+
* The single symbol color. Control measures are monocolor: one color paints
|
|
747
|
+
* every part, stroked or filled. Input-only — resolved into concrete
|
|
748
|
+
* `strokeColor` / `fillColor` per feature by the renderer and never emitted
|
|
749
|
+
* on output. `strokeColor` / `fillColor` act as optional per-channel
|
|
750
|
+
* overrides. See ADR-0011.
|
|
751
|
+
*/
|
|
752
|
+
color?: string;
|
|
753
|
+
strokeColor?: string;
|
|
754
|
+
strokeWidth?: number;
|
|
755
|
+
strokeDash?: number[];
|
|
756
|
+
fillColor?: string;
|
|
757
|
+
/**
|
|
758
|
+
* How a filled part's interior is painted. `"solid"` is explicit so a
|
|
759
|
+
* measure can override a patterned layer default (e.g. a hatch fill set
|
|
760
|
+
* at the façade). Pattern lines are drawn in the resolved fill color —
|
|
761
|
+
* alpha included, there is no separate opacity field. Renderers that
|
|
762
|
+
* cannot draw a pattern degrade to solid.
|
|
763
|
+
*/
|
|
764
|
+
fillPattern?: FillPattern;
|
|
765
|
+
/**
|
|
766
|
+
* Display-time graphic opacity multiplier in `[0, 1]`; absent = fully
|
|
767
|
+
* opaque. Unlike `color`'s alpha, this fades the whole graphic — stroke,
|
|
768
|
+
* fill, patterns, and baked labels — as one knob, independent of the
|
|
769
|
+
* authored color. The resolver folds it into each resolved part's color
|
|
770
|
+
* alpha (`final alpha = opacity × color alpha`) rather than adding a new
|
|
771
|
+
* paint channel, so adapters and `toSimpleStyle` need no changes.
|
|
772
|
+
* Display-only: hit-testing and selection reason about color alpha, not
|
|
773
|
+
* this multiplier, so a graphic at `opacity: 0` stays fully selectable.
|
|
774
|
+
* Out-of-range values clamp to `[0, 1]`. See ADR-0040.
|
|
775
|
+
*/
|
|
776
|
+
opacity?: number;
|
|
777
|
+
/**
|
|
778
|
+
* Render a contrast-aware halo behind label glyphs so text stays legible on
|
|
779
|
+
* busy backgrounds. Cascades like any other hint (graphicsStyle → measure →
|
|
780
|
+
* generator), letting a host switch halos on for every labeled measure
|
|
781
|
+
* rather than only the generic Text graphic.
|
|
782
|
+
*
|
|
783
|
+
* Text-only: the renderer applies it to features that carry `text` and drops
|
|
784
|
+
* it everywhere else, so a layer-level `true` never leaks onto plain stroked
|
|
785
|
+
* or filled parts. The halo *color* is not authored here — it is derived per
|
|
786
|
+
* feature from the resolved text color, so each label gets a halo that
|
|
787
|
+
* actually contrasts with it. Unlike the other hints this one is consumed by
|
|
788
|
+
* the renderer and lifted to a top-level `textHalo` feature property; it is
|
|
789
|
+
* never emitted on `properties.style`. See ADR-0042.
|
|
790
|
+
*/
|
|
791
|
+
textHalo?: boolean;
|
|
792
|
+
}
|
|
793
|
+
/**
|
|
794
|
+
* How a filled part's interior is painted. See `ControlMeasureStyle.fillPattern`.
|
|
795
|
+
*/
|
|
796
|
+
type FillPattern = "solid" | "hatch" | "reverse-hatch" | "cross-hatch" | "horizontal" | "vertical" | "dots";
|
|
797
|
+
//#endregion
|
|
798
|
+
//#region src/internal/area-labels.d.ts
|
|
799
|
+
/** Shared placement options for the centered-label area measures. */
|
|
800
|
+
interface AreaLabelOptions extends LabelSizeOptions {
|
|
801
|
+
/**
|
|
802
|
+
* Extra row leading (and ENY inset), as a ratio of the label's resolved
|
|
803
|
+
* text height, like the labeled line measures' own `labelPadding`.
|
|
804
|
+
* Negative values clamp to 0.
|
|
805
|
+
* @default 0
|
|
806
|
+
*/
|
|
807
|
+
labelPadding?: number;
|
|
808
|
+
}
|
|
809
|
+
/** Options for {@link labeledAreaFeatures}: {@link buildClosedRing}'s
|
|
810
|
+
* smoothing knobs plus the shared {@link AreaLabelOptions} label placement. */
|
|
811
|
+
interface LabeledAreaOptions extends AreaLabelOptions {
|
|
812
|
+
/**
|
|
813
|
+
* Round the area's corners by curving the boundary through the control
|
|
814
|
+
* points (closed centripetal Catmull-Rom spline).
|
|
815
|
+
* @default false
|
|
816
|
+
*/
|
|
817
|
+
smooth?: boolean;
|
|
818
|
+
/**
|
|
819
|
+
* Number of samples per segment when `smooth` is enabled.
|
|
820
|
+
* @default 16
|
|
821
|
+
*/
|
|
822
|
+
smoothResolution?: number;
|
|
823
|
+
}
|
|
824
|
+
//#endregion
|
|
453
825
|
//#region src/generators/cm15-maneuver-areas/battlePosition.d.ts
|
|
454
|
-
/**
|
|
455
|
-
|
|
826
|
+
/**
|
|
827
|
+
* Configuration options for the Battle Position control measure. Also
|
|
828
|
+
* carries the shared {@link AreaLabelOptions} placement for its centered
|
|
829
|
+
* Field T (designator) label.
|
|
830
|
+
*/
|
|
831
|
+
interface BattlePositionOptions extends AreaLabelOptions {
|
|
456
832
|
/**
|
|
457
833
|
* Field B echelon. One of the keys in the echelon vocabulary (e.g.
|
|
458
834
|
* `"battalion"`, `"division"`) or an equivalent symbol form (`"II"`, `"XX"`).
|
|
@@ -536,8 +912,12 @@ declare const DEFAULT_BATTLE_POSITION_OPTIONS: BattlePositionOptions;
|
|
|
536
912
|
* @param positions - Area anchor points (≥3); the input contract is enforced at
|
|
537
913
|
* the render seam (ADR-0014).
|
|
538
914
|
* @param options - {@link BattlePositionOptions}.
|
|
915
|
+
* @param textAmplifiers - Field T (designation, centered in the area) plus an
|
|
916
|
+
* optional Field N "ENY" hostile marker at the west/east edges (no H/W rows —
|
|
917
|
+
* this measure's template pairs the designation with the Field B glyph, not
|
|
918
|
+
* the plain L-15 boundary template).
|
|
539
919
|
*/
|
|
540
|
-
declare function createBattlePosition(positions: Position[], options?: BattlePositionOptions): FeatureCollection<MultiLineString | MultiPolygon>;
|
|
920
|
+
declare function createBattlePosition(positions: Position[], options?: BattlePositionOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<MultiLineString | MultiPolygon | Point>;
|
|
541
921
|
//#endregion
|
|
542
922
|
//#region src/generators/cm15-maneuver-areas/strongPoint.d.ts
|
|
543
923
|
/** Configuration options for the Strong Point control measure. */
|
|
@@ -553,8 +933,54 @@ declare const DEFAULT_STRONG_POINT_OPTIONS: StrongPointOptions;
|
|
|
553
933
|
* @param positions - Area anchor points (>=3); the input contract is enforced
|
|
554
934
|
* at the render seam (ADR-0014).
|
|
555
935
|
* @param options - {@link StrongPointOptions}.
|
|
936
|
+
* @param textAmplifiers - Field T (designation, centered in the area) plus an
|
|
937
|
+
* optional Field N "ENY" hostile marker at the west/east edges, same as
|
|
938
|
+
* Battle Position.
|
|
556
939
|
*/
|
|
557
|
-
declare function createStrongPoint(positions: Position[], options?: StrongPointOptions): FeatureCollection<MultiLineString | MultiPolygon>;
|
|
940
|
+
declare function createStrongPoint(positions: Position[], options?: StrongPointOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<MultiLineString | MultiPolygon | Point>;
|
|
941
|
+
//#endregion
|
|
942
|
+
//#region src/generators/cm14-maneuver-lines/direction-of-attack-aviation.d.ts
|
|
943
|
+
interface DirectionOfAttackAviationOptions extends LabelSizeOptions, SmoothLineOptions {
|
|
944
|
+
/** Arrowhead length as a ratio of the route's total length. @default 0.12 */
|
|
945
|
+
arrowheadLengthRatio?: number;
|
|
946
|
+
/** Arrowhead total width as a ratio of its length. @default 1.15 */
|
|
947
|
+
arrowheadWidthRatio?: number;
|
|
948
|
+
/** Bow-tie length as a ratio of the route's total length. @default 0.1 */
|
|
949
|
+
bowTieLengthRatio?: number;
|
|
950
|
+
/** Bow-tie total width as a ratio of its length. @default 0.5 */
|
|
951
|
+
bowTieWidthRatio?: number;
|
|
952
|
+
/** Bow-tie position as a fraction from tail (0) to tip (1). @default 1/3 */
|
|
953
|
+
bowTiePosition?: number;
|
|
954
|
+
/** Field T/W/W1 group position as a fraction from tail (0) to tip (1). @default 2/3 */
|
|
955
|
+
labelPosition?: number;
|
|
956
|
+
/** Extra spacing between the route and W/W1 rows, in label heights. @default 0 */
|
|
957
|
+
labelPadding?: number;
|
|
958
|
+
}
|
|
959
|
+
declare const DEFAULT_DIRECTION_OF_ATTACK_AVIATION_OPTIONS: DirectionOfAttackAviationOptions;
|
|
960
|
+
/** Builds the route, aviation bow-tie, arrowhead, and optional T/W/W1 labels. */
|
|
961
|
+
declare function createDirectionOfAttackAviation(coordinates: Position[], options?: DirectionOfAttackAviationOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<MultiLineString | Point>;
|
|
962
|
+
//#endregion
|
|
963
|
+
//#region src/generators/cm14-maneuver-lines/direction-of-attack-shared.d.ts
|
|
964
|
+
interface DirectionOfAttackLineOptions extends LabelSizeOptions, SmoothLineOptions {
|
|
965
|
+
arrowheadLengthRatio?: number;
|
|
966
|
+
arrowheadWidthRatio?: number;
|
|
967
|
+
/** Field T/W/W1 group position as a fraction from tail (0) to tip (1). */
|
|
968
|
+
labelPosition?: number;
|
|
969
|
+
labelPadding?: number;
|
|
970
|
+
}
|
|
971
|
+
//#endregion
|
|
972
|
+
//#region src/generators/cm14-maneuver-lines/direction-of-main-attack.d.ts
|
|
973
|
+
interface DirectionOfMainAttackOptions extends DirectionOfAttackLineOptions {
|
|
974
|
+
/** Thickness of the outlined arrowhead as a ratio of its length. @default 0.3 */
|
|
975
|
+
arrowheadOutlineRatio?: number;
|
|
976
|
+
}
|
|
977
|
+
declare const DEFAULT_DIRECTION_OF_MAIN_ATTACK_OPTIONS: DirectionOfMainAttackOptions;
|
|
978
|
+
declare function createDirectionOfMainAttack(coordinates: Position[], options?: DirectionOfMainAttackOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<MultiLineString | Point>;
|
|
979
|
+
//#endregion
|
|
980
|
+
//#region src/generators/cm14-maneuver-lines/direction-of-supporting-attack.d.ts
|
|
981
|
+
type DirectionOfSupportingAttackOptions = DirectionOfAttackLineOptions;
|
|
982
|
+
declare const DEFAULT_DIRECTION_OF_SUPPORTING_ATTACK_OPTIONS: DirectionOfSupportingAttackOptions;
|
|
983
|
+
declare function createDirectionOfSupportingAttack(coordinates: Position[], options?: DirectionOfSupportingAttackOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<MultiLineString | Point>;
|
|
558
984
|
//#endregion
|
|
559
985
|
//#region src/generators/cm14-maneuver-lines/principalDirectionOfFire.d.ts
|
|
560
986
|
/**
|
|
@@ -581,6 +1007,119 @@ declare const DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS: Required<PrincipalDir
|
|
|
581
1007
|
*/
|
|
582
1008
|
declare function createPrincipalDirectionOfFire(coordinates: Position[], options?: PrincipalDirectionOfFireOptions): FeatureCollection<MultiLineString, Record<string, never>>;
|
|
583
1009
|
//#endregion
|
|
1010
|
+
//#region src/generators/cm14-maneuver-lines/secondaryDirectionOfFire.d.ts
|
|
1011
|
+
/** Configuration options for the Secondary Direction of Fire tactical symbol. */
|
|
1012
|
+
type SecondaryDirectionOfFireOptions = PrincipalDirectionOfFireOptions;
|
|
1013
|
+
declare const DEFAULT_SECONDARY_DIRECTION_OF_FIRE_OPTIONS: Required<SecondaryDirectionOfFireOptions>;
|
|
1014
|
+
/** Dash and gap lengths used by the two fire-direction arms. */
|
|
1015
|
+
declare const SECONDARY_DIRECTION_OF_FIRE_DASH: readonly [6, 4];
|
|
1016
|
+
interface SecondaryDirectionOfFireProperties extends Record<string, unknown> {
|
|
1017
|
+
part: "arms" | "arrowheads";
|
|
1018
|
+
style: {
|
|
1019
|
+
strokeDash: number[];
|
|
1020
|
+
};
|
|
1021
|
+
}
|
|
1022
|
+
/**
|
|
1023
|
+
* Creates the same V-shaped field-of-fire geometry as Principal Direction of
|
|
1024
|
+
* Fire, with dashed arms and solid open arrowheads.
|
|
1025
|
+
*
|
|
1026
|
+
* @param coordinates - [PT 1 (vertex), PT 2 (tip), PT 3 (tip)]
|
|
1027
|
+
* @param options - Arrowhead sizing parameters
|
|
1028
|
+
*/
|
|
1029
|
+
declare function createSecondaryDirectionOfFire(coordinates: Position[], options?: SecondaryDirectionOfFireOptions): FeatureCollection<MultiLineString, SecondaryDirectionOfFireProperties>;
|
|
1030
|
+
//#endregion
|
|
1031
|
+
//#region src/rendered.d.ts
|
|
1032
|
+
/**
|
|
1033
|
+
* Per-feature style hints carried on `properties.style`.
|
|
1034
|
+
*
|
|
1035
|
+
* These are *resolved*: `renderControlMeasure` cascades `graphicsStyle` →
|
|
1036
|
+
* `cm.style` → any generator pattern hint, then expands the monocolor `color`
|
|
1037
|
+
* into concrete `strokeColor` / `fillColor` per feature (see ADR-0011 and
|
|
1038
|
+
* `resolveSymbolColor`). Output therefore carries concrete colors, never the
|
|
1039
|
+
* input-only `color` key, and a `fillColor` only on parts the generator
|
|
1040
|
+
* marked filled.
|
|
1041
|
+
*
|
|
1042
|
+
* Generators contribute paint *role* and *pattern* (a part is filled; a
|
|
1043
|
+
* sub-line is dashed regardless of the user's stroke), never a hue. Adapters
|
|
1044
|
+
* merge the resulting `StyleHints` over their layer-level style at draw time.
|
|
1045
|
+
*/
|
|
1046
|
+
interface StyleHints extends ControlMeasureStyle {}
|
|
1047
|
+
/**
|
|
1048
|
+
* Per-feature properties emitted by `renderControlMeasure`.
|
|
1049
|
+
*
|
|
1050
|
+
* Stable-id contract — every feature produced by the renderer has:
|
|
1051
|
+
* - `feature.id` of the form `${cmId}:${part}:${index}`
|
|
1052
|
+
* - `properties.part` matching the `part` segment of the id
|
|
1053
|
+
* - `properties.index` matching the `index` segment of the id
|
|
1054
|
+
*
|
|
1055
|
+
* Adapters rely on this contract to diff renders in place without keeping
|
|
1056
|
+
* their own bookkeeping. Use `controlMeasureIdFromFeature` to recover the
|
|
1057
|
+
* `cmId` from a picked feature.
|
|
1058
|
+
*/
|
|
1059
|
+
interface FeaturePartProps {
|
|
1060
|
+
part: string;
|
|
1061
|
+
index: number;
|
|
1062
|
+
style?: StyleHints;
|
|
1063
|
+
/** Label text emitted by generators (e.g. breach "B"). */
|
|
1064
|
+
text?: string;
|
|
1065
|
+
/** Label rotation in radians, emitted by generators. */
|
|
1066
|
+
rotation?: number;
|
|
1067
|
+
/**
|
|
1068
|
+
* Horizontal text alignment relative to the label point: `"start"` = the
|
|
1069
|
+
* text begins at the point, `"end"` = it ends there. Absent = centered.
|
|
1070
|
+
*/
|
|
1071
|
+
textAnchor?: "start" | "end";
|
|
1072
|
+
/** Render an opaque light backdrop behind text placed over patterned geometry. */
|
|
1073
|
+
textBackground?: boolean;
|
|
1074
|
+
/** Render a contrast-aware halo behind the glyphs so text stays legible on busy backgrounds. */
|
|
1075
|
+
textHalo?: boolean;
|
|
1076
|
+
/** Halo color contrasting with the resolved text color; present only when `textHalo` is set. */
|
|
1077
|
+
textHaloColor?: string;
|
|
1078
|
+
/** Canonical field key for a text-amplifier label that may be repositioned. */
|
|
1079
|
+
amplifierField?: TextAmplifierKey;
|
|
1080
|
+
/** Stable key used to persist a user-adjusted anchor for any rendered label. */
|
|
1081
|
+
labelPlacementKey?: string;
|
|
1082
|
+
/**
|
|
1083
|
+
* Screen-anchored label size in CSS pixels — held constant on screen
|
|
1084
|
+
* (ADR-0028). Mutually exclusive with `textSizeMeters`; absent both,
|
|
1085
|
+
* adapters render their engine default, screen-fixed.
|
|
1086
|
+
*/
|
|
1087
|
+
textSizePixels?: number;
|
|
1088
|
+
/**
|
|
1089
|
+
* Ground-anchored label text height in projected meters (ADR-0028).
|
|
1090
|
+
* Adapters render `clamp(textSizeMeters / resolution, min, max)` px, per
|
|
1091
|
+
* their configured clamp band.
|
|
1092
|
+
*/
|
|
1093
|
+
textSizeMeters?: number;
|
|
1094
|
+
/**
|
|
1095
|
+
* Multi-line justification within the text block (Text's `textAlign`
|
|
1096
|
+
* option); the block itself stays centered on the anchor regardless of this
|
|
1097
|
+
* value — unrelated to the block-shifting `textAnchor`.
|
|
1098
|
+
*/
|
|
1099
|
+
textJustify?: "left" | "center" | "right";
|
|
1100
|
+
/** Closed typography preset for a text label (Text's `textStyle` option). */
|
|
1101
|
+
textStyle?: "regular" | "italic" | "light" | "caps";
|
|
1102
|
+
/**
|
|
1103
|
+
* Hide threshold in CSS pixels: when the derived on-screen text size exceeds
|
|
1104
|
+
* this, adapters render nothing for the label instead of clamping (ADR-0037)
|
|
1105
|
+
* and skip the default 8-24px ground clamp band.
|
|
1106
|
+
*/
|
|
1107
|
+
textMaxSizePixels?: number;
|
|
1108
|
+
}
|
|
1109
|
+
/**
|
|
1110
|
+
* Output of `renderControlMeasure`. A GeoJSON `FeatureCollection` whose
|
|
1111
|
+
* features satisfy the `FeaturePartProps` stable-id contract. See ADR-0010.
|
|
1112
|
+
*/
|
|
1113
|
+
type ControlMeasureRender = FeatureCollection<Geometry, FeaturePartProps>;
|
|
1114
|
+
/**
|
|
1115
|
+
* Recover the originating control measure id (`cmId`) from a feature emitted
|
|
1116
|
+
* by `renderControlMeasure`. The feature id must match the stable-id contract
|
|
1117
|
+
* `${cmId}:${part}:${index}`; otherwise this throws.
|
|
1118
|
+
*/
|
|
1119
|
+
declare function controlMeasureIdFromFeature(feature: Feature<Geometry, FeaturePartProps> | {
|
|
1120
|
+
id?: string | number;
|
|
1121
|
+
}): string;
|
|
1122
|
+
//#endregion
|
|
584
1123
|
//#region src/generators/cm14-maneuver-lines/finalProtectiveFire.d.ts
|
|
585
1124
|
/**
|
|
586
1125
|
* Configuration options for the Final Protective Fire tactical symbols.
|
|
@@ -603,13 +1142,19 @@ declare const DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS: Required<FinalProtectiveFir
|
|
|
603
1142
|
type FpfProps = {
|
|
604
1143
|
part?: string;
|
|
605
1144
|
fill?: true;
|
|
1145
|
+
style?: StyleHints;
|
|
606
1146
|
};
|
|
607
1147
|
declare function createFinalProtectiveFireLeft(coordinates: Position[], options?: FinalProtectiveFireOptions): FeatureCollection<MultiLineString | Polygon, FpfProps>;
|
|
608
1148
|
declare function createFinalProtectiveFireRight(coordinates: Position[], options?: FinalProtectiveFireOptions): FeatureCollection<MultiLineString | Polygon, FpfProps>;
|
|
609
1149
|
//#endregion
|
|
610
1150
|
//#region src/generators/cm15-maneuver-areas/encirclement.d.ts
|
|
611
|
-
/**
|
|
612
|
-
|
|
1151
|
+
/**
|
|
1152
|
+
* Configuration options for the Encirclement control measure. Also carries
|
|
1153
|
+
* the shared {@link AreaLabelOptions} label placement for its Field N (ENY)
|
|
1154
|
+
* marker — the doctrinal example shows only the hostile marker, no name/H/W
|
|
1155
|
+
* rows.
|
|
1156
|
+
*/
|
|
1157
|
+
interface EncirclementOptions extends AreaLabelOptions {
|
|
613
1158
|
/**
|
|
614
1159
|
* Spacing between adjacent barbs as a ratio of the symbol's mean radius;
|
|
615
1160
|
* smaller values pack the barbs more densely. The barbs are then distributed
|
|
@@ -629,35 +1174,343 @@ interface EncirclementOptions {
|
|
|
629
1174
|
*/
|
|
630
1175
|
smooth?: boolean;
|
|
631
1176
|
/**
|
|
632
|
-
* Number of samples per segment when `smooth` is enabled.
|
|
633
|
-
* @default 16
|
|
1177
|
+
* Number of samples per segment when `smooth` is enabled.
|
|
1178
|
+
* @default 16
|
|
1179
|
+
*/
|
|
1180
|
+
smoothResolution?: number;
|
|
1181
|
+
}
|
|
1182
|
+
/**
|
|
1183
|
+
* Default options for the Encirclement control measure. Not `Required<...>`
|
|
1184
|
+
* — the inherited label-size options ({@link AreaLabelOptions}) have no
|
|
1185
|
+
* static default, so this covers only the barb/smoothing options.
|
|
1186
|
+
*/
|
|
1187
|
+
declare const DEFAULT_ENCIRCLEMENT_OPTIONS: EncirclementOptions;
|
|
1188
|
+
/**
|
|
1189
|
+
* Creates an Encirclement tactical graphic: a complete smooth boundary ring
|
|
1190
|
+
* with outward arrowhead barbs resting on it. The boundary is an unfilled
|
|
1191
|
+
* Polygon; the barbs are open "V" strokes (a MultiLineString) whose base is the
|
|
1192
|
+
* boundary arc itself. When a Field N (ENY) marker is set, it masks the
|
|
1193
|
+
* boundary with a knockout gap wherever its text box touches the ring
|
|
1194
|
+
* (mirroring Field B's echelon glyph, ADR-0023) — the boundary becomes a
|
|
1195
|
+
* gapped MultiLineString instead of a closed Polygon, and any barb whose
|
|
1196
|
+
* center falls inside the gap is suppressed; the no-`N` case is unaffected.
|
|
1197
|
+
*
|
|
1198
|
+
* @param positions - Area anchor points (>=3); the input contract is enforced
|
|
1199
|
+
* at the render seam (ADR-0014).
|
|
1200
|
+
* @param options - {@link EncirclementOptions}.
|
|
1201
|
+
* @param textAmplifiers - Field N only — rendered as "ENY" markers at the
|
|
1202
|
+
* ring's west and east edges, per the doctrinal hostile example.
|
|
1203
|
+
*/
|
|
1204
|
+
declare function createEncirclement(positions: Position[], options?: EncirclementOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<Polygon | MultiLineString | Point>;
|
|
1205
|
+
//#endregion
|
|
1206
|
+
//#region src/generators/cm15-maneuver-areas/area.d.ts
|
|
1207
|
+
/** Configuration options for the Area control measure. */
|
|
1208
|
+
type AreaOptions = LabeledAreaOptions;
|
|
1209
|
+
/**
|
|
1210
|
+
* Creates an Area control measure: a closed area through `positions` labeled
|
|
1211
|
+
* at its center with an un-prefixed `T` (Field T) plus an `N` (Field N) ENY
|
|
1212
|
+
* marker, per {@link labeledAreaFeatures}.
|
|
1213
|
+
*/
|
|
1214
|
+
declare function createArea(positions: Position[], options?: AreaOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<Polygon | MultiLineString | Point>;
|
|
1215
|
+
//#endregion
|
|
1216
|
+
//#region src/generators/cm15-maneuver-areas/area-defense.d.ts
|
|
1217
|
+
interface AreaDefenseOptions extends LabelSizeOptions {
|
|
1218
|
+
/** Angular opening between the two arrow tips, in degrees. */
|
|
1219
|
+
arrowOpeningAngle?: number;
|
|
1220
|
+
/** Angular opening occupied by the AD label, in degrees. */
|
|
1221
|
+
labelOpeningAngle?: number;
|
|
1222
|
+
/** Number of filled outward barbs distributed over both arcs. */
|
|
1223
|
+
barbCount?: number;
|
|
1224
|
+
/** Barb height as a ratio of the radius. */
|
|
1225
|
+
barbLengthRatio?: number;
|
|
1226
|
+
/** Open-arrowhead length as a ratio of the radius. */
|
|
1227
|
+
arrowheadLengthRatio?: number;
|
|
1228
|
+
}
|
|
1229
|
+
declare const DEFAULT_AREA_DEFENSE_OPTIONS: Required<Omit<AreaDefenseOptions, keyof LabelSizeOptions>>;
|
|
1230
|
+
declare function createAreaDefense(coordinates: Position[], options?: AreaDefenseOptions): FeatureCollection<MultiLineString | MultiPolygon | Point>;
|
|
1231
|
+
//#endregion
|
|
1232
|
+
//#region src/generators/cm15-maneuver-areas/assemblyArea.d.ts
|
|
1233
|
+
/** Configuration options for the Assembly area control measure. */
|
|
1234
|
+
type AssemblyAreaOptions = LabeledAreaOptions;
|
|
1235
|
+
/** Default options for the Assembly area control measure. */
|
|
1236
|
+
declare const DEFAULT_ASSEMBLY_AREA_OPTIONS: AssemblyAreaOptions;
|
|
1237
|
+
/**
|
|
1238
|
+
* Creates an Assembly area control measure: a closed area through
|
|
1239
|
+
* `positions` labeled at its center with "AA "-prefixed `T` (Field T) plus
|
|
1240
|
+
* `H`/`W`/`W1`/`N` amplifier rows, per {@link labeledAreaFeatures}.
|
|
1241
|
+
*/
|
|
1242
|
+
declare function createAssemblyArea(positions: Position[], options?: AssemblyAreaOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<Polygon | MultiLineString | Point>;
|
|
1243
|
+
//#endregion
|
|
1244
|
+
//#region src/generators/cm15-maneuver-areas/jointTacticalActionArea.d.ts
|
|
1245
|
+
/** Configuration options for the Joint tactical action area control measure. */
|
|
1246
|
+
type JointTacticalActionAreaOptions = LabeledAreaOptions;
|
|
1247
|
+
/** Default options for the Joint tactical action area control measure. */
|
|
1248
|
+
declare const DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS: JointTacticalActionAreaOptions;
|
|
1249
|
+
/**
|
|
1250
|
+
* Creates a Joint tactical action area control measure: a closed area
|
|
1251
|
+
* through `positions` labeled at its center with "JTAA -"-prefixed `T`
|
|
1252
|
+
* (Field T) plus `H`/`W`/`W1`/`N` amplifier rows, per
|
|
1253
|
+
* {@link labeledAreaFeatures}.
|
|
1254
|
+
*/
|
|
1255
|
+
declare function createJointTacticalActionArea(positions: Position[], options?: JointTacticalActionAreaOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<Polygon | MultiLineString | Point>;
|
|
1256
|
+
//#endregion
|
|
1257
|
+
//#region src/generators/cm15-maneuver-areas/submarineActionArea.d.ts
|
|
1258
|
+
/** Configuration options for the Submarine action area control measure. */
|
|
1259
|
+
type SubmarineActionAreaOptions = LabeledAreaOptions;
|
|
1260
|
+
/**
|
|
1261
|
+
* Creates a Submarine action area control measure: a closed area through
|
|
1262
|
+
* `positions` labeled at its center with "SAA -"-prefixed `T` (Field T) plus
|
|
1263
|
+
* `W`/`W1`/`N` amplifier rows, per {@link labeledAreaFeatures}.
|
|
1264
|
+
*/
|
|
1265
|
+
declare function createSubmarineActionArea(positions: Position[], options?: SubmarineActionAreaOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<Polygon | MultiLineString | Point>;
|
|
1266
|
+
//#endregion
|
|
1267
|
+
//#region src/generators/cm15-maneuver-areas/submarineGeneratedActionArea.d.ts
|
|
1268
|
+
/** Configuration options for the Submarine-generated action area control measure. */
|
|
1269
|
+
type SubmarineGeneratedActionAreaOptions = LabeledAreaOptions;
|
|
1270
|
+
/**
|
|
1271
|
+
* Creates a Submarine-generated action area control measure: a closed area
|
|
1272
|
+
* through `positions` labeled at its center with "SGSA -"-prefixed `T`
|
|
1273
|
+
* (Field T) plus `W`/`W1`/`N` amplifier rows, per {@link labeledAreaFeatures}.
|
|
1274
|
+
*/
|
|
1275
|
+
declare function createSubmarineGeneratedActionArea(positions: Position[], options?: SubmarineGeneratedActionAreaOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<Polygon | MultiLineString | Point>;
|
|
1276
|
+
//#endregion
|
|
1277
|
+
//#region src/generators/cm15-maneuver-areas/dropZone.d.ts
|
|
1278
|
+
/** Configuration options for the Drop zone control measure. */
|
|
1279
|
+
type DropZoneOptions = LabeledAreaOptions;
|
|
1280
|
+
/**
|
|
1281
|
+
* Creates a Drop zone control measure: a closed area through `positions`
|
|
1282
|
+
* labeled at its center with "DZ "-prefixed `T` (Field T) plus an `N`
|
|
1283
|
+
* (Field N) ENY marker, per {@link labeledAreaFeatures}.
|
|
1284
|
+
*/
|
|
1285
|
+
declare function createDropZone(positions: Position[], options?: DropZoneOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<Polygon | MultiLineString | Point>;
|
|
1286
|
+
//#endregion
|
|
1287
|
+
//#region src/generators/cm15-maneuver-areas/extractionZone.d.ts
|
|
1288
|
+
/** Configuration options for the Extraction zone control measure. */
|
|
1289
|
+
type ExtractionZoneOptions = LabeledAreaOptions;
|
|
1290
|
+
/**
|
|
1291
|
+
* Creates an Extraction zone control measure: a closed area through
|
|
1292
|
+
* `positions` labeled at its center with "EZ "-prefixed `T` (Field T) plus
|
|
1293
|
+
* an `N` (Field N) ENY marker, per {@link labeledAreaFeatures}.
|
|
1294
|
+
*/
|
|
1295
|
+
declare function createExtractionZone(positions: Position[], options?: ExtractionZoneOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<Polygon | MultiLineString | Point>;
|
|
1296
|
+
//#endregion
|
|
1297
|
+
//#region src/generators/cm15-maneuver-areas/landingZone.d.ts
|
|
1298
|
+
/** Configuration options for the Landing zone control measure. */
|
|
1299
|
+
type LandingZoneOptions = LabeledAreaOptions;
|
|
1300
|
+
/** Default options for the Landing zone control measure. */
|
|
1301
|
+
declare const DEFAULT_LANDING_ZONE_OPTIONS: LandingZoneOptions;
|
|
1302
|
+
/**
|
|
1303
|
+
* Creates a Landing zone control measure: a closed area through `positions`
|
|
1304
|
+
* labeled at its center with "LZ "-prefixed `T` (Field T) plus `H`/`W`/`W1`/`N`
|
|
1305
|
+
* amplifier rows, per {@link labeledAreaFeatures}.
|
|
1306
|
+
*/
|
|
1307
|
+
declare function createLandingZone(positions: Position[], options?: LandingZoneOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<Polygon | MultiLineString | Point>;
|
|
1308
|
+
//#endregion
|
|
1309
|
+
//#region src/generators/cm15-maneuver-areas/limitedAccessArea.d.ts
|
|
1310
|
+
/** Configuration options for the Limited Access Area control measure. */
|
|
1311
|
+
interface LimitedAccessAreaOptions extends AreaLabelOptions {
|
|
1312
|
+
/** Round the area's corners through its control points. */
|
|
1313
|
+
smooth?: boolean;
|
|
1314
|
+
/** Number of samples per segment when smoothing is enabled. */
|
|
1315
|
+
smoothResolution?: number;
|
|
1316
|
+
}
|
|
1317
|
+
/** Creates a back-hatched free area with a movable "LAA" label, centered by default. */
|
|
1318
|
+
declare function createLimitedAccessArea(positions: Position[], options?: LimitedAccessAreaOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<Polygon | MultiLineString | Point>;
|
|
1319
|
+
//#endregion
|
|
1320
|
+
//#region src/generators/cm24-fire-areas/noFireAreaIrregular.d.ts
|
|
1321
|
+
/** Configuration options for the irregular No Fire Area control measure. */
|
|
1322
|
+
interface NoFireAreaIrregularOptions extends AreaLabelOptions {
|
|
1323
|
+
/** Round the area's corners through its control points. */
|
|
1324
|
+
smooth?: boolean;
|
|
1325
|
+
/** Number of samples per segment when smoothing is enabled. */
|
|
1326
|
+
smoothResolution?: number;
|
|
1327
|
+
}
|
|
1328
|
+
/** Creates a back-hatched irregular NFA with its centered movable label fields. */
|
|
1329
|
+
declare function createNoFireAreaIrregular(positions: Position[], options?: NoFireAreaIrregularOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<Polygon | MultiLineString | Point>;
|
|
1330
|
+
//#endregion
|
|
1331
|
+
//#region src/generators/cm15-maneuver-areas/pickupZone.d.ts
|
|
1332
|
+
/** Configuration options for the Pickup zone control measure. */
|
|
1333
|
+
type PickupZoneOptions = LabeledAreaOptions;
|
|
1334
|
+
/** Default options for the Pickup zone control measure. */
|
|
1335
|
+
declare const DEFAULT_PICKUP_ZONE_OPTIONS: PickupZoneOptions;
|
|
1336
|
+
/**
|
|
1337
|
+
* Creates a Pickup zone control measure: a closed area through `positions`
|
|
1338
|
+
* labeled at its center with "PZ "-prefixed `T` (Field T) plus `H`/`W`/`W1`/`N`
|
|
1339
|
+
* amplifier rows, per {@link labeledAreaFeatures}.
|
|
1340
|
+
*/
|
|
1341
|
+
declare function createPickupZone(positions: Position[], options?: PickupZoneOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<Polygon | MultiLineString | Point>;
|
|
1342
|
+
//#endregion
|
|
1343
|
+
//#region src/generators/cm15-maneuver-areas/assaultPosition.d.ts
|
|
1344
|
+
/** Configuration options for the Assault position control measure. */
|
|
1345
|
+
type AssaultPositionOptions = LabeledAreaOptions;
|
|
1346
|
+
/**
|
|
1347
|
+
* Creates an Assault position control measure: a closed area through
|
|
1348
|
+
* `positions` labeled at its center with "ASLT "-prefixed `T` (Field T) plus
|
|
1349
|
+
* an `N` (Field N) ENY marker, per {@link labeledAreaFeatures}.
|
|
1350
|
+
*/
|
|
1351
|
+
declare function createAssaultPosition(positions: Position[], options?: AssaultPositionOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<Polygon | MultiLineString | Point>;
|
|
1352
|
+
//#endregion
|
|
1353
|
+
//#region src/generators/cm15-maneuver-areas/attackPosition.d.ts
|
|
1354
|
+
/** Configuration options for the Attack position control measure. */
|
|
1355
|
+
type AttackPositionOptions = LabeledAreaOptions;
|
|
1356
|
+
/**
|
|
1357
|
+
* Creates an Attack position control measure: a closed area through
|
|
1358
|
+
* `positions` labeled at its center with "ATK "-prefixed `T` (Field T) plus
|
|
1359
|
+
* an `N` (Field N) ENY marker, per {@link labeledAreaFeatures}.
|
|
1360
|
+
*/
|
|
1361
|
+
declare function createAttackPosition(positions: Position[], options?: AttackPositionOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<Polygon | MultiLineString | Point>;
|
|
1362
|
+
//#endregion
|
|
1363
|
+
//#region src/generators/cm15-maneuver-areas/objectiveArea.d.ts
|
|
1364
|
+
/** Configuration options for the Objective area control measure. */
|
|
1365
|
+
type ObjectiveAreaOptions = LabeledAreaOptions;
|
|
1366
|
+
/**
|
|
1367
|
+
* Creates an Objective area control measure: a closed area through
|
|
1368
|
+
* `positions` labeled at its center with "OBJ "-prefixed `T` (Field T) plus
|
|
1369
|
+
* an `N` (Field N) ENY marker, per {@link labeledAreaFeatures}.
|
|
1370
|
+
*/
|
|
1371
|
+
declare function createObjectiveArea(positions: Position[], options?: ObjectiveAreaOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<Polygon | MultiLineString | Point>;
|
|
1372
|
+
//#endregion
|
|
1373
|
+
//#region src/generators/cm12-command-control-areas/area-of-operations.d.ts
|
|
1374
|
+
/** Configuration options for the Area of operations control measure. */
|
|
1375
|
+
type AreaOfOperationsOptions = LabeledAreaOptions;
|
|
1376
|
+
/** Default options for the Area of operations control measure. */
|
|
1377
|
+
declare const DEFAULT_AREA_OF_OPERATIONS_OPTIONS: AreaOfOperationsOptions;
|
|
1378
|
+
/**
|
|
1379
|
+
* Creates an Area of operations control measure: a closed area through
|
|
1380
|
+
* `positions` labeled at its center with "AO "-prefixed `T` (Field T) plus
|
|
1381
|
+
* `H`/`W`/`W1`/`N` amplifier rows, per {@link labeledAreaFeatures}.
|
|
1382
|
+
*/
|
|
1383
|
+
declare function createAreaOfOperations(positions: Position[], options?: AreaOfOperationsOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<Polygon | MultiLineString | Point>;
|
|
1384
|
+
//#endregion
|
|
1385
|
+
//#region src/generators/cm12-command-control-areas/named-area-of-interest.d.ts
|
|
1386
|
+
/** Configuration options for the Named area of interest control measure. */
|
|
1387
|
+
type NamedAreaOfInterestOptions = LabeledAreaOptions;
|
|
1388
|
+
/**
|
|
1389
|
+
* Creates a Named area of interest control measure: a closed area through
|
|
1390
|
+
* `positions` labeled at its center with "NAI "-prefixed `T` (Field T) plus
|
|
1391
|
+
* an `N` (Field N) ENY marker, per {@link labeledAreaFeatures}.
|
|
1392
|
+
*/
|
|
1393
|
+
declare function createNamedAreaOfInterest(positions: Position[], options?: NamedAreaOfInterestOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<Polygon | MultiLineString | Point>;
|
|
1394
|
+
//#endregion
|
|
1395
|
+
//#region src/generators/cm12-command-control-areas/target-area-of-interest.d.ts
|
|
1396
|
+
/** Configuration options for the Target area of interest control measure. */
|
|
1397
|
+
type TargetAreaOfInterestOptions = LabeledAreaOptions;
|
|
1398
|
+
/**
|
|
1399
|
+
* Creates a Target area of interest control measure: a closed area through
|
|
1400
|
+
* `positions` labeled at its center with "TAI "-prefixed `T` (Field T) plus
|
|
1401
|
+
* an `N` (Field N) ENY marker, per {@link labeledAreaFeatures}.
|
|
1402
|
+
*/
|
|
1403
|
+
declare function createTargetAreaOfInterest(positions: Position[], options?: TargetAreaOfInterestOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<Polygon | MultiLineString | Point>;
|
|
1404
|
+
//#endregion
|
|
1405
|
+
//#region src/generators/cm12-command-control-areas/airfield-zone.d.ts
|
|
1406
|
+
/** Configuration options for the Airfield zone control measure. */
|
|
1407
|
+
interface AirfieldZoneOptions extends LabeledAreaOptions {
|
|
1408
|
+
/**
|
|
1409
|
+
* The runway glyph's long line, as a ratio of the ring's projected
|
|
1410
|
+
* bounding-box width (full length, not half).
|
|
1411
|
+
* @default 0.55
|
|
1412
|
+
*/
|
|
1413
|
+
glyphSizeRatio?: number;
|
|
1414
|
+
}
|
|
1415
|
+
/**
|
|
1416
|
+
* Creates an Airfield zone control measure: a closed area through
|
|
1417
|
+
* `positions` with a runway glyph (two crossed lines forming a shallow
|
|
1418
|
+
* asymmetric X) centered on the ring, and Field H placed outside the area to
|
|
1419
|
+
* the east when set.
|
|
1420
|
+
*
|
|
1421
|
+
* @param positions - Area anchor points (≥3); the input contract is enforced
|
|
1422
|
+
* at the render seam (ADR-0014).
|
|
1423
|
+
* @param options - {@link AirfieldZoneOptions}.
|
|
1424
|
+
* @param textAmplifiers - Field H (placed east of the area) plus an optional
|
|
1425
|
+
* Field N "ENY" hostile marker on the west/east edges.
|
|
1426
|
+
*/
|
|
1427
|
+
declare function createAirfieldZone(positions: Position[], options?: AirfieldZoneOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<Polygon | MultiLineString | Point>;
|
|
1428
|
+
//#endregion
|
|
1429
|
+
//#region src/generators/cm12-command-control-areas/echelon-labeled-area.d.ts
|
|
1430
|
+
/**
|
|
1431
|
+
* Configuration options shared by Base Camp and Guerrilla Base: the full L-15
|
|
1432
|
+
* label placement ({@link LabeledAreaOptions}) plus Battle Position's Field B
|
|
1433
|
+
* echelon knobs.
|
|
1434
|
+
*/
|
|
1435
|
+
interface EchelonLabeledAreaOptions extends LabeledAreaOptions {
|
|
1436
|
+
/**
|
|
1437
|
+
* Field B echelon straddling the boundary. `"none"` (the default — the
|
|
1438
|
+
* standard's examples show no echelon glyph), empty, or unknown renders no
|
|
1439
|
+
* glyph and leaves the boundary unaffected by echelon masking.
|
|
1440
|
+
* @default "none"
|
|
1441
|
+
*/
|
|
1442
|
+
echelon?: string;
|
|
1443
|
+
/**
|
|
1444
|
+
* Echelon glyph height in meters (ground-anchored). Ignored when
|
|
1445
|
+
* `echelonSizePixels` is supplied together with `metersPerPixel`.
|
|
1446
|
+
* @default 750
|
|
1447
|
+
*/
|
|
1448
|
+
echelonSize?: number;
|
|
1449
|
+
/**
|
|
1450
|
+
* Echelon glyph height in screen pixels (screen-anchored). Resolved to
|
|
1451
|
+
* meters against `metersPerPixel`; bakes to a meter size on draw/edit
|
|
1452
|
+
* commit (ADR-0020).
|
|
1453
|
+
* @default 16
|
|
1454
|
+
*/
|
|
1455
|
+
echelonSizePixels?: number;
|
|
1456
|
+
/**
|
|
1457
|
+
* Gap left on each side of the echelon glyph, as a ratio of the glyph
|
|
1458
|
+
* height. `0` butts the boundary against the glyph; larger values widen
|
|
1459
|
+
* the break.
|
|
1460
|
+
* @default 0.3
|
|
1461
|
+
*/
|
|
1462
|
+
echelonPadding?: number;
|
|
1463
|
+
/**
|
|
1464
|
+
* Slides the echelon along the boundary, as a signed fraction of the total
|
|
1465
|
+
* perimeter measured from its default anchor on the bottom edge.
|
|
1466
|
+
* @default 0
|
|
1467
|
+
*/
|
|
1468
|
+
echelonPosition?: number;
|
|
1469
|
+
/**
|
|
1470
|
+
* Absolute anchor for the echelon glyph, as a fraction of the total
|
|
1471
|
+
* perimeter measured from the ring seam, wrapped into `[0, 1)`. See Battle
|
|
1472
|
+
* Position's `echelonAnchor` (ADR-0023) — edit controllers freeze this via
|
|
1473
|
+
* the `freezeOrientation` hook the moment a rotate gesture starts.
|
|
1474
|
+
*/
|
|
1475
|
+
echelonAnchor?: number;
|
|
1476
|
+
/**
|
|
1477
|
+
* Meters-per-pixel at the current zoom/latitude. Stamped by the host when
|
|
1478
|
+
* the measure is screen-anchored; required to resolve `echelonSizePixels`.
|
|
634
1479
|
*/
|
|
635
|
-
|
|
1480
|
+
metersPerPixel?: number;
|
|
636
1481
|
}
|
|
637
|
-
|
|
638
|
-
|
|
1482
|
+
//#endregion
|
|
1483
|
+
//#region src/generators/cm12-command-control-areas/base-camp.d.ts
|
|
1484
|
+
/** Configuration options for the Base camp control measure. */
|
|
1485
|
+
type BaseCampOptions = EchelonLabeledAreaOptions;
|
|
639
1486
|
/**
|
|
640
|
-
* Creates
|
|
641
|
-
*
|
|
642
|
-
*
|
|
643
|
-
* boundary
|
|
644
|
-
*
|
|
645
|
-
* @param positions - Area anchor points (>=3); the input contract is enforced
|
|
646
|
-
* at the render seam (ADR-0014).
|
|
647
|
-
* @param options - {@link EncirclementOptions}.
|
|
1487
|
+
* Creates a Base camp control measure: a closed area through `positions`
|
|
1488
|
+
* labeled at its center with "BC "-prefixed `T` (Field T) plus `H`/`W`/`W1`/`N`
|
|
1489
|
+
* amplifier rows, and an optional Field B echelon glyph straddling the
|
|
1490
|
+
* boundary, per {@link echelonLabeledAreaFeatures}.
|
|
648
1491
|
*/
|
|
649
|
-
declare function
|
|
1492
|
+
declare function createBaseCamp(positions: Position[], options?: BaseCampOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<Polygon | MultiLineString | MultiPolygon | Point>;
|
|
650
1493
|
//#endregion
|
|
651
|
-
//#region src/
|
|
652
|
-
|
|
1494
|
+
//#region src/generators/cm12-command-control-areas/guerrilla-base.d.ts
|
|
1495
|
+
/** Configuration options for the Guerrilla base control measure. */
|
|
1496
|
+
type GuerrillaBaseOptions = EchelonLabeledAreaOptions;
|
|
653
1497
|
/**
|
|
654
|
-
*
|
|
1498
|
+
* Creates a Guerrilla base control measure: a closed area through
|
|
1499
|
+
* `positions` labeled at its center with "GB "-prefixed `T` (Field T) plus
|
|
1500
|
+
* `H`/`W`/`W1`/`N` amplifier rows, and an optional Field B echelon glyph
|
|
1501
|
+
* straddling the boundary, per {@link echelonLabeledAreaFeatures}.
|
|
655
1502
|
*/
|
|
656
|
-
declare
|
|
1503
|
+
declare function createGuerrillaBase(positions: Position[], options?: GuerrillaBaseOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<Polygon | MultiLineString | MultiPolygon | Point>;
|
|
1504
|
+
//#endregion
|
|
1505
|
+
//#region src/generators/cm12-command-control-areas/generic-c2-area.d.ts
|
|
1506
|
+
/** Configuration options for the Generic command and control area control measure. */
|
|
1507
|
+
type GenericC2AreaOptions = LabeledAreaOptions;
|
|
657
1508
|
/**
|
|
658
|
-
*
|
|
1509
|
+
* Creates a Generic command and control area control measure: a closed area
|
|
1510
|
+
* through `positions` labeled at its center with the bare `T` (Field T) plus
|
|
1511
|
+
* `H`/`W`/`W1`/`N` amplifier rows — no prefix, per {@link labeledAreaFeatures}.
|
|
659
1512
|
*/
|
|
660
|
-
declare
|
|
1513
|
+
declare function createGenericC2Area(positions: Position[], options?: GenericC2AreaOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<Polygon | MultiLineString | Point>;
|
|
661
1514
|
//#endregion
|
|
662
1515
|
//#region src/attack-utils.d.ts
|
|
663
1516
|
interface AttackOptions {
|
|
@@ -767,6 +1620,7 @@ declare const DEFAULT_CLASSIC_ARROW_OPTIONS: Required<ClassicArrowOptions>;
|
|
|
767
1620
|
declare function createClassicArrow(coordinates: Position[], options?: ClassicArrowOptions): FeatureCollection<LineString | Polygon, {
|
|
768
1621
|
part: "shaft" | "head";
|
|
769
1622
|
fill?: boolean;
|
|
1623
|
+
style?: StyleHints;
|
|
770
1624
|
}>;
|
|
771
1625
|
//#endregion
|
|
772
1626
|
//#region src/generators/cm99-generic-arrows/blockArrow.d.ts
|
|
@@ -856,6 +1710,49 @@ declare function createGenericCircle(coordinates: Position[], options?: GenericC
|
|
|
856
1710
|
fill: boolean;
|
|
857
1711
|
}>;
|
|
858
1712
|
//#endregion
|
|
1713
|
+
//#region src/generators/cm99-generic-graphics/text.d.ts
|
|
1714
|
+
/** Configuration options for the generic Text control measure. */
|
|
1715
|
+
interface GenericTextOptions {
|
|
1716
|
+
/** Plain text; explicit `\n` breaks lines — never auto-wraps. @default "Text" */
|
|
1717
|
+
text?: string;
|
|
1718
|
+
/**
|
|
1719
|
+
* Placement of the text block relative to the anchor point, and the
|
|
1720
|
+
* justification of its lines. `left` puts the anchor at the block's left edge
|
|
1721
|
+
* (text extends rightward, lines left-justified); `right` puts the anchor at
|
|
1722
|
+
* the right edge (text extends leftward, lines right-justified); `center`
|
|
1723
|
+
* centers the block on the anchor (lines centered). Maps onto the existing
|
|
1724
|
+
* block-shifting `textAnchor` prop (`left` → `start`, `right` → `end`, `center`
|
|
1725
|
+
* → none) plus the `textJustify` prop; rotation always pivots at the anchor.
|
|
1726
|
+
* @default "center"
|
|
1727
|
+
*/
|
|
1728
|
+
textAlign?: "left" | "center" | "right";
|
|
1729
|
+
/** Closed typography preset. `caps` uppercases `regular`; `light` is weight 300. @default "regular" */
|
|
1730
|
+
textStyle?: "regular" | "italic" | "light" | "caps";
|
|
1731
|
+
/** Clockwise rotation in degrees on screen. @default 0 */
|
|
1732
|
+
rotation?: number;
|
|
1733
|
+
/**
|
|
1734
|
+
* Text height (cap height) in projected meters — ground-anchored
|
|
1735
|
+
* (ADR-0020). Ignored whenever `sizePixels` is present.
|
|
1736
|
+
*/
|
|
1737
|
+
sizeMeters?: number;
|
|
1738
|
+
/**
|
|
1739
|
+
* Text height in CSS pixels — screen-anchored (ADR-0020). A fresh draw is
|
|
1740
|
+
* authored in pixels and bakes to `sizeMeters` on commit.
|
|
1741
|
+
* @default 24
|
|
1742
|
+
*/
|
|
1743
|
+
sizePixels?: number;
|
|
1744
|
+
/**
|
|
1745
|
+
* Hide threshold in CSS pixels: once the ground-derived on-screen size
|
|
1746
|
+
* exceeds this, adapters hide the text entirely instead of clamping it
|
|
1747
|
+
* (ADR-0037); there is no minimum, so the text just keeps shrinking on
|
|
1748
|
+
* zoom-out.
|
|
1749
|
+
* @default 200
|
|
1750
|
+
*/
|
|
1751
|
+
maxSizePixels?: number;
|
|
1752
|
+
}
|
|
1753
|
+
declare const DEFAULT_GENERIC_TEXT_OPTIONS: GenericTextOptions;
|
|
1754
|
+
declare function createGenericText(coordinates: Position[], options?: GenericTextOptions): FeatureCollection<Point, Record<string, unknown>>;
|
|
1755
|
+
//#endregion
|
|
859
1756
|
//#region src/generators/cm15-maneuver-areas/airborneAttack.d.ts
|
|
860
1757
|
type AirborneAttackOptions = AttackOptions;
|
|
861
1758
|
declare const DEFAULT_AIRBORNE_ATTACK_OPTIONS: Required<AirborneAttackOptions>;
|
|
@@ -935,7 +1832,7 @@ declare function createAttackByFire(coordinates: Position[], options?: AttackByF
|
|
|
935
1832
|
/**
|
|
936
1833
|
* Configuration options for the FLOT (Forward Line of Own Troops) geometry.
|
|
937
1834
|
*/
|
|
938
|
-
interface FLOTOptions {
|
|
1835
|
+
interface FLOTOptions extends SmoothLineOptions, LineLabelOptions {
|
|
939
1836
|
/**
|
|
940
1837
|
* The radius of the semicircular arcs in meters.
|
|
941
1838
|
* Semicircles are placed tangent to each other (diameter = 2 * radius).
|
|
@@ -967,7 +1864,7 @@ interface FLOTOptions {
|
|
|
967
1864
|
/**
|
|
968
1865
|
* Default options for the FLOT graphic.
|
|
969
1866
|
*/
|
|
970
|
-
declare const DEFAULT_FLOT_OPTIONS: Required<Omit<FLOTOptions,
|
|
1867
|
+
declare const DEFAULT_FLOT_OPTIONS: Required<Omit<FLOTOptions, keyof LineLabelOptions>>;
|
|
971
1868
|
/**
|
|
972
1869
|
* Creates a FLOT (Forward Line of Own Troops) tactical graphic.
|
|
973
1870
|
*
|
|
@@ -987,20 +1884,155 @@ declare const DEFAULT_FLOT_OPTIONS: Required<Omit<FLOTOptions, "metersPerPixel">
|
|
|
987
1884
|
* );
|
|
988
1885
|
* ```
|
|
989
1886
|
*/
|
|
990
|
-
declare function createFLOT(positions: Position[], options?: FLOTOptions): FeatureCollection<LineString>;
|
|
1887
|
+
declare function createFLOT(positions: Position[], options?: FLOTOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<LineString | Point>;
|
|
1888
|
+
//#endregion
|
|
1889
|
+
//#region src/generators/cm14-maneuver-lines/phase-line.d.ts
|
|
1890
|
+
/** Configuration options for the Phase line control measure. */
|
|
1891
|
+
interface PhaseLineOptions extends LineLabelOptions, SmoothLineOptions {
|
|
1892
|
+
/**
|
|
1893
|
+
* Prefix the end labels with "PL" (`"PL ECHO"`, or a bare `"PL"` when no
|
|
1894
|
+
* designation is set). When `false`, the label is the bare designation
|
|
1895
|
+
* (`Field T`) alone, and the line carries no label at all when `T` is empty.
|
|
1896
|
+
* @default true
|
|
1897
|
+
*/
|
|
1898
|
+
includePrefix?: boolean;
|
|
1899
|
+
}
|
|
1900
|
+
/** Default options for the Phase line control measure. */
|
|
1901
|
+
declare const DEFAULT_PHASE_LINE_OPTIONS: PhaseLineOptions;
|
|
1902
|
+
/**
|
|
1903
|
+
* Creates a Phase line control measure: a polyline through `positions`
|
|
1904
|
+
* labeled at each end with `T` (optionally "PL"-prefixed).
|
|
1905
|
+
*/
|
|
1906
|
+
declare function createPhaseLine(positions: Position[], options?: PhaseLineOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<LineString | Point>;
|
|
1907
|
+
//#endregion
|
|
1908
|
+
//#region src/generators/cm14-maneuver-lines/forward-edge-of-battle-area.d.ts
|
|
1909
|
+
/** Configuration options for the Forward edge of the battle area control measure. */
|
|
1910
|
+
interface ForwardEdgeOfBattleAreaOptions extends LineLabelOptions, SmoothLineOptions {
|
|
1911
|
+
/**
|
|
1912
|
+
* Optional phase line naming: renders `PL <name>` just beyond each end of
|
|
1913
|
+
* the line, additive to the fixed "FEBA" labels. Empty or whitespace-only
|
|
1914
|
+
* renders no label.
|
|
1915
|
+
* @default none
|
|
1916
|
+
*/
|
|
1917
|
+
phaseLineName?: string;
|
|
1918
|
+
/**
|
|
1919
|
+
* Prefix the `phaseLineName` label with "PL" (`"PL MOCHA"`, or a bare
|
|
1920
|
+
* "MOCHA" when `false`). No effect when `phaseLineName` is empty.
|
|
1921
|
+
* @default true
|
|
1922
|
+
*/
|
|
1923
|
+
includePrefix?: boolean;
|
|
1924
|
+
}
|
|
1925
|
+
/** Default options for the Forward edge of the battle area control measure. */
|
|
1926
|
+
declare const DEFAULT_FORWARD_EDGE_OF_BATTLE_AREA_OPTIONS: ForwardEdgeOfBattleAreaOptions;
|
|
1927
|
+
/**
|
|
1928
|
+
* Creates a Forward edge of the battle area control measure: a polyline
|
|
1929
|
+
* through `positions` labeled "FEBA" above the line near each end.
|
|
1930
|
+
*/
|
|
1931
|
+
declare function createForwardEdgeOfBattleArea(positions: Position[], options?: ForwardEdgeOfBattleAreaOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<LineString | Point>;
|
|
1932
|
+
//#endregion
|
|
1933
|
+
//#region src/generators/cm14-maneuver-lines/bridgehead-line.d.ts
|
|
1934
|
+
/** Configuration options for the Bridgehead line control measure. */
|
|
1935
|
+
interface BridgeheadLineOptions extends LineLabelOptions, SmoothLineOptions {
|
|
1936
|
+
/** Optional phase-line name rendered beyond both ends of the line. */
|
|
1937
|
+
phaseLineName?: string;
|
|
1938
|
+
/** Prefix the phase-line name with "PL". @default true */
|
|
1939
|
+
includePrefix?: boolean;
|
|
1940
|
+
}
|
|
1941
|
+
/** Default options for the Bridgehead line control measure. */
|
|
1942
|
+
declare const DEFAULT_BRIDGEHEAD_LINE_OPTIONS: BridgeheadLineOptions;
|
|
1943
|
+
/** Creates a Bridgehead line labeled "BL" above both ends. */
|
|
1944
|
+
declare function createBridgeheadLine(positions: Position[], options?: BridgeheadLineOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<LineString | Point>;
|
|
1945
|
+
//#endregion
|
|
1946
|
+
//#region src/generators/cm14-maneuver-lines/holding-line.d.ts
|
|
1947
|
+
/** Configuration options for the Holding line control measure. */
|
|
1948
|
+
interface HoldingLineOptions extends LineLabelOptions, SmoothLineOptions {
|
|
1949
|
+
/** Optional phase-line name rendered beyond both ends of the line. */
|
|
1950
|
+
phaseLineName?: string;
|
|
1951
|
+
/** Prefix the phase-line name with "PL". @default true */
|
|
1952
|
+
includePrefix?: boolean;
|
|
1953
|
+
}
|
|
1954
|
+
/** Default options for the Holding line control measure. */
|
|
1955
|
+
declare const DEFAULT_HOLDING_LINE_OPTIONS: HoldingLineOptions;
|
|
1956
|
+
/** Creates a Holding line labeled "HL" above both ends. */
|
|
1957
|
+
declare function createHoldingLine(positions: Position[], options?: HoldingLineOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<LineString | Point>;
|
|
1958
|
+
//#endregion
|
|
1959
|
+
//#region src/generators/cm14-maneuver-lines/release-line.d.ts
|
|
1960
|
+
/** Configuration options for the Release line control measure. */
|
|
1961
|
+
interface ReleaseLineOptions extends LineLabelOptions, SmoothLineOptions {
|
|
1962
|
+
/** Optional phase-line name rendered beyond both ends of the line. */
|
|
1963
|
+
phaseLineName?: string;
|
|
1964
|
+
/** Prefix the phase-line name with "PL". @default true */
|
|
1965
|
+
includePrefix?: boolean;
|
|
1966
|
+
}
|
|
1967
|
+
/** Default options for the Release line control measure. */
|
|
1968
|
+
declare const DEFAULT_RELEASE_LINE_OPTIONS: ReleaseLineOptions;
|
|
1969
|
+
/** Creates a Release line labeled "RL" above both ends. */
|
|
1970
|
+
declare function createReleaseLine(positions: Position[], options?: ReleaseLineOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<LineString | Point>;
|
|
1971
|
+
//#endregion
|
|
1972
|
+
//#region src/generators/cm14-maneuver-lines/handover-line.d.ts
|
|
1973
|
+
/** Configuration options for the Handover line control measure. */
|
|
1974
|
+
interface HandoverLineOptions extends LineLabelOptions, SmoothLineOptions {
|
|
1975
|
+
/**
|
|
1976
|
+
* Optional phase line naming: renders `PL <name>` just beyond each end of
|
|
1977
|
+
* the line, additive to the fixed "HOL" labels. Empty or whitespace-only
|
|
1978
|
+
* renders no label.
|
|
1979
|
+
* @default none
|
|
1980
|
+
*/
|
|
1981
|
+
phaseLineName?: string;
|
|
1982
|
+
/**
|
|
1983
|
+
* Prefix the `phaseLineName` label with "PL" (`"PL DAVID"`, or a bare
|
|
1984
|
+
* "DAVID" when `false`). No effect when `phaseLineName` is empty — unlike
|
|
1985
|
+
* Phase Line itself, this measure already carries its own fixed "HOL"
|
|
1986
|
+
* label, so there is no bare "PL" fallback.
|
|
1987
|
+
* @default true
|
|
1988
|
+
*/
|
|
1989
|
+
includePrefix?: boolean;
|
|
1990
|
+
}
|
|
1991
|
+
/** Default options for the Handover line control measure. */
|
|
1992
|
+
declare const DEFAULT_HANDOVER_LINE_OPTIONS: HandoverLineOptions;
|
|
1993
|
+
/**
|
|
1994
|
+
* Creates a Handover line control measure: a polyline through `positions`
|
|
1995
|
+
* labeled "HOL" above the line near each end.
|
|
1996
|
+
*/
|
|
1997
|
+
declare function createHandoverLine(positions: Position[], options?: HandoverLineOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<LineString | Point>;
|
|
1998
|
+
//#endregion
|
|
1999
|
+
//#region src/generators/cm14-maneuver-lines/battle-handover-line.d.ts
|
|
2000
|
+
/** Configuration options for the Battle handover line control measure. */
|
|
2001
|
+
interface BattleHandoverLineOptions extends LineLabelOptions, SmoothLineOptions {
|
|
2002
|
+
/**
|
|
2003
|
+
* Optional phase line naming: renders `PL <name>` just beyond each end of
|
|
2004
|
+
* the line, additive to the fixed "BHL" labels. Empty or whitespace-only
|
|
2005
|
+
* renders no label.
|
|
2006
|
+
* @default none
|
|
2007
|
+
*/
|
|
2008
|
+
phaseLineName?: string;
|
|
2009
|
+
/**
|
|
2010
|
+
* Prefix the `phaseLineName` label with "PL" (`"PL DAVID"`, or a bare
|
|
2011
|
+
* "DAVID" when `false`). No effect when `phaseLineName` is empty — unlike
|
|
2012
|
+
* Phase Line itself, this measure already carries its own fixed "BHL"
|
|
2013
|
+
* label, so there is no bare "PL" fallback.
|
|
2014
|
+
* @default true
|
|
2015
|
+
*/
|
|
2016
|
+
includePrefix?: boolean;
|
|
2017
|
+
}
|
|
2018
|
+
/** Default options for the Battle handover line control measure. */
|
|
2019
|
+
declare const DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS: BattleHandoverLineOptions;
|
|
2020
|
+
/**
|
|
2021
|
+
* Creates a Battle handover line control measure: a polyline through
|
|
2022
|
+
* `positions` labeled "BHL" above the line near each end.
|
|
2023
|
+
*/
|
|
2024
|
+
declare function createBattleHandoverLine(positions: Position[], options?: BattleHandoverLineOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<LineString | Point>;
|
|
991
2025
|
//#endregion
|
|
992
2026
|
//#region src/generators/cm34-mission-tasks/block.d.ts
|
|
993
2027
|
interface BlockMissionTaskOptions {
|
|
994
2028
|
/** Gap for the 'B' label as a ratio of the front length (default: 0.2) */
|
|
995
2029
|
labelGapRatio?: number;
|
|
996
|
-
/**
|
|
2030
|
+
/** Text height in projected meters — ground-anchored label size (ADR-0028). */
|
|
2031
|
+
labelSize?: number;
|
|
2032
|
+
/** Text height in CSS pixels — screen-anchored label size (ADR-0028). */
|
|
997
2033
|
labelSizePixels?: number;
|
|
998
|
-
/** Map zoom at which labelSizePixels was captured. */
|
|
999
|
-
labelSizeZoom?: number;
|
|
1000
|
-
/** Map resolution at which labelSizePixels was captured. */
|
|
1001
|
-
labelSizeResolution?: number;
|
|
1002
2034
|
}
|
|
1003
|
-
declare const DEFAULT_BLOCK_MISSION_TASK_OPTIONS: Required<Omit<BlockMissionTaskOptions, "
|
|
2035
|
+
declare const DEFAULT_BLOCK_MISSION_TASK_OPTIONS: Required<Omit<BlockMissionTaskOptions, "labelSize" | "labelSizePixels">>;
|
|
1004
2036
|
/**
|
|
1005
2037
|
* Generates a GeoJSON FeatureCollection for a BLOCK mission task symbol (340100).
|
|
1006
2038
|
*
|
|
@@ -1024,17 +2056,15 @@ interface BreachOptions {
|
|
|
1024
2056
|
tickAngle?: number;
|
|
1025
2057
|
/** Gap for the 'B' label as a ratio of the front length (default: 0.2) */
|
|
1026
2058
|
labelGapRatio?: number;
|
|
1027
|
-
/**
|
|
2059
|
+
/** Text height in projected meters — ground-anchored label size (ADR-0028). */
|
|
2060
|
+
labelSize?: number;
|
|
2061
|
+
/** Text height in CSS pixels — screen-anchored label size (ADR-0028). */
|
|
1028
2062
|
labelSizePixels?: number;
|
|
1029
|
-
/** Map zoom at which labelSizePixels was captured. */
|
|
1030
|
-
labelSizeZoom?: number;
|
|
1031
|
-
/** Map resolution at which labelSizePixels was captured. */
|
|
1032
|
-
labelSizeResolution?: number;
|
|
1033
2063
|
}
|
|
1034
2064
|
/**
|
|
1035
2065
|
* Default options for the BREACH symbol.
|
|
1036
2066
|
*/
|
|
1037
|
-
declare const DEFAULT_BREACH_OPTIONS: Required<Omit<BreachOptions, "
|
|
2067
|
+
declare const DEFAULT_BREACH_OPTIONS: Required<Omit<BreachOptions, "labelSize" | "labelSizePixels">>;
|
|
1038
2068
|
/**
|
|
1039
2069
|
* Generates a GeoJSON FeatureCollection for a BREACH mission task symbol (340200).
|
|
1040
2070
|
*
|
|
@@ -1057,17 +2087,15 @@ interface BypassOptions {
|
|
|
1057
2087
|
arrowheadLengthRatio?: number;
|
|
1058
2088
|
/** Gap for the 'B' label as a ratio of the front length (default: 0.2) */
|
|
1059
2089
|
labelGapRatio?: number;
|
|
1060
|
-
/**
|
|
2090
|
+
/** Text height in projected meters — ground-anchored label size (ADR-0028). */
|
|
2091
|
+
labelSize?: number;
|
|
2092
|
+
/** Text height in CSS pixels — screen-anchored label size (ADR-0028). */
|
|
1061
2093
|
labelSizePixels?: number;
|
|
1062
|
-
/** Map zoom at which labelSizePixels was captured. */
|
|
1063
|
-
labelSizeZoom?: number;
|
|
1064
|
-
/** Map resolution at which labelSizePixels was captured. */
|
|
1065
|
-
labelSizeResolution?: number;
|
|
1066
2094
|
}
|
|
1067
2095
|
/**
|
|
1068
2096
|
* Default options for the BYPASS symbol.
|
|
1069
2097
|
*/
|
|
1070
|
-
declare const DEFAULT_BYPASS_OPTIONS: Required<Omit<BypassOptions, "
|
|
2098
|
+
declare const DEFAULT_BYPASS_OPTIONS: Required<Omit<BypassOptions, "labelSize" | "labelSizePixels">>;
|
|
1071
2099
|
/**
|
|
1072
2100
|
* Generates a GeoJSON FeatureCollection for a BYPASS mission task symbol (340300).
|
|
1073
2101
|
*
|
|
@@ -1092,17 +2120,15 @@ interface CanalizeOptions {
|
|
|
1092
2120
|
tickAngle?: number;
|
|
1093
2121
|
/** Gap for the 'C' label as a ratio of the front length (default: 0.2) */
|
|
1094
2122
|
labelGapRatio?: number;
|
|
1095
|
-
/**
|
|
2123
|
+
/** Text height in projected meters — ground-anchored label size (ADR-0028). */
|
|
2124
|
+
labelSize?: number;
|
|
2125
|
+
/** Text height in CSS pixels — screen-anchored label size (ADR-0028). */
|
|
1096
2126
|
labelSizePixels?: number;
|
|
1097
|
-
/** Map zoom at which labelSizePixels was captured. */
|
|
1098
|
-
labelSizeZoom?: number;
|
|
1099
|
-
/** Map resolution at which labelSizePixels was captured. */
|
|
1100
|
-
labelSizeResolution?: number;
|
|
1101
2127
|
}
|
|
1102
2128
|
/**
|
|
1103
2129
|
* Default options for the CANALIZE symbol.
|
|
1104
2130
|
*/
|
|
1105
|
-
declare const DEFAULT_CANALIZE_OPTIONS: Required<Omit<CanalizeOptions, "
|
|
2131
|
+
declare const DEFAULT_CANALIZE_OPTIONS: Required<Omit<CanalizeOptions, "labelSize" | "labelSizePixels">>;
|
|
1106
2132
|
/**
|
|
1107
2133
|
* Generates a GeoJSON FeatureCollection for a CANALIZE mission task symbol (340400).
|
|
1108
2134
|
*
|
|
@@ -1133,17 +2159,15 @@ interface ClearOptions {
|
|
|
1133
2159
|
arrowheadWidthRatio?: number;
|
|
1134
2160
|
/** Gap for the 'C' label as a ratio of the shaft length (default: 0.2). */
|
|
1135
2161
|
labelGapRatio?: number;
|
|
1136
|
-
/**
|
|
2162
|
+
/** Text height in projected meters — ground-anchored label size (ADR-0028). */
|
|
2163
|
+
labelSize?: number;
|
|
2164
|
+
/** Text height in CSS pixels — screen-anchored label size (ADR-0028). */
|
|
1137
2165
|
labelSizePixels?: number;
|
|
1138
|
-
/** Map zoom at which labelSizePixels was captured. */
|
|
1139
|
-
labelSizeZoom?: number;
|
|
1140
|
-
/** Map resolution at which labelSizePixels was captured. */
|
|
1141
|
-
labelSizeResolution?: number;
|
|
1142
2166
|
}
|
|
1143
2167
|
/**
|
|
1144
2168
|
* Default options for the CLEAR symbol.
|
|
1145
2169
|
*/
|
|
1146
|
-
declare const DEFAULT_CLEAR_OPTIONS: Required<Omit<ClearOptions, "
|
|
2170
|
+
declare const DEFAULT_CLEAR_OPTIONS: Required<Omit<ClearOptions, "labelSize" | "labelSizePixels">>;
|
|
1147
2171
|
/**
|
|
1148
2172
|
* Generates a GeoJSON FeatureCollection for a CLEAR mission task symbol (340500).
|
|
1149
2173
|
*
|
|
@@ -1167,6 +2191,57 @@ declare const DEFAULT_CLEAR_OPTIONS: Required<Omit<ClearOptions, "labelSizePixel
|
|
|
1167
2191
|
*/
|
|
1168
2192
|
declare function createClearSymbol(coordinates: Position[], options?: ClearOptions): FeatureCollection<MultiLineString | Point>;
|
|
1169
2193
|
//#endregion
|
|
2194
|
+
//#region src/generators/cm34-mission-tasks/counterattack.d.ts
|
|
2195
|
+
interface CounterattackOptions extends AttackOptions, LabelSizeOptions {
|
|
2196
|
+
/** CATK label position along the shaft, from tail (0) to arrowhead base (1). */
|
|
2197
|
+
labelPosition?: number;
|
|
2198
|
+
}
|
|
2199
|
+
declare const DEFAULT_COUNTERATTACK_OPTIONS: Required<Omit<CounterattackOptions, keyof LabelSizeOptions>>;
|
|
2200
|
+
/** Generates the Counterattack mission task (340600). */
|
|
2201
|
+
declare function createCounterattack(coordinates: Position[], options?: CounterattackOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<LineString | Point>;
|
|
2202
|
+
//#endregion
|
|
2203
|
+
//#region src/generators/cm34-mission-tasks/counterattack-by-fire.d.ts
|
|
2204
|
+
type CounterattackByFireOptions = CounterattackOptions;
|
|
2205
|
+
declare const DEFAULT_COUNTERATTACK_BY_FIRE_OPTIONS: Required<Omit<CounterattackByFireOptions, keyof LabelSizeOptions>>;
|
|
2206
|
+
/** Generates the Counterattack by Fire mission task (340700). */
|
|
2207
|
+
declare function createCounterattackByFire(coordinates: Position[], options?: CounterattackByFireOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<LineString | MultiLineString | Polygon | Point>;
|
|
2208
|
+
//#endregion
|
|
2209
|
+
//#region src/generators/cm15-maneuver-areas/searchArea.d.ts
|
|
2210
|
+
/**
|
|
2211
|
+
* Configuration options to tweak the tactical arrow's geometry.
|
|
2212
|
+
*/
|
|
2213
|
+
interface TacticalArrowOptions {
|
|
2214
|
+
/** Ratio of arrowhead length to total leg length (default: 0.12) */
|
|
2215
|
+
arrowheadLengthRatio?: number;
|
|
2216
|
+
/** Width multiplier for the arrowhead wings (default: 0.5) */
|
|
2217
|
+
arrowheadWidthRatio?: number;
|
|
2218
|
+
/** Percentage along the leg where the zigzag begins, 0.0-1.0 (default: 0.55) */
|
|
2219
|
+
zigzagStart?: number;
|
|
2220
|
+
/** Percentage along the leg where the zigzag returns, 0.0-1.0 (default: 0.45) */
|
|
2221
|
+
zigzagEnd?: number;
|
|
2222
|
+
/** Perpendicular offset for the lightning "kink", relative to leg length (default: 0.07) */
|
|
2223
|
+
zigzagAmplitudeRatio?: number;
|
|
2224
|
+
}
|
|
2225
|
+
/**
|
|
2226
|
+
* Default options for the tactical arrow.
|
|
2227
|
+
*/
|
|
2228
|
+
declare const DEFAULT_TACTICAL_ARROW_OPTIONS: Required<TacticalArrowOptions>;
|
|
2229
|
+
//#endregion
|
|
2230
|
+
//#region src/generators/cm34-mission-tasks/security-task-shared.d.ts
|
|
2231
|
+
interface SecurityTaskOptions extends TacticalArrowOptions {
|
|
2232
|
+
/** Position of each task letter inward from PT. 2/PT. 3 as a ratio of the opening. */
|
|
2233
|
+
labelInsetRatio?: number;
|
|
2234
|
+
/** Text height in projected meters — ground-anchored label size (ADR-0028). */
|
|
2235
|
+
labelSize?: number;
|
|
2236
|
+
/** Text height in CSS pixels — screen-anchored label size (ADR-0028). */
|
|
2237
|
+
labelSizePixels?: number;
|
|
2238
|
+
}
|
|
2239
|
+
//#endregion
|
|
2240
|
+
//#region src/generators/cm34-mission-tasks/cover.d.ts
|
|
2241
|
+
type CoverOptions = SecurityTaskOptions;
|
|
2242
|
+
declare const DEFAULT_COVER_OPTIONS: Required<Omit<SecurityTaskOptions, "labelSize" | "labelSizePixels">>;
|
|
2243
|
+
declare function createCoverSymbol(coordinates: Position[], options?: CoverOptions): FeatureCollection<MultiLineString | Point>;
|
|
2244
|
+
//#endregion
|
|
1170
2245
|
//#region src/generators/cm34-mission-tasks/delay.d.ts
|
|
1171
2246
|
interface DelayOptions {
|
|
1172
2247
|
/** Arrowhead depth as a ratio of the straight-line length (default: 0.12). */
|
|
@@ -1177,16 +2252,47 @@ interface DelayOptions {
|
|
|
1177
2252
|
labelGapRatio?: number;
|
|
1178
2253
|
/** Number of segments used to approximate the 180-degree arc (default: 32). */
|
|
1179
2254
|
arcSegments?: number;
|
|
1180
|
-
/**
|
|
2255
|
+
/** Text height in projected meters — ground-anchored label size (ADR-0028). */
|
|
2256
|
+
labelSize?: number;
|
|
2257
|
+
/** Text height in CSS pixels — screen-anchored label size (ADR-0028). */
|
|
1181
2258
|
labelSizePixels?: number;
|
|
1182
|
-
/** Map zoom at which labelSizePixels was captured. */
|
|
1183
|
-
labelSizeZoom?: number;
|
|
1184
|
-
/** Map resolution at which labelSizePixels was captured. */
|
|
1185
|
-
labelSizeResolution?: number;
|
|
1186
2259
|
}
|
|
1187
|
-
declare const DEFAULT_DELAY_OPTIONS: Required<Omit<DelayOptions, "
|
|
2260
|
+
declare const DEFAULT_DELAY_OPTIONS: Required<Omit<DelayOptions, "labelSize" | "labelSizePixels">>;
|
|
1188
2261
|
declare function createDelaySymbol(coordinates: Position[], options?: DelayOptions): FeatureCollection<MultiLineString | Point>;
|
|
1189
2262
|
//#endregion
|
|
2263
|
+
//#region src/generators/cm34-mission-tasks/disengage.d.ts
|
|
2264
|
+
type DisengageOptions = DelayOptions;
|
|
2265
|
+
declare const DEFAULT_DISENGAGE_OPTIONS: Required<Omit<DelayOptions, "labelSize" | "labelSizePixels">>;
|
|
2266
|
+
declare function createDisengageSymbol(coordinates: Position[], options?: DisengageOptions): FeatureCollection<MultiLineString | Point>;
|
|
2267
|
+
//#endregion
|
|
2268
|
+
//#region src/generators/cm34-mission-tasks/disrupt.d.ts
|
|
2269
|
+
interface DisruptMissionTaskOptions {
|
|
2270
|
+
/** Middle arrow length as a ratio of the PT.3-controlled top arrow (default: 0.65). */
|
|
2271
|
+
middleArrowLengthRatio?: number;
|
|
2272
|
+
/** Bottom arrow length as a ratio of the PT.3-controlled top arrow (default: 0.45). */
|
|
2273
|
+
bottomArrowLengthRatio?: number;
|
|
2274
|
+
/** Rear middle shaft length as a ratio of the top arrow (default: 0.25). */
|
|
2275
|
+
shaftLengthRatio?: number;
|
|
2276
|
+
/** Arrowhead depth as a ratio of the spine length (default: 0.15). */
|
|
2277
|
+
arrowheadLengthRatio?: number;
|
|
2278
|
+
/** Arrowhead width as a ratio of the spine length (default: 0.2). */
|
|
2279
|
+
arrowheadWidthRatio?: number;
|
|
2280
|
+
/** Gap for the 'D' label as a ratio of the top arrow length (default: 0.2). */
|
|
2281
|
+
labelGapRatio?: number;
|
|
2282
|
+
/** Text height in projected meters — ground-anchored label size (ADR-0028). */
|
|
2283
|
+
labelSize?: number;
|
|
2284
|
+
/** Text height in CSS pixels — screen-anchored label size (ADR-0028). */
|
|
2285
|
+
labelSizePixels?: number;
|
|
2286
|
+
}
|
|
2287
|
+
declare const DEFAULT_DISRUPT_MISSION_TASK_OPTIONS: Required<Omit<DisruptMissionTaskOptions, "labelSize" | "labelSizePixels">>;
|
|
2288
|
+
/** Generates the DISRUPT mission task symbol (341000). */
|
|
2289
|
+
declare function createDisruptMissionTaskSymbol(coordinates: Position[], options?: DisruptMissionTaskOptions): FeatureCollection<MultiLineString | Point>;
|
|
2290
|
+
//#endregion
|
|
2291
|
+
//#region src/generators/cm34-mission-tasks/guard.d.ts
|
|
2292
|
+
type GuardOptions = SecurityTaskOptions;
|
|
2293
|
+
declare const DEFAULT_GUARD_OPTIONS: Required<Omit<SecurityTaskOptions, "labelSize" | "labelSizePixels">>;
|
|
2294
|
+
declare function createGuardSymbol(coordinates: Position[], options?: GuardOptions): FeatureCollection<MultiLineString | Point>;
|
|
2295
|
+
//#endregion
|
|
1190
2296
|
//#region src/generators/cm34-mission-tasks/isolate.d.ts
|
|
1191
2297
|
/**
|
|
1192
2298
|
* Configuration options for the ISOLATE tactical mission task symbol.
|
|
@@ -1221,8 +2327,68 @@ interface IsolateOptions {
|
|
|
1221
2327
|
*/
|
|
1222
2328
|
declare function createIsolateSymbol(coordinates: Position[], options?: IsolateOptions): FeatureCollection<MultiLineString>;
|
|
1223
2329
|
//#endregion
|
|
2330
|
+
//#region src/generators/cm34-mission-tasks/penetrate.d.ts
|
|
2331
|
+
interface PenetrateOptions {
|
|
2332
|
+
/** Arrowhead depth as a ratio of the barrier length (default: 0.15). */
|
|
2333
|
+
arrowheadLengthRatio?: number;
|
|
2334
|
+
/** Arrowhead width as a ratio of the barrier length (default: 0.2). */
|
|
2335
|
+
arrowheadWidthRatio?: number;
|
|
2336
|
+
/** Gap for the 'P' label as a ratio of the shaft length (default: 0.2). */
|
|
2337
|
+
labelGapRatio?: number;
|
|
2338
|
+
/** Text height in projected meters — ground-anchored label size (ADR-0028). */
|
|
2339
|
+
labelSize?: number;
|
|
2340
|
+
/** Text height in CSS pixels — screen-anchored label size (ADR-0028). */
|
|
2341
|
+
labelSizePixels?: number;
|
|
2342
|
+
}
|
|
2343
|
+
declare const DEFAULT_PENETRATE_OPTIONS: Required<Omit<PenetrateOptions, "labelSize" | "labelSizePixels">>;
|
|
2344
|
+
/** Generates the PENETRATE mission task symbol (341800). */
|
|
2345
|
+
declare function createPenetrateSymbol(coordinates: Position[], options?: PenetrateOptions): FeatureCollection<MultiLineString | Point>;
|
|
2346
|
+
//#endregion
|
|
2347
|
+
//#region src/generators/cm34-mission-tasks/rearward-passage-of-lines.d.ts
|
|
2348
|
+
type RearwardPassageOfLinesOptions = DelayOptions;
|
|
2349
|
+
declare const DEFAULT_REARWARD_PASSAGE_OF_LINES_OPTIONS: Required<Omit<DelayOptions, "labelSize" | "labelSizePixels">>;
|
|
2350
|
+
declare function createRearwardPassageOfLinesSymbol(coordinates: Position[], options?: RearwardPassageOfLinesOptions): FeatureCollection<MultiLineString | Point>;
|
|
2351
|
+
//#endregion
|
|
2352
|
+
//#region src/generators/cm34-mission-tasks/retire.d.ts
|
|
2353
|
+
type RetireOptions = DelayOptions;
|
|
2354
|
+
declare const DEFAULT_RETIRE_OPTIONS: Required<Omit<DelayOptions, "labelSize" | "labelSizePixels">>;
|
|
2355
|
+
/** Generates the RETIRE/RETIREMENT mission task symbol (342000). */
|
|
2356
|
+
declare function createRetireSymbol(coordinates: Position[], options?: RetireOptions): FeatureCollection<MultiLineString | Point>;
|
|
2357
|
+
//#endregion
|
|
2358
|
+
//#region src/generators/cm34-mission-tasks/screen.d.ts
|
|
2359
|
+
type ScreenOptions = SecurityTaskOptions;
|
|
2360
|
+
declare const DEFAULT_SCREEN_OPTIONS: Required<Omit<SecurityTaskOptions, "labelSize" | "labelSizePixels">>;
|
|
2361
|
+
declare function createScreenSymbol(coordinates: Position[], options?: ScreenOptions): FeatureCollection<MultiLineString | Point>;
|
|
2362
|
+
//#endregion
|
|
2363
|
+
//#region src/generators/cm34-mission-tasks/seize.d.ts
|
|
2364
|
+
interface SeizeOptions extends LabelSizeOptions {
|
|
2365
|
+
/** Arrowhead depth as a ratio of the PT. 2-to-PT. 4 span. */
|
|
2366
|
+
arrowheadLengthRatio?: number;
|
|
2367
|
+
/** Arrowhead base width as a ratio of the PT. 2-to-PT. 4 span. */
|
|
2368
|
+
arrowheadWidthRatio?: number;
|
|
2369
|
+
/** Gap around the intrinsic S label as a ratio of the arc sweep. */
|
|
2370
|
+
labelGapRatio?: number;
|
|
2371
|
+
/** Number of segments used to approximate the circular arc. */
|
|
2372
|
+
curveSegments?: number;
|
|
2373
|
+
/** Number of segments used to approximate the assigned-unit circle. */
|
|
2374
|
+
circleSegments?: number;
|
|
2375
|
+
}
|
|
2376
|
+
declare const DEFAULT_SEIZE_OPTIONS: Required<Omit<SeizeOptions, keyof LabelSizeOptions>>;
|
|
2377
|
+
/** Generates the Seize mission task symbol (342300). */
|
|
2378
|
+
declare function createSeizeSymbol(coordinates: Position[], options?: SeizeOptions): FeatureCollection<MultiLineString | Point>;
|
|
2379
|
+
//#endregion
|
|
2380
|
+
//#region src/generators/cm34-mission-tasks/withdraw.d.ts
|
|
2381
|
+
type WithdrawOptions = DelayOptions;
|
|
2382
|
+
declare const DEFAULT_WITHDRAW_OPTIONS: Required<Omit<DelayOptions, "labelSize" | "labelSizePixels">>;
|
|
2383
|
+
declare function createWithdrawSymbol(coordinates: Position[], options?: WithdrawOptions): FeatureCollection<MultiLineString | Point>;
|
|
2384
|
+
//#endregion
|
|
2385
|
+
//#region src/generators/cm34-mission-tasks/withdraw-under-pressure.d.ts
|
|
2386
|
+
type WithdrawUnderPressureOptions = DelayOptions;
|
|
2387
|
+
declare const DEFAULT_WITHDRAW_UNDER_PRESSURE_OPTIONS: Required<Omit<DelayOptions, "labelSize" | "labelSizePixels">>;
|
|
2388
|
+
declare function createWithdrawUnderPressureSymbol(coordinates: Position[], options?: WithdrawUnderPressureOptions): FeatureCollection<MultiLineString | Point>;
|
|
2389
|
+
//#endregion
|
|
1224
2390
|
//#region src/generators/cm29-protection-lines/antitankDitch.d.ts
|
|
1225
|
-
interface AntitankDitchOptions {
|
|
2391
|
+
interface AntitankDitchOptions extends SmoothLineOptions, LineLabelOptions {
|
|
1226
2392
|
/**
|
|
1227
2393
|
* The tooth depth in meters. Target tooth spacing is roughly 1.15x this depth.
|
|
1228
2394
|
* Ignored when toothHeightPixels is provided with metersPerPixel.
|
|
@@ -1247,14 +2413,9 @@ interface AntitankDitchOptions {
|
|
|
1247
2413
|
*/
|
|
1248
2414
|
metersPerPixel?: number;
|
|
1249
2415
|
}
|
|
1250
|
-
declare const DEFAULT_ANTITANK_DITCH_OPTIONS: Required<Omit<AntitankDitchOptions,
|
|
1251
|
-
declare function createAntitankDitchUnderConstruction(positions: Position[], options?: AntitankDitchOptions): FeatureCollection<MultiLineString
|
|
1252
|
-
|
|
1253
|
-
}>;
|
|
1254
|
-
declare function createAntitankDitchCompleted(positions: Position[], options?: AntitankDitchOptions): FeatureCollection<MultiPolygon, {
|
|
1255
|
-
part: "teeth";
|
|
1256
|
-
fill: boolean;
|
|
1257
|
-
}>;
|
|
2416
|
+
declare const DEFAULT_ANTITANK_DITCH_OPTIONS: Required<Omit<AntitankDitchOptions, keyof LineLabelOptions>>;
|
|
2417
|
+
declare function createAntitankDitchUnderConstruction(positions: Position[], options?: AntitankDitchOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<MultiLineString | Point>;
|
|
2418
|
+
declare function createAntitankDitchCompleted(positions: Position[], options?: AntitankDitchOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<MultiPolygon | Point>;
|
|
1258
2419
|
//#endregion
|
|
1259
2420
|
//#region src/generators/cm29-protection-lines/antitankWall.d.ts
|
|
1260
2421
|
interface AntitankWallOptions extends AntitankDitchOptions {
|
|
@@ -1265,16 +2426,14 @@ interface AntitankWallOptions extends AntitankDitchOptions {
|
|
|
1265
2426
|
*/
|
|
1266
2427
|
toothSpacingRatio?: number;
|
|
1267
2428
|
}
|
|
1268
|
-
declare const DEFAULT_ANTITANK_WALL_OPTIONS: Required<Omit<AntitankWallOptions,
|
|
1269
|
-
declare function createAntitankWall(positions: Position[], options?: AntitankWallOptions): FeatureCollection<MultiLineString
|
|
1270
|
-
part: "wall";
|
|
1271
|
-
}>;
|
|
2429
|
+
declare const DEFAULT_ANTITANK_WALL_OPTIONS: Required<Omit<AntitankWallOptions, keyof LineLabelOptions>>;
|
|
2430
|
+
declare function createAntitankWall(positions: Position[], options?: AntitankWallOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<MultiLineString | Point>;
|
|
1272
2431
|
//#endregion
|
|
1273
2432
|
//#region src/generators/cm29-protection-lines/fortifiedLine.d.ts
|
|
1274
2433
|
/**
|
|
1275
2434
|
* Configuration options for the Fortified Line geometry.
|
|
1276
2435
|
*/
|
|
1277
|
-
interface FortifiedLineOptions {
|
|
2436
|
+
interface FortifiedLineOptions extends LineLabelOptions {
|
|
1278
2437
|
/**
|
|
1279
2438
|
* The size of the square teeth in meters.
|
|
1280
2439
|
* This controls both the width and height of the castellated pattern.
|
|
@@ -1314,7 +2473,7 @@ interface FortifiedLineOptions {
|
|
|
1314
2473
|
/**
|
|
1315
2474
|
* Default options for the Fortified Line graphic.
|
|
1316
2475
|
*/
|
|
1317
|
-
declare const DEFAULT_FORTIFIED_LINE_OPTIONS: Required<Omit<FortifiedLineOptions,
|
|
2476
|
+
declare const DEFAULT_FORTIFIED_LINE_OPTIONS: Required<Omit<FortifiedLineOptions, keyof LineLabelOptions>>;
|
|
1318
2477
|
/**
|
|
1319
2478
|
* Creates a Fortified Line tactical graphic.
|
|
1320
2479
|
*
|
|
@@ -1325,16 +2484,20 @@ declare const DEFAULT_FORTIFIED_LINE_OPTIONS: Required<Omit<FortifiedLineOptions
|
|
|
1325
2484
|
* @param options - Configuration options for the graphic
|
|
1326
2485
|
* @returns A GeoJSON FeatureCollection containing the castellated LineString
|
|
1327
2486
|
*/
|
|
1328
|
-
declare function createFortifiedLine(positions: Position[], options?: FortifiedLineOptions): FeatureCollection<LineString>;
|
|
2487
|
+
declare function createFortifiedLine(positions: Position[], options?: FortifiedLineOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<LineString | Point>;
|
|
1329
2488
|
//#endregion
|
|
1330
2489
|
//#region src/generators/cm15-maneuver-areas/fortifiedArea.d.ts
|
|
1331
2490
|
/**
|
|
1332
2491
|
* Configuration options for the Fortified Area. Inherits the Fortified Line
|
|
1333
2492
|
* options (including `smooth`/`smoothResolution`) unchanged; the area applies
|
|
1334
|
-
* the smoothing as a closed Catmull-Rom ring rather than an open spline.
|
|
2493
|
+
* the smoothing as a closed Catmull-Rom ring rather than an open spline. Also
|
|
2494
|
+
* carries the shared {@link AreaLabelOptions} label placement (a plain
|
|
2495
|
+
* intersection, not a re-derivation, so the aliased
|
|
2496
|
+
* {@link DEFAULT_FORTIFIED_AREA_OPTIONS} default still typechecks unchanged —
|
|
2497
|
+
* `AreaLabelOptions`'s fields are all optional).
|
|
1335
2498
|
*/
|
|
1336
|
-
type FortifiedAreaOptions = FortifiedLineOptions;
|
|
1337
|
-
declare const DEFAULT_FORTIFIED_AREA_OPTIONS:
|
|
2499
|
+
type FortifiedAreaOptions = FortifiedLineOptions & AreaLabelOptions;
|
|
2500
|
+
declare const DEFAULT_FORTIFIED_AREA_OPTIONS: FortifiedAreaOptions;
|
|
1338
2501
|
/**
|
|
1339
2502
|
* Creates a Fortified Area tactical graphic.
|
|
1340
2503
|
*
|
|
@@ -1345,9 +2508,42 @@ declare const DEFAULT_FORTIFIED_AREA_OPTIONS: Required<Omit<FortifiedLineOptions
|
|
|
1345
2508
|
* The first and last positions should match to close the polygon,
|
|
1346
2509
|
* or it will be closed automatically.
|
|
1347
2510
|
* @param options - Configuration options for the graphic
|
|
1348
|
-
* @
|
|
1349
|
-
|
|
1350
|
-
|
|
2511
|
+
* @param textAmplifiers - Field T (bare, no prefix — "TANGO", not "FA TANGO")
|
|
2512
|
+
* plus Field H/W/W1, centered on the pre-teeth boundary ring (see
|
|
2513
|
+
* `boundaryInput` below), and an optional Field N "ENY" hostile marker on
|
|
2514
|
+
* that ring's west/east edges, masking the castellated boundary beneath it.
|
|
2515
|
+
* @param context - Persisted amplifier placements used to move or restore each
|
|
2516
|
+
* ENY cutout with its independently dragged label.
|
|
2517
|
+
* @returns A GeoJSON FeatureCollection containing the castellated boundary
|
|
2518
|
+
* (a Polygon normally, or a gapped MultiLineString with Field N) plus any
|
|
2519
|
+
* label Points
|
|
2520
|
+
*/
|
|
2521
|
+
declare function createFortifiedArea(positions: Position[], options?: FortifiedAreaOptions, textAmplifiers?: CanonicalTextAmplifiers, context?: ControlMeasureGeneratorContext): FeatureCollection<Polygon | MultiLineString | Point>;
|
|
2522
|
+
//#endregion
|
|
2523
|
+
//#region src/generators/cm15-maneuver-areas/maneuver-arrow-task-shared.d.ts
|
|
2524
|
+
interface ManeuverArrowTaskOptions extends AttackOptions, LabelSizeOptions {
|
|
2525
|
+
/** Straight crossbar length as a multiple of the arrowhead base width. */
|
|
2526
|
+
crossbarLengthRatio?: number;
|
|
2527
|
+
/** Field T position along the shaft, from tail (0) to head (1). */
|
|
2528
|
+
labelPosition?: number;
|
|
2529
|
+
/** W/W1 position along the shaft, from tail (0) to head (1). */
|
|
2530
|
+
dtgPosition?: number;
|
|
2531
|
+
/** Extra W/W1 row spacing, in label heights. */
|
|
2532
|
+
labelPadding?: number;
|
|
2533
|
+
}
|
|
2534
|
+
//#endregion
|
|
2535
|
+
//#region src/generators/cm15-maneuver-areas/frontal-attack.d.ts
|
|
2536
|
+
type FrontalAttackOptions = ManeuverArrowTaskOptions;
|
|
2537
|
+
declare const DEFAULT_FRONTAL_ATTACK_OPTIONS: FrontalAttackOptions;
|
|
2538
|
+
declare function createFrontalAttack(coordinates: Position[], options?: FrontalAttackOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<MultiLineString | Point>;
|
|
2539
|
+
//#endregion
|
|
2540
|
+
//#region src/generators/cm15-maneuver-areas/turning-movement.d.ts
|
|
2541
|
+
interface TurningMovementOptions extends ManeuverArrowTaskOptions {
|
|
2542
|
+
/** Crossbar position along the shaft, from tail (0) to arrowhead base (1). */
|
|
2543
|
+
crossbarPosition?: number;
|
|
2544
|
+
}
|
|
2545
|
+
declare const DEFAULT_TURNING_MOVEMENT_OPTIONS: TurningMovementOptions;
|
|
2546
|
+
declare function createTurningMovement(coordinates: Position[], options?: TurningMovementOptions, textAmplifiers?: CanonicalTextAmplifiers): FeatureCollection<MultiLineString | Point>;
|
|
1351
2547
|
//#endregion
|
|
1352
2548
|
//#region src/generators/cm27-protection-areas/block.d.ts
|
|
1353
2549
|
type BlockOptions = Record<never, never>;
|
|
@@ -1413,6 +2609,27 @@ declare const DEFAULT_FIX_OPTIONS: Required<FixOptions>;
|
|
|
1413
2609
|
*/
|
|
1414
2610
|
declare function createFix(coordinates: Position[], options?: FixOptions): FeatureCollection<MultiLineString>;
|
|
1415
2611
|
//#endregion
|
|
2612
|
+
//#region src/generators/cm34-mission-tasks/fix.d.ts
|
|
2613
|
+
interface FixMissionTaskOptions extends LabelSizeOptions {
|
|
2614
|
+
/** Arrowhead depth as a ratio of the PT2-PT1 axis. */
|
|
2615
|
+
arrowheadLengthRatio?: number;
|
|
2616
|
+
/** Arrowhead base width as a ratio of the PT2-PT1 axis. */
|
|
2617
|
+
arrowheadWidthRatio?: number;
|
|
2618
|
+
/** Start of the zigzag body along the axis, measured from PT2. */
|
|
2619
|
+
zigzagStartRatio?: number;
|
|
2620
|
+
/** End of the zigzag body along the axis, measured from PT2. */
|
|
2621
|
+
zigzagEndRatio?: number;
|
|
2622
|
+
/** Number of upward zigzag peaks. */
|
|
2623
|
+
zigzagPeakCount?: number;
|
|
2624
|
+
/** Position of the intrinsic F label along the axis, measured from PT2. */
|
|
2625
|
+
labelPositionRatio?: number;
|
|
2626
|
+
/** Gap around the intrinsic F label as a ratio of the axis length. */
|
|
2627
|
+
labelGapRatio?: number;
|
|
2628
|
+
}
|
|
2629
|
+
declare const DEFAULT_FIX_MISSION_TASK_OPTIONS: Required<Omit<FixMissionTaskOptions, keyof LabelSizeOptions>>;
|
|
2630
|
+
/** Generates the Fix mission task symbol (341100). */
|
|
2631
|
+
declare function createFixMissionTaskSymbol(coordinates: Position[], options?: FixMissionTaskOptions): FeatureCollection<MultiLineString | Point>;
|
|
2632
|
+
//#endregion
|
|
1416
2633
|
//#region src/generators/cm27-protection-areas/turn.d.ts
|
|
1417
2634
|
interface TurnOptions {
|
|
1418
2635
|
arrowheadLengthRatio?: number;
|
|
@@ -1493,17 +2710,47 @@ declare function createObstacleBypassImpossible(coordinates: Position[], options
|
|
|
1493
2710
|
*/
|
|
1494
2711
|
declare const DEFINITIONS: {
|
|
1495
2712
|
boundary: ControlMeasureDefinition<"boundary", typeof createBoundary>;
|
|
2713
|
+
"light-line": ControlMeasureDefinition<"light-line", typeof createLightLine>;
|
|
2714
|
+
"engineer-work-line": ControlMeasureDefinition<"engineer-work-line", typeof createEngineerWorkLine>;
|
|
2715
|
+
"generic-c2-line": ControlMeasureDefinition<"generic-c2-line", typeof createGenericC2Line>;
|
|
1496
2716
|
"battle-position": ControlMeasureDefinition<"battle-position", typeof createBattlePosition>;
|
|
1497
2717
|
"strong-point": ControlMeasureDefinition<"strong-point", typeof createStrongPoint>;
|
|
1498
2718
|
ambush: ControlMeasureDefinition<"ambush", (controlPoints: import("geojson").Position[], options?: AmbushOptions) => import("geojson").FeatureCollection<import("geojson").MultiLineString, Record<string, never>>>;
|
|
2719
|
+
"direction-of-attack-aviation": ControlMeasureDefinition<"direction-of-attack-aviation", typeof createDirectionOfAttackAviation>;
|
|
2720
|
+
"direction-of-main-attack": ControlMeasureDefinition<"direction-of-main-attack", typeof createDirectionOfMainAttack>;
|
|
2721
|
+
"direction-of-supporting-attack": ControlMeasureDefinition<"direction-of-supporting-attack", typeof createDirectionOfSupportingAttack>;
|
|
1499
2722
|
"principal-direction-of-fire": ControlMeasureDefinition<"principal-direction-of-fire", typeof createPrincipalDirectionOfFire>;
|
|
2723
|
+
"secondary-direction-of-fire": ControlMeasureDefinition<"secondary-direction-of-fire", typeof createSecondaryDirectionOfFire>;
|
|
1500
2724
|
"final-protective-fire-left": ControlMeasureDefinition<"final-protective-fire-left", typeof createFinalProtectiveFireLeft>;
|
|
1501
2725
|
"final-protective-fire-right": ControlMeasureDefinition<"final-protective-fire-right", typeof createFinalProtectiveFireRight>;
|
|
1502
2726
|
"search-area": ControlMeasureDefinition<"search-area", (controlPoints: import("geojson").Position[], options?: TacticalArrowOptions) => import("geojson").FeatureCollection<import("geojson").MultiLineString | import("geojson").MultiPolygon, {
|
|
1503
2727
|
part: "shaft" | "head";
|
|
1504
2728
|
fill?: boolean;
|
|
2729
|
+
style?: StyleHints;
|
|
1505
2730
|
}>>;
|
|
1506
2731
|
encirclement: ControlMeasureDefinition<"encirclement", typeof createEncirclement>;
|
|
2732
|
+
area: ControlMeasureDefinition<"area", typeof createArea>;
|
|
2733
|
+
"area-defense": ControlMeasureDefinition<"area-defense", typeof createAreaDefense>;
|
|
2734
|
+
"assembly-area": ControlMeasureDefinition<"assembly-area", typeof createAssemblyArea>;
|
|
2735
|
+
"joint-tactical-action-area": ControlMeasureDefinition<"joint-tactical-action-area", typeof createJointTacticalActionArea>;
|
|
2736
|
+
"submarine-action-area": ControlMeasureDefinition<"submarine-action-area", typeof createSubmarineActionArea>;
|
|
2737
|
+
"submarine-generated-action-area": ControlMeasureDefinition<"submarine-generated-action-area", typeof createSubmarineGeneratedActionArea>;
|
|
2738
|
+
"drop-zone": ControlMeasureDefinition<"drop-zone", typeof createDropZone>;
|
|
2739
|
+
"extraction-zone": ControlMeasureDefinition<"extraction-zone", typeof createExtractionZone>;
|
|
2740
|
+
"landing-zone": ControlMeasureDefinition<"landing-zone", typeof createLandingZone>;
|
|
2741
|
+
"limited-access-area": ControlMeasureDefinition<"limited-access-area", typeof createLimitedAccessArea>;
|
|
2742
|
+
"no-fire-area-irregular": ControlMeasureDefinition<"no-fire-area-irregular", typeof createNoFireAreaIrregular>;
|
|
2743
|
+
"pickup-zone": ControlMeasureDefinition<"pickup-zone", typeof createPickupZone>;
|
|
2744
|
+
"assault-position": ControlMeasureDefinition<"assault-position", typeof createAssaultPosition>;
|
|
2745
|
+
"attack-position": ControlMeasureDefinition<"attack-position", typeof createAttackPosition>;
|
|
2746
|
+
"objective-area": ControlMeasureDefinition<"objective-area", typeof createObjectiveArea>;
|
|
2747
|
+
"area-of-operations": ControlMeasureDefinition<"area-of-operations", typeof createAreaOfOperations>;
|
|
2748
|
+
"named-area-of-interest": ControlMeasureDefinition<"named-area-of-interest", typeof createNamedAreaOfInterest>;
|
|
2749
|
+
"target-area-of-interest": ControlMeasureDefinition<"target-area-of-interest", typeof createTargetAreaOfInterest>;
|
|
2750
|
+
"airfield-zone": ControlMeasureDefinition<"airfield-zone", typeof createAirfieldZone>;
|
|
2751
|
+
"base-camp": ControlMeasureDefinition<"base-camp", typeof createBaseCamp>;
|
|
2752
|
+
"guerrilla-base": ControlMeasureDefinition<"guerrilla-base", typeof createGuerrillaBase>;
|
|
2753
|
+
"generic-c2-area": ControlMeasureDefinition<"generic-c2-area", typeof createGenericC2Area>;
|
|
1507
2754
|
"main-attack": ControlMeasureDefinition<"main-attack", typeof createMainAttack>;
|
|
1508
2755
|
"supporting-attack": ControlMeasureDefinition<"supporting-attack", typeof createSupportingAttack>;
|
|
1509
2756
|
"classic-arrow": ControlMeasureDefinition<"classic-arrow", typeof createClassicArrow>;
|
|
@@ -1512,26 +2759,50 @@ declare const DEFINITIONS: {
|
|
|
1512
2759
|
polygon: ControlMeasureDefinition<"polygon", typeof createGenericPolygon>;
|
|
1513
2760
|
rectangle: ControlMeasureDefinition<"rectangle", typeof createGenericRectangle>;
|
|
1514
2761
|
circle: ControlMeasureDefinition<"circle", typeof createGenericCircle>;
|
|
2762
|
+
text: ControlMeasureDefinition<"text", typeof createGenericText>;
|
|
1515
2763
|
"airborne-attack": ControlMeasureDefinition<"airborne-attack", typeof createAirborneAttack>;
|
|
1516
2764
|
"attack-helicopter": ControlMeasureDefinition<"attack-helicopter", typeof createAttackHelicopter>;
|
|
1517
2765
|
"support-by-fire": ControlMeasureDefinition<"support-by-fire", typeof createSupportByFire>;
|
|
1518
2766
|
"attack-by-fire": ControlMeasureDefinition<"attack-by-fire", typeof createAttackByFire>;
|
|
1519
2767
|
flot: ControlMeasureDefinition<"flot", typeof createFLOT>;
|
|
2768
|
+
"phase-line": ControlMeasureDefinition<"phase-line", typeof createPhaseLine>;
|
|
2769
|
+
"forward-edge-of-battle-area": ControlMeasureDefinition<"forward-edge-of-battle-area", typeof createForwardEdgeOfBattleArea>;
|
|
2770
|
+
"bridgehead-line": ControlMeasureDefinition<"bridgehead-line", typeof createBridgeheadLine>;
|
|
2771
|
+
"holding-line": ControlMeasureDefinition<"holding-line", typeof createHoldingLine>;
|
|
2772
|
+
"release-line": ControlMeasureDefinition<"release-line", typeof createReleaseLine>;
|
|
2773
|
+
"handover-line": ControlMeasureDefinition<"handover-line", typeof createHandoverLine>;
|
|
2774
|
+
"battle-handover-line": ControlMeasureDefinition<"battle-handover-line", typeof createBattleHandoverLine>;
|
|
1520
2775
|
"block-mission-task": ControlMeasureDefinition<"block-mission-task", typeof createBlockMissionTaskSymbol>;
|
|
1521
2776
|
breach: ControlMeasureDefinition<"breach", typeof createBreachSymbol>;
|
|
1522
2777
|
bypass: ControlMeasureDefinition<"bypass", typeof createBypassSymbol>;
|
|
1523
2778
|
canalize: ControlMeasureDefinition<"canalize", typeof createCanalizeSymbol>;
|
|
1524
2779
|
clear: ControlMeasureDefinition<"clear", typeof createClearSymbol>;
|
|
2780
|
+
counterattack: ControlMeasureDefinition<"counterattack", typeof createCounterattack>;
|
|
2781
|
+
"counterattack-by-fire": ControlMeasureDefinition<"counterattack-by-fire", typeof createCounterattackByFire>;
|
|
2782
|
+
cover: ControlMeasureDefinition<"cover", typeof createCoverSymbol>;
|
|
1525
2783
|
delay: ControlMeasureDefinition<"delay", typeof createDelaySymbol>;
|
|
2784
|
+
disengage: ControlMeasureDefinition<"disengage", typeof createDisengageSymbol>;
|
|
2785
|
+
"disrupt-mission-task": ControlMeasureDefinition<"disrupt-mission-task", typeof createDisruptMissionTaskSymbol>;
|
|
2786
|
+
guard: ControlMeasureDefinition<"guard", typeof createGuardSymbol>;
|
|
1526
2787
|
isolate: ControlMeasureDefinition<"isolate", typeof createIsolateSymbol>;
|
|
2788
|
+
penetrate: ControlMeasureDefinition<"penetrate", typeof createPenetrateSymbol>;
|
|
2789
|
+
"rearward-passage-of-lines": ControlMeasureDefinition<"rearward-passage-of-lines", typeof createRearwardPassageOfLinesSymbol>;
|
|
2790
|
+
retire: ControlMeasureDefinition<"retire", typeof createRetireSymbol>;
|
|
2791
|
+
screen: ControlMeasureDefinition<"screen", typeof createScreenSymbol>;
|
|
2792
|
+
seize: ControlMeasureDefinition<"seize", typeof createSeizeSymbol>;
|
|
2793
|
+
withdraw: ControlMeasureDefinition<"withdraw", typeof createWithdrawSymbol>;
|
|
2794
|
+
"withdraw-under-pressure": ControlMeasureDefinition<"withdraw-under-pressure", typeof createWithdrawUnderPressureSymbol>;
|
|
1527
2795
|
"antitank-ditch-under-construction": ControlMeasureDefinition<"antitank-ditch-under-construction", typeof createAntitankDitchUnderConstruction>;
|
|
1528
2796
|
"antitank-ditch-completed": ControlMeasureDefinition<"antitank-ditch-completed", typeof createAntitankDitchCompleted>;
|
|
1529
2797
|
"antitank-wall": ControlMeasureDefinition<"antitank-wall", typeof createAntitankWall>;
|
|
1530
2798
|
"fortified-line": ControlMeasureDefinition<"fortified-line", typeof createFortifiedLine>;
|
|
1531
2799
|
"fortified-area": ControlMeasureDefinition<"fortified-area", typeof createFortifiedArea>;
|
|
2800
|
+
"frontal-attack": ControlMeasureDefinition<"frontal-attack", typeof createFrontalAttack>;
|
|
2801
|
+
"turning-movement": ControlMeasureDefinition<"turning-movement", typeof createTurningMovement>;
|
|
1532
2802
|
block: ControlMeasureDefinition<"block", typeof createBlock>;
|
|
1533
2803
|
disrupt: ControlMeasureDefinition<"disrupt", typeof createDisrupt>;
|
|
1534
2804
|
fix: ControlMeasureDefinition<"fix", typeof createFix>;
|
|
2805
|
+
"fix-mission-task": ControlMeasureDefinition<"fix-mission-task", typeof createFixMissionTaskSymbol>;
|
|
1535
2806
|
turn: ControlMeasureDefinition<"turn", typeof createTurn>;
|
|
1536
2807
|
"obstacle-bypass-easy": ControlMeasureDefinition<"obstacle-bypass-easy", typeof createObstacleBypassEasy>;
|
|
1537
2808
|
"obstacle-bypass-difficult": ControlMeasureDefinition<"obstacle-bypass-difficult", typeof createObstacleBypassDifficult>;
|
|
@@ -1562,30 +2833,6 @@ declare function getControlMeasureMetadata(id: ControlMeasureId): ControlMeasure
|
|
|
1562
2833
|
declare function getControlMeasureMetadataByValue(value: string): ControlMeasureMetadata | undefined;
|
|
1563
2834
|
declare function getDefaultOptions<K extends ControlMeasureKind>(kind: K): OptionsByKind[K];
|
|
1564
2835
|
//#endregion
|
|
1565
|
-
//#region src/style.d.ts
|
|
1566
|
-
/**
|
|
1567
|
-
* Framework-agnostic style hints attached to a `ControlMeasure`.
|
|
1568
|
-
*
|
|
1569
|
-
* Mirrors the per-feature subset of what map adapters render. The renderer
|
|
1570
|
-
* fans these into each emitted feature's `properties.style` ([[StyleHints]]).
|
|
1571
|
-
* Adapters merge them over their layer-level style; generator-emitted hints
|
|
1572
|
-
* on individual features win over both.
|
|
1573
|
-
*/
|
|
1574
|
-
interface ControlMeasureStyle {
|
|
1575
|
-
/**
|
|
1576
|
-
* The single symbol color. Control measures are monocolor: one color paints
|
|
1577
|
-
* every part, stroked or filled. Input-only — resolved into concrete
|
|
1578
|
-
* `strokeColor` / `fillColor` per feature by the renderer and never emitted
|
|
1579
|
-
* on output. `strokeColor` / `fillColor` act as optional per-channel
|
|
1580
|
-
* overrides. See ADR-0011.
|
|
1581
|
-
*/
|
|
1582
|
-
color?: string;
|
|
1583
|
-
strokeColor?: string;
|
|
1584
|
-
strokeWidth?: number;
|
|
1585
|
-
strokeDash?: number[];
|
|
1586
|
-
fillColor?: string;
|
|
1587
|
-
}
|
|
1588
|
-
//#endregion
|
|
1589
2836
|
//#region src/instance.d.ts
|
|
1590
2837
|
interface ControlMeasure<K extends ControlMeasureKind = ControlMeasureKind> {
|
|
1591
2838
|
id: string;
|
|
@@ -1596,13 +2843,15 @@ interface ControlMeasure<K extends ControlMeasureKind = ControlMeasureKind> {
|
|
|
1596
2843
|
properties?: Record<string, unknown>;
|
|
1597
2844
|
/** Free-text amplifier fields (MIL-STD-2525E Appendix L Table L-II); see `./text-amplifiers`. */
|
|
1598
2845
|
textAmplifiers?: TextAmplifiers;
|
|
2846
|
+
/** Optional user-adjusted anchors for independently rendered text amplifiers. */
|
|
2847
|
+
amplifierPlacements?: AmplifierPlacements;
|
|
1599
2848
|
schemaVersion?: 1;
|
|
1600
2849
|
}
|
|
1601
2850
|
declare function isKind<K extends ControlMeasureKind>(cm: ControlMeasure, kind: K): cm is ControlMeasure<K>;
|
|
1602
2851
|
/**
|
|
1603
2852
|
* Deep-clone a `ControlMeasure` so held references survive mutations to the
|
|
1604
2853
|
* original (and vice versa). Used by the session façade to build the
|
|
1605
|
-
* `
|
|
2854
|
+
* `graphic` half of TacticalDraw's `GraphicSnapshot`. Nested values inside
|
|
1606
2855
|
* `options`, `style`, `properties`, and `textAmplifiers` are cloned too —
|
|
1607
2856
|
* `properties` is `Record<string, unknown>` and may carry arbitrary host
|
|
1608
2857
|
* metadata, so a shallow copy would leak shared references.
|
|
@@ -1613,82 +2862,6 @@ declare function isKind<K extends ControlMeasureKind>(cm: ControlMeasure, kind:
|
|
|
1613
2862
|
*/
|
|
1614
2863
|
declare function cloneControlMeasure<K extends ControlMeasureKind>(cm: ControlMeasure<K>): ControlMeasure<K>;
|
|
1615
2864
|
//#endregion
|
|
1616
|
-
//#region src/rendered.d.ts
|
|
1617
|
-
/**
|
|
1618
|
-
* Per-feature style hints carried on `properties.style`.
|
|
1619
|
-
*
|
|
1620
|
-
* These are *resolved*: `renderControlMeasure` cascades `graphicsStyle` →
|
|
1621
|
-
* `cm.style` → any generator pattern hint, then expands the monocolor `color`
|
|
1622
|
-
* into concrete `strokeColor` / `fillColor` per feature (see ADR-0011 and
|
|
1623
|
-
* `resolveSymbolColor`). Output therefore carries concrete colors, never the
|
|
1624
|
-
* input-only `color` key, and a `fillColor` only on parts the generator
|
|
1625
|
-
* marked filled.
|
|
1626
|
-
*
|
|
1627
|
-
* Generators contribute paint *role* and *pattern* (a part is filled; a
|
|
1628
|
-
* sub-line is dashed regardless of the user's stroke), never a hue. Adapters
|
|
1629
|
-
* merge the resulting `StyleHints` over their layer-level style at draw time.
|
|
1630
|
-
*/
|
|
1631
|
-
interface StyleHints extends ControlMeasureStyle {}
|
|
1632
|
-
/**
|
|
1633
|
-
* Per-feature properties emitted by `renderControlMeasure`.
|
|
1634
|
-
*
|
|
1635
|
-
* Stable-id contract — every feature produced by the renderer has:
|
|
1636
|
-
* - `feature.id` of the form `${cmId}:${part}:${index}`
|
|
1637
|
-
* - `properties.part` matching the `part` segment of the id
|
|
1638
|
-
* - `properties.index` matching the `index` segment of the id
|
|
1639
|
-
*
|
|
1640
|
-
* Adapters rely on this contract to diff renders in place without keeping
|
|
1641
|
-
* their own bookkeeping. Use `controlMeasureIdFromFeature` to recover the
|
|
1642
|
-
* `cmId` from a picked feature.
|
|
1643
|
-
*/
|
|
1644
|
-
interface FeaturePartProps {
|
|
1645
|
-
part: string;
|
|
1646
|
-
index: number;
|
|
1647
|
-
style?: StyleHints;
|
|
1648
|
-
/** Label text emitted by generators (e.g. breach "B"). */
|
|
1649
|
-
text?: string;
|
|
1650
|
-
/** Label rotation in radians, emitted by generators. */
|
|
1651
|
-
rotation?: number;
|
|
1652
|
-
/**
|
|
1653
|
-
* Horizontal text alignment relative to the label point: `"start"` = the
|
|
1654
|
-
* text begins at the point, `"end"` = it ends there. Absent = centered.
|
|
1655
|
-
*/
|
|
1656
|
-
textAnchor?: "start" | "end";
|
|
1657
|
-
/** Label size in CSS pixels at the draw/reference zoom. */
|
|
1658
|
-
textSizePixels?: number;
|
|
1659
|
-
/** Map zoom at which textSizePixels was captured. */
|
|
1660
|
-
textSizeZoom?: number;
|
|
1661
|
-
/** Map resolution at which textSizePixels was captured. */
|
|
1662
|
-
textSizeResolution?: number;
|
|
1663
|
-
}
|
|
1664
|
-
/**
|
|
1665
|
-
* Output of `renderControlMeasure`. A GeoJSON `FeatureCollection` whose
|
|
1666
|
-
* features satisfy the `FeaturePartProps` stable-id contract. See ADR-0010.
|
|
1667
|
-
*/
|
|
1668
|
-
type ControlMeasureRender = FeatureCollection<Geometry, FeaturePartProps>;
|
|
1669
|
-
/**
|
|
1670
|
-
* A `ControlMeasure` paired with its `Render` at a single point in time.
|
|
1671
|
-
*
|
|
1672
|
-
* The unit delivered to `EditChangeEvent` listeners (as `measure` and
|
|
1673
|
-
* `previous`) and resolved from `TacticalDraw.draw()` / `.edit()`. The
|
|
1674
|
-
* `measure` half is a defensive clone (see `cloneControlMeasure`) so held
|
|
1675
|
-
* references remain valid after the originating session has closed.
|
|
1676
|
-
*
|
|
1677
|
-
* See ADR-0010.
|
|
1678
|
-
*/
|
|
1679
|
-
interface ControlMeasureSnapshot<K extends ControlMeasureKind = ControlMeasureKind> {
|
|
1680
|
-
measure: ControlMeasure<K>;
|
|
1681
|
-
render: ControlMeasureRender;
|
|
1682
|
-
}
|
|
1683
|
-
/**
|
|
1684
|
-
* Recover the originating control measure id (`cmId`) from a feature emitted
|
|
1685
|
-
* by `renderControlMeasure`. The feature id must match the stable-id contract
|
|
1686
|
-
* `${cmId}:${part}:${index}`; otherwise this throws.
|
|
1687
|
-
*/
|
|
1688
|
-
declare function controlMeasureIdFromFeature(feature: Feature<Geometry, FeaturePartProps> | {
|
|
1689
|
-
id?: string | number;
|
|
1690
|
-
}): string;
|
|
1691
|
-
//#endregion
|
|
1692
2865
|
//#region src/renderControlMeasure.d.ts
|
|
1693
2866
|
interface RenderOptions {
|
|
1694
2867
|
validationMode?: ValidationMode;
|
|
@@ -1718,6 +2891,16 @@ declare function renderControlMeasure<K extends ControlMeasureKind>(cm: ControlM
|
|
|
1718
2891
|
* freeze. Edit hosts call this when a rotate gesture starts (ADR-0023).
|
|
1719
2892
|
*/
|
|
1720
2893
|
declare function freezeOrientationOptions<K extends ControlMeasureKind>(kind: K, controlPoints: Position[], options: OptionsByKind[K] | undefined): Partial<OptionsByKind[K]> | undefined;
|
|
2894
|
+
/**
|
|
2895
|
+
* Dispatches to a measure kind's `transformOptions` hook (see
|
|
2896
|
+
* {@link import("./define").ControlMeasureDefinition.transformOptions}), folding
|
|
2897
|
+
* a box transform gesture's `delta` (screen-space scale/rotation) into option
|
|
2898
|
+
* values for a graphic that persists orientation/size as options rather than in
|
|
2899
|
+
* geometry. Returns an options patch to merge, or `undefined` when the kind
|
|
2900
|
+
* declares no hook (or the hook finds nothing to fold). Edit hosts call this at
|
|
2901
|
+
* a rotate/scale gesture's commit (ADR-0017).
|
|
2902
|
+
*/
|
|
2903
|
+
declare function applyBoxTransformOptions<K extends ControlMeasureKind>(kind: K, options: OptionsByKind[K] | undefined, delta: BoxTransformDelta): Partial<OptionsByKind[K]> | undefined;
|
|
1721
2904
|
//#endregion
|
|
1722
2905
|
//#region src/styleResolver.d.ts
|
|
1723
2906
|
/**
|
|
@@ -1765,8 +2948,9 @@ type SimpleStyleRender = FeatureCollection<Geometry, SimpleStyleProps>;
|
|
|
1765
2948
|
* three-layer merge and stays a pure post-processing step.
|
|
1766
2949
|
*
|
|
1767
2950
|
* Lossy mapping, by design:
|
|
1768
|
-
* - `strokeDash`
|
|
1769
|
-
*
|
|
2951
|
+
* - `strokeDash` and `fillPattern` have no simplestyle equivalent and are
|
|
2952
|
+
* dropped — dashed sub-lines and patterned fills render solid in
|
|
2953
|
+
* simplestyle consumers.
|
|
1770
2954
|
* - colors must be hex or `rgb()/rgba()`; alpha becomes `*-opacity`. Other
|
|
1771
2955
|
* color forms (named, `hsl()`) are omitted rather than guessed.
|
|
1772
2956
|
*/
|
|
@@ -1830,6 +3014,8 @@ interface MidpointPerpendicularDrawRuleOptions {
|
|
|
1830
3014
|
minimumUserPoints?: number;
|
|
1831
3015
|
/** Raw points at which a live preview can be derived. See {@link ControlMeasureDrawRule}. */
|
|
1832
3016
|
minimumPreviewPoints?: number;
|
|
3017
|
+
/** Allow a repeated last point to commit the early derived preview. */
|
|
3018
|
+
finishOnLastPointRepeat?: boolean;
|
|
1833
3019
|
/**
|
|
1834
3020
|
* Index of the slot whose point is constrained to the perpendicular axis
|
|
1835
3021
|
* through the configured origin of the other two ("baseline") slots. Must be
|
|
@@ -1867,6 +3053,15 @@ declare const disruptDrawRule: ControlMeasureDrawRule;
|
|
|
1867
3053
|
//#region src/draw-rules/area15.d.ts
|
|
1868
3054
|
declare const centerRadiusDrawRule: ControlMeasureDrawRule;
|
|
1869
3055
|
//#endregion
|
|
3056
|
+
//#region src/draw-rules/area17.d.ts
|
|
3057
|
+
/**
|
|
3058
|
+
* Area17 anchor draw rule for Penetrate.
|
|
3059
|
+
*
|
|
3060
|
+
* PT.1/PT.2 are the free barrier endpoints. PT.3 is the arrow tail,
|
|
3061
|
+
* constrained to the perpendicular axis through the barrier midpoint.
|
|
3062
|
+
*/
|
|
3063
|
+
declare const penetrateDrawRule: ControlMeasureDrawRule;
|
|
3064
|
+
//#endregion
|
|
1870
3065
|
//#region src/draw-rules/point12.d.ts
|
|
1871
3066
|
/**
|
|
1872
3067
|
* Point12 anchor draw rule for the obstacle-bypass family.
|
|
@@ -1931,6 +3126,31 @@ declare const line23DrawRule: ControlMeasureDrawRule;
|
|
|
1931
3126
|
*/
|
|
1932
3127
|
declare const line24DrawRule: ControlMeasureDrawRule;
|
|
1933
3128
|
//#endregion
|
|
3129
|
+
//#region src/draw-rules/line26.d.ts
|
|
3130
|
+
/**
|
|
3131
|
+
* Line26 anchor draw rule for the Cover, Guard, and Screen security tasks.
|
|
3132
|
+
*
|
|
3133
|
+
* PT. 1/PT. 4 are the outward arrow tips and PT. 2/PT. 3 bound the opening
|
|
3134
|
+
* reserved for the supported tactical symbol. All four anchors are free: the
|
|
3135
|
+
* two sides may independently touch the symbols that define the task limits.
|
|
3136
|
+
* During drawing, the cursor after PT. 1 supplies a provisional PT. 2 and the
|
|
3137
|
+
* rule mirrors that first leg across a temporary center opening, so the full
|
|
3138
|
+
* symbol is visible before PT. 2 is committed.
|
|
3139
|
+
*/
|
|
3140
|
+
declare const line26DrawRule: ControlMeasureDrawRule;
|
|
3141
|
+
//#endregion
|
|
3142
|
+
//#region src/draw-rules/line27.d.ts
|
|
3143
|
+
/**
|
|
3144
|
+
* Line27 anchor draw rule for the Seize mission task.
|
|
3145
|
+
*
|
|
3146
|
+
* PT. 1 is the circle center, PT. 2 fixes its radius and the curved arrow's
|
|
3147
|
+
* start, derived PT. 3 lies on and selects the circular arc, and the user's
|
|
3148
|
+
* third click becomes PT. 4 (the arrow tip). PT. 3 remains directly editable
|
|
3149
|
+
* after commit. Dragging PT. 1 carries PT. 2 with it so the assigned-unit
|
|
3150
|
+
* circle keeps its radius.
|
|
3151
|
+
*/
|
|
3152
|
+
declare const line27DrawRule: ControlMeasureDrawRule;
|
|
3153
|
+
//#endregion
|
|
1934
3154
|
//#region src/draw-rules/area8.d.ts
|
|
1935
3155
|
declare const supportByFireDrawRule: ControlMeasureDrawRule;
|
|
1936
3156
|
//#endregion
|
|
@@ -1960,25 +3180,4 @@ interface AmbushOptions {
|
|
|
1960
3180
|
}
|
|
1961
3181
|
declare const DEFAULT_AMBUSH_OPTIONS: Required<AmbushOptions>;
|
|
1962
3182
|
//#endregion
|
|
1963
|
-
|
|
1964
|
-
/**
|
|
1965
|
-
* Configuration options to tweak the tactical arrow's geometry.
|
|
1966
|
-
*/
|
|
1967
|
-
interface TacticalArrowOptions {
|
|
1968
|
-
/** Ratio of arrowhead length to total leg length (default: 0.12) */
|
|
1969
|
-
arrowheadLengthRatio?: number;
|
|
1970
|
-
/** Width multiplier for the arrowhead wings (default: 0.5) */
|
|
1971
|
-
arrowheadWidthRatio?: number;
|
|
1972
|
-
/** Percentage along the leg where the zigzag begins, 0.0-1.0 (default: 0.55) */
|
|
1973
|
-
zigzagStart?: number;
|
|
1974
|
-
/** Percentage along the leg where the zigzag returns, 0.0-1.0 (default: 0.45) */
|
|
1975
|
-
zigzagEnd?: number;
|
|
1976
|
-
/** Perpendicular offset for the lightning "kink", relative to leg length (default: 0.07) */
|
|
1977
|
-
zigzagAmplitudeRatio?: number;
|
|
1978
|
-
}
|
|
1979
|
-
/**
|
|
1980
|
-
* Default options for the tactical arrow.
|
|
1981
|
-
*/
|
|
1982
|
-
declare const DEFAULT_TACTICAL_ARROW_OPTIONS: Required<TacticalArrowOptions>;
|
|
1983
|
-
//#endregion
|
|
1984
|
-
export { getControlMeasureMetadata as $, DEFAULT_GENERIC_LINE_OPTIONS as $t, getMetersPerPixel as A, ControlMeasureMetadata as An, DEFAULT_CANALIZE_OPTIONS as At, ControlMeasureSnapshot as B, AnchorTransformEvent as Bn, DEFAULT_ATTACK_BY_FIRE_OPTIONS as Bt, snapToMidpointPerpendicular as C, StrongPointOptions as Cn, AntitankDitchOptions as Ct, BaselineFrameOrigin as D, DEFAULT_BOUNDARY_OPTIONS as Dn, ClearOptions as Dt, BaselineFrameOptions as E, BoundaryOptions as En, DelayOptions as Et, resolveStyleHints as F, TextAmplifierField as Fn, BlockMissionTaskOptions as Ft, cloneControlMeasure as G, AirborneAttackOptions as Gt, StyleHints as H, SupportByFireOptions as Ht, freezeOrientationOptions as I, TextAmplifierKey as In, DEFAULT_BLOCK_MISSION_TASK_OPTIONS as It, CONTROL_MEASURE_IDS as J, GenericCircleOptions as Jt, isKind as K, DEFAULT_AIRBORNE_ATTACK_OPTIONS as Kt, RenderOptions as L, TextAmplifiers as Ln, DEFAULT_FLOT_OPTIONS as Lt, SimpleStyleProps as M, TextAmplifierDescriptor as Mn, DEFAULT_BYPASS_OPTIONS as Mt, SimpleStyleRender as N, CanonicalTextAmplifiers as Nn, BreachOptions as Nt, createBaselineFrame as O, ControlMeasureGeometry as On, DEFAULT_CLEAR_OPTIONS as Ot, toSimpleStyle as P, TEXT_AMPLIFIER_FIELDS as Pn, DEFAULT_BREACH_OPTIONS as Pt, OptionsByKind as Q, GenericPolygonOptions as Qt, renderControlMeasure as R, canonicalTextAmplifierKey as Rn, FLOTOptions as Rt, pointOnMidpointPerpendicularAxis as S, DEFAULT_STRONG_POINT_OPTIONS as Sn, DEFAULT_ANTITANK_WALL_OPTIONS as St, BaselineFrameNormal as T, DEFAULT_BATTLE_POSITION_OPTIONS as Tn, DEFAULT_DELAY_OPTIONS as Tt, controlMeasureIdFromFeature as U, AttackHelicopterOptions as Ut, FeaturePartProps as V, ControlMeasureDrawRule as Vn, DEFAULT_SUPPORT_BY_FIRE_OPTIONS as Vt, ControlMeasure as W, DEFAULT_ATTACK_HELICOPTER_OPTIONS as Wt, ControlMeasureId as X, GenericRectangleOptions as Xt, CONTROL_MEASURE_METADATA as Y, DEFAULT_GENERIC_RECTANGLE_OPTIONS as Yt, ControlMeasureKind as Z, DEFAULT_GENERIC_POLYGON_OPTIONS as Zt, blockDrawRule as _, EncirclementOptions as _n, DEFAULT_FORTIFIED_AREA_OPTIONS as _t, rectangleDrawRule as a, ClassicArrowOptions as an, DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS as at, createMidpointPerpendicularDrawRule as b, DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS as bn, FortifiedLineOptions as bt, line24DrawRule as c, SupportingAttackOptions as cn, ObstacleBypassEasyOptions as ct, line1DrawRule as d, calculateMetrics as dn, DEFAULT_FIX_OPTIONS as dt, GenericLineOptions as en, getControlMeasureMetadataByValue as et, ambushDrawRule as f, computeInitialWidthPoint as fn, FixOptions as ft, disruptDrawRule as g, DEFAULT_ENCIRCLEMENT_OPTIONS as gn, DEFAULT_BLOCK_OPTIONS as gt, centerRadiusDrawRule as h, unproject as hn, BlockOptions as ht, DEFAULT_AMBUSH_OPTIONS as i, ClassicArrowHeadStyle as in, ObstacleBypassImpossibleOptions as it, roundToFixed as j, ParamDescriptor as jn, BypassOptions as jt, EPSILON as k, ControlMeasureGeometryType as kn, CanalizeOptions as kt, line23DrawRule as l, DEFAULT_MAIN_ATTACK_OPTIONS as ln, DEFAULT_TURN_OPTIONS as lt, point12DrawRule as m, project as mn, DisruptOptions as mt, TacticalArrowOptions as n, BlockArrowOptions as nn, listControlMeasureMetadata as nt, axis1DrawRule as o, DEFAULT_CLASSIC_ARROW_OPTIONS as on, ObstacleBypassDifficultOptions as ot, attackByFireDrawRule as p, Point2D as pn, DEFAULT_DISRUPT_OPTIONS as pt, ControlMeasureStyle as q, DEFAULT_GENERIC_CIRCLE_OPTIONS as qt, AmbushOptions as r, DEFAULT_BLOCK_ARROW_OPTIONS as rn, DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS as rt, supportByFireDrawRule as s, DEFAULT_SUPPORTING_ATTACK_OPTIONS as sn, DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS as st, DEFAULT_TACTICAL_ARROW_OPTIONS as t, BlockArrowHeadStyle as tn, getDefaultOptions as tt, turnDrawRule as u, MainAttackOptions as un, TurnOptions as ut, MidpointPerpendicularDrawRuleOptions as v, DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS as vn, FortifiedAreaOptions as vt, BaselineFrame as w, BattlePositionOptions as wn, DEFAULT_ANTITANK_DITCH_OPTIONS as wt, getMidpointPerpendicularSignedDistance as x, PrincipalDirectionOfFireOptions as xn, AntitankWallOptions as xt, computeDefaultMidpointPerpendicularPoint as y, FinalProtectiveFireOptions as yn, DEFAULT_FORTIFIED_LINE_OPTIONS as yt, ControlMeasureRender as z, normalizeTextAmplifiers as zn, AttackByFireOptions as zt };
|
|
3183
|
+
export { DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS as $, DEFAULT_SUPPORTING_ATTACK_OPTIONS as $n, BoundaryOptions as $r, CounterattackByFireOptions as $t, EPSILON as A, DEFAULT_ATTACK_BY_FIRE_OPTIONS as An, DEFAULT_DIRECTION_OF_SUPPORTING_ATTACK_OPTIONS as Ar, WithdrawOptions as At, renderControlMeasure as B, GenericCircleOptions as Bn, ControlMeasureStyle as Br, PenetrateOptions as Bt, pointOnMidpointPerpendicularAxis as C, DEFAULT_FORWARD_EDGE_OF_BATTLE_AREA_OPTIONS as Cn, StyleHints as Cr, AntitankWallOptions as Ct, BaselineFrameOptions as D, DEFAULT_FLOT_OPTIONS as Dn, SecondaryDirectionOfFireOptions as Dr, DEFAULT_WITHDRAW_UNDER_PRESSURE_OPTIONS as Dt, BaselineFrameNormal as E, PhaseLineOptions as En, SECONDARY_DIRECTION_OF_FIRE_DASH as Er, DEFAULT_ANTITANK_DITCH_OPTIONS as Et, toSimpleStyle as F, AirborneAttackOptions as Fn, DirectionOfAttackAviationOptions as Fr, DEFAULT_RETIRE_OPTIONS as Ft, CONTROL_MEASURE_METADATA as G, DEFAULT_GENERIC_LINE_OPTIONS as Gn, EngineerWorkLineOptions as Gr, DEFAULT_DISENGAGE_OPTIONS as Gt, cloneControlMeasure as H, GenericRectangleOptions as Hn, DEFAULT_GENERIC_C2_LINE_OPTIONS as Hr, GuardOptions as Ht, resolveStyleHints as I, DEFAULT_AIRBORNE_ATTACK_OPTIONS as In, DEFAULT_STRONG_POINT_OPTIONS as Ir, RetireOptions as It, OptionsByKind as J, BlockArrowOptions as Jn, LabelSizeOptions as Jr, DelayOptions as Jt, ControlMeasureId as K, GenericLineOptions as Kn, DEFAULT_LIGHT_LINE_OPTIONS as Kr, DisengageOptions as Kt, applyBoxTransformOptions as L, DEFAULT_GENERIC_TEXT_OPTIONS as Ln, StrongPointOptions as Lr, DEFAULT_REARWARD_PASSAGE_OF_LINES_OPTIONS as Lt, roundToFixed as M, SupportByFireOptions as Mn, DEFAULT_DIRECTION_OF_MAIN_ATTACK_OPTIONS as Mr, SeizeOptions as Mt, SimpleStyleProps as N, AttackHelicopterOptions as Nn, DirectionOfMainAttackOptions as Nr, DEFAULT_SCREEN_OPTIONS as Nt, BaselineFrameOrigin as O, FLOTOptions as On, DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS as Or, WithdrawUnderPressureOptions as Ot, SimpleStyleRender as P, DEFAULT_ATTACK_HELICOPTER_OPTIONS as Pn, DEFAULT_DIRECTION_OF_ATTACK_AVIATION_OPTIONS as Pr, ScreenOptions as Pt, listControlMeasureMetadata as Q, DEFAULT_CLASSIC_ARROW_OPTIONS as Qn, unproject as Qr, TacticalArrowOptions as Qt, freezeOrientationOptions as R, GenericTextOptions as Rn, BattlePositionOptions as Rr, RearwardPassageOfLinesOptions as Rt, getMidpointPerpendicularSignedDistance as S, ControlMeasureDrawRule as Si, DEFAULT_BRIDGEHEAD_LINE_OPTIONS as Sn, FeaturePartProps as Sr, FortifiedLineOptions as St, BaselineFrame as T, DEFAULT_PHASE_LINE_OPTIONS as Tn, DEFAULT_SECONDARY_DIRECTION_OF_FIRE_OPTIONS as Tr, AntitankDitchOptions as Tt, isKind as U, DEFAULT_GENERIC_POLYGON_OPTIONS as Un, GenericC2LineOptions as Ur, DEFAULT_DISRUPT_MISSION_TASK_OPTIONS as Ut, ControlMeasure as V, DEFAULT_GENERIC_RECTANGLE_OPTIONS as Vn, FillPattern as Vr, DEFAULT_GUARD_OPTIONS as Vt, CONTROL_MEASURE_IDS as W, GenericPolygonOptions as Wn, DEFAULT_ENGINEER_WORK_LINE_OPTIONS as Wr, DisruptMissionTaskOptions as Wt, getControlMeasureMetadataByValue as X, ClassicArrowHeadStyle as Xn, haversineDistance as Xr, DEFAULT_COVER_OPTIONS as Xt, getControlMeasureMetadata as Y, DEFAULT_BLOCK_ARROW_OPTIONS as Yn, Point2D as Yr, CoverOptions as Yt, getDefaultOptions as Z, ClassicArrowOptions as Zn, project as Zr, DEFAULT_TACTICAL_ARROW_OPTIONS as Zt, disruptDrawRule as _, TextAmplifiers as _i, DEFAULT_RELEASE_LINE_OPTIONS as _n, DEFAULT_ENCIRCLEMENT_OPTIONS as _r, DEFAULT_FRONTAL_ATTACK_OPTIONS as _t, supportByFireDrawRule as a, ControlMeasureMetadata as ai, CanalizeOptions as an, AreaOfOperationsOptions as ar, DEFAULT_TURN_OPTIONS as at, computeDefaultMidpointPerpendicularPoint as b, resolveAmplifierPlacement as bi, HoldingLineOptions as bn, FinalProtectiveFireOptions as br, FortifiedAreaOptions as bt, line24DrawRule as c, TextAmplifierDescriptor as ci, DEFAULT_BYPASS_OPTIONS as cn, PickupZoneOptions as cr, FixMissionTaskOptions as ct, line1DrawRule as d, CanonicalTextAmplifiers as di, BlockMissionTaskOptions as dn, DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS as dr, DEFAULT_DISRUPT_OPTIONS as dt, DEFAULT_BOUNDARY_OPTIONS as ei, DEFAULT_COUNTERATTACK_BY_FIRE_OPTIONS as en, SupportingAttackOptions as er, ObstacleBypassImpossibleOptions as et, ambushDrawRule as f, GeneratedLabelKey as fi, DEFAULT_BLOCK_MISSION_TASK_OPTIONS as fn, JointTacticalActionAreaOptions as fr, DisruptOptions as ft, centerRadiusDrawRule as g, TextAmplifierKey as gi, HandoverLineOptions as gn, DEFAULT_AREA_DEFENSE_OPTIONS as gr, TurningMovementOptions as gt, penetrateDrawRule as h, TextAmplifierField as hi, DEFAULT_HANDOVER_LINE_OPTIONS as hn, AreaDefenseOptions as hr, DEFAULT_TURNING_MOVEMENT_OPTIONS as ht, axis1DrawRule as i, ControlMeasureGeometryType as ii, DEFAULT_CLEAR_OPTIONS as in, computeInitialWidthPoint as ir, ObstacleBypassEasyOptions as it, getMetersPerPixel as j, DEFAULT_SUPPORT_BY_FIRE_OPTIONS as jn, DirectionOfSupportingAttackOptions as jr, DEFAULT_SEIZE_OPTIONS as jt, createBaselineFrame as k, AttackByFireOptions as kn, PrincipalDirectionOfFireOptions as kr, DEFAULT_WITHDRAW_OPTIONS as kt, line23DrawRule as l, AmplifierPlacement as li, BreachOptions as ln, DEFAULT_LANDING_ZONE_OPTIONS as lr, DEFAULT_FIX_OPTIONS as lt, point12DrawRule as m, TEXT_AMPLIFIER_FIELDS as mi, DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS as mn, DEFAULT_ASSEMBLY_AREA_OPTIONS as mr, DEFAULT_BLOCK_OPTIONS as mt, DEFAULT_AMBUSH_OPTIONS as n, ControlMeasureFillCapability as ni, DEFAULT_COUNTERATTACK_OPTIONS as nn, MainAttackOptions as nr, ObstacleBypassDifficultOptions as nt, line27DrawRule as o, ControlMeasurePaintCapability as oi, DEFAULT_CANALIZE_OPTIONS as on, DEFAULT_AREA_OF_OPERATIONS_OPTIONS as or, TurnOptions as ot, attackByFireDrawRule as p, LabelPlacementOverride as pi, BattleHandoverLineOptions as pn, AssemblyAreaOptions as pr, BlockOptions as pt, ControlMeasureKind as q, BlockArrowHeadStyle as qn, LightLineOptions as qr, DEFAULT_DELAY_OPTIONS as qt, rectangleDrawRule as r, ControlMeasureGeometry as ri, ClearOptions as rn, calculateMetrics as rr, DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS as rt, line26DrawRule as s, ParamDescriptor as si, BypassOptions as sn, DEFAULT_PICKUP_ZONE_OPTIONS as sr, DEFAULT_FIX_MISSION_TASK_OPTIONS as st, AmbushOptions as t, BoxTransformDelta as ti, CounterattackOptions as tn, DEFAULT_MAIN_ATTACK_OPTIONS as tr, DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS as tt, turnDrawRule as u, AmplifierPlacements as ui, DEFAULT_BREACH_OPTIONS as un, LandingZoneOptions as ur, FixOptions as ut, blockDrawRule as v, canonicalTextAmplifierKey as vi, ReleaseLineOptions as vn, EncirclementOptions as vr, FrontalAttackOptions as vt, snapToMidpointPerpendicular as w, ForwardEdgeOfBattleAreaOptions as wn, controlMeasureIdFromFeature as wr, DEFAULT_ANTITANK_WALL_OPTIONS as wt, createMidpointPerpendicularDrawRule as x, AnchorTransformEvent as xi, BridgeheadLineOptions as xn, ControlMeasureRender as xr, DEFAULT_FORTIFIED_LINE_OPTIONS as xt, MidpointPerpendicularDrawRuleOptions as y, normalizeTextAmplifiers as yi, DEFAULT_HOLDING_LINE_OPTIONS as yn, DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS as yr, DEFAULT_FORTIFIED_AREA_OPTIONS as yt, RenderOptions as z, DEFAULT_GENERIC_CIRCLE_OPTIONS as zn, DEFAULT_BATTLE_POSITION_OPTIONS as zr, DEFAULT_PENETRATE_OPTIONS as zt };
|