@orbat-mapper/control-measures 0.2.0-alpha.15 → 0.2.0-alpha.16

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/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as DEFAULT_GENERIC_C2_LINE_OPTIONS, A as DEFAULT_FORTIFIED_LINE_OPTIONS, At as disruptDrawRule, B as DEFAULT_DELAY_OPTIONS, Bt as project, C as DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS, Ct as line23DrawRule, D as DEFAULT_SCREEN_OPTIONS, Dt as attackByFireDrawRule, E as DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS, Et as ambushDrawRule, F as DEFAULT_FIX_OPTIONS, Ft as pointOnMidpointPerpendicularAxis, G as DEFAULT_GENERIC_POLYGON_OPTIONS, H as DEFAULT_TACTICAL_ARROW_OPTIONS, Ht as EPSILON, I as DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS, It as snapToMidpointPerpendicular, J as DEFAULT_CLASSIC_ARROW_OPTIONS, K as DEFAULT_GENERIC_LINE_OPTIONS, L as DEFAULT_ENCIRCLEMENT_OPTIONS, Lt as createBaselineFrame, M as DEFAULT_HANDOVER_LINE_OPTIONS, Mt as computeDefaultMidpointPerpendicularPoint, N as DEFAULT_PHASE_LINE_OPTIONS, Nt as createMidpointPerpendicularDrawRule, O as DEFAULT_FRONTAL_ATTACK_OPTIONS, Ot as point12DrawRule, P as DEFAULT_FLOT_OPTIONS, Pt as getMidpointPerpendicularSignedDistance, Q as DEFAULT_BLOCK_MISSION_TASK_OPTIONS, R as DEFAULT_DISRUPT_OPTIONS, Rt as calculateMetrics, S as DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS, St as line24DrawRule, T as DEFAULT_LANDING_ZONE_OPTIONS, Tt as line1DrawRule, U as DEFAULT_CLEAR_OPTIONS, Ut as getMetersPerPixel, V as DEFAULT_COVER_OPTIONS, Vt as unproject, W as DEFAULT_GENERIC_RECTANGLE_OPTIONS, Wt as roundToFixed, X as DEFAULT_BYPASS_OPTIONS, Y as DEFAULT_CANALIZE_OPTIONS, Z as DEFAULT_BREACH_OPTIONS, _ as DEFAULT_SUPPORT_BY_FIRE_OPTIONS, _t as DEFAULT_AIRBORNE_ATTACK_OPTIONS, a as resolveAmplifierPlacement, at as DEFAULT_BATTLE_POSITION_OPTIONS, b as DEFAULT_PICKUP_ZONE_OPTIONS, bt as supportByFireDrawRule, c as CONTROL_MEASURE_METADATA, ct as DEFAULT_ANTITANK_WALL_OPTIONS, d as getControlMeasureMetadataByValue, dt as DEFAULT_AREA_OF_OPERATIONS_OPTIONS, et as DEFAULT_ENGINEER_WORK_LINE_OPTIONS, f as getDefaultOptions, ft as DEFAULT_AREA_DEFENSE_OPTIONS, g as DEFAULT_SUPPORTING_ATTACK_OPTIONS, gt as DEFAULT_AMBUSH_OPTIONS, h as DEFAULT_TURN_OPTIONS, ht as DEFAULT_DIRECTION_OF_ATTACK_AVIATION_OPTIONS, i as normalizeTextAmplifiers, it as DEFAULT_BLOCK_OPTIONS, j as DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS, jt as blockDrawRule, k as DEFAULT_FORTIFIED_AREA_OPTIONS, kt as centerRadiusDrawRule, l as DEFINITIONS, lt as DEFAULT_ANTITANK_DITCH_OPTIONS, m as DEFAULT_TURNING_MOVEMENT_OPTIONS, mt as DEFAULT_DIRECTION_OF_MAIN_ATTACK_OPTIONS, n as TEXT_AMPLIFIER_FIELDS, nt as DEFAULT_BOUNDARY_OPTIONS, o as resolveStyleHints, ot as DEFAULT_ATTACK_HELICOPTER_OPTIONS, p as listControlMeasureMetadata, pt as DEFAULT_DIRECTION_OF_SUPPORTING_ATTACK_OPTIONS, q as DEFAULT_GENERIC_CIRCLE_OPTIONS, r as canonicalTextAmplifierKey, rt as DEFAULT_BLOCK_ARROW_OPTIONS, s as CONTROL_MEASURE_IDS, st as DEFAULT_ATTACK_BY_FIRE_OPTIONS, t as renderControlMeasure, tt as DEFAULT_LIGHT_LINE_OPTIONS, u as getControlMeasureMetadata, ut as DEFAULT_ASSEMBLY_AREA_OPTIONS, v as DEFAULT_STRONG_POINT_OPTIONS, vt as rectangleDrawRule, w as DEFAULT_MAIN_ATTACK_OPTIONS, wt as turnDrawRule, x as DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS, xt as line26DrawRule, y as DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, yt as axis1DrawRule, z as DEFAULT_GUARD_OPTIONS, zt as computeInitialWidthPoint } from "./renderControlMeasure-VOKiZO2O.mjs";
1
+ import { $ as DEFAULT_GENERIC_C2_LINE_OPTIONS, A as DEFAULT_FORTIFIED_LINE_OPTIONS, At as disruptDrawRule, B as DEFAULT_DELAY_OPTIONS, Bt as project, C as DEFAULT_OBSTACLE_BYPASS_DIFFICULT_OPTIONS, Ct as line23DrawRule, D as DEFAULT_SCREEN_OPTIONS, Dt as attackByFireDrawRule, E as DEFAULT_JOINT_TACTICAL_ACTION_AREA_OPTIONS, Et as ambushDrawRule, F as DEFAULT_FIX_OPTIONS, Ft as pointOnMidpointPerpendicularAxis, G as DEFAULT_GENERIC_POLYGON_OPTIONS, H as DEFAULT_TACTICAL_ARROW_OPTIONS, Ht as EPSILON, I as DEFAULT_FINAL_PROTECTIVE_FIRE_OPTIONS, It as snapToMidpointPerpendicular, J as DEFAULT_CLASSIC_ARROW_OPTIONS, K as DEFAULT_GENERIC_LINE_OPTIONS, L as DEFAULT_ENCIRCLEMENT_OPTIONS, Lt as createBaselineFrame, M as DEFAULT_HANDOVER_LINE_OPTIONS, Mt as computeDefaultMidpointPerpendicularPoint, N as DEFAULT_PHASE_LINE_OPTIONS, Nt as createMidpointPerpendicularDrawRule, O as DEFAULT_FRONTAL_ATTACK_OPTIONS, Ot as point12DrawRule, P as DEFAULT_FLOT_OPTIONS, Pt as getMidpointPerpendicularSignedDistance, Q as DEFAULT_BLOCK_MISSION_TASK_OPTIONS, R as DEFAULT_DISRUPT_OPTIONS, Rt as calculateMetrics, S as DEFAULT_OBSTACLE_BYPASS_EASY_OPTIONS, St as line24DrawRule, T as DEFAULT_LANDING_ZONE_OPTIONS, Tt as line1DrawRule, U as DEFAULT_CLEAR_OPTIONS, Ut as getMetersPerPixel, V as DEFAULT_COVER_OPTIONS, Vt as unproject, W as DEFAULT_GENERIC_RECTANGLE_OPTIONS, Wt as roundToFixed, X as DEFAULT_BYPASS_OPTIONS, Y as DEFAULT_CANALIZE_OPTIONS, Z as DEFAULT_BREACH_OPTIONS, _ as DEFAULT_SUPPORT_BY_FIRE_OPTIONS, _t as DEFAULT_AIRBORNE_ATTACK_OPTIONS, a as resolveAmplifierPlacement, at as DEFAULT_BATTLE_POSITION_OPTIONS, b as DEFAULT_PICKUP_ZONE_OPTIONS, bt as supportByFireDrawRule, c as CONTROL_MEASURE_METADATA, ct as DEFAULT_ANTITANK_WALL_OPTIONS, d as getControlMeasureMetadataByValue, dt as DEFAULT_AREA_OF_OPERATIONS_OPTIONS, et as DEFAULT_ENGINEER_WORK_LINE_OPTIONS, f as getDefaultOptions, ft as DEFAULT_AREA_DEFENSE_OPTIONS, g as DEFAULT_SUPPORTING_ATTACK_OPTIONS, gt as DEFAULT_AMBUSH_OPTIONS, h as DEFAULT_TURN_OPTIONS, ht as DEFAULT_DIRECTION_OF_ATTACK_AVIATION_OPTIONS, i as normalizeTextAmplifiers, it as DEFAULT_BLOCK_OPTIONS, j as DEFAULT_BATTLE_HANDOVER_LINE_OPTIONS, jt as blockDrawRule, k as DEFAULT_FORTIFIED_AREA_OPTIONS, kt as centerRadiusDrawRule, l as DEFINITIONS, lt as DEFAULT_ANTITANK_DITCH_OPTIONS, m as DEFAULT_TURNING_MOVEMENT_OPTIONS, mt as DEFAULT_DIRECTION_OF_MAIN_ATTACK_OPTIONS, n as TEXT_AMPLIFIER_FIELDS, nt as DEFAULT_BOUNDARY_OPTIONS, o as resolveStyleHints, ot as DEFAULT_ATTACK_HELICOPTER_OPTIONS, p as listControlMeasureMetadata, pt as DEFAULT_DIRECTION_OF_SUPPORTING_ATTACK_OPTIONS, q as DEFAULT_GENERIC_CIRCLE_OPTIONS, r as canonicalTextAmplifierKey, rt as DEFAULT_BLOCK_ARROW_OPTIONS, s as CONTROL_MEASURE_IDS, st as DEFAULT_ATTACK_BY_FIRE_OPTIONS, t as renderControlMeasure, tt as DEFAULT_LIGHT_LINE_OPTIONS, u as getControlMeasureMetadata, ut as DEFAULT_ASSEMBLY_AREA_OPTIONS, v as DEFAULT_STRONG_POINT_OPTIONS, vt as rectangleDrawRule, w as DEFAULT_MAIN_ATTACK_OPTIONS, wt as turnDrawRule, x as DEFAULT_OBSTACLE_BYPASS_IMPOSSIBLE_OPTIONS, xt as line26DrawRule, y as DEFAULT_PRINCIPAL_DIRECTION_OF_FIRE_OPTIONS, yt as axis1DrawRule, z as DEFAULT_GUARD_OPTIONS, zt as computeInitialWidthPoint } from "./renderControlMeasure-aijO8FNF.mjs";
2
2
  //#region src/freeze-orientation.ts
3
3
  /**
4
4
  * Dispatches to a measure kind's `freezeOrientation` hook (see
@@ -1,4 +1,4 @@
1
- import { l as DEFINITIONS, t as renderControlMeasure } from "../renderControlMeasure-VOKiZO2O.mjs";
1
+ import { l as DEFINITIONS, t as renderControlMeasure } from "../renderControlMeasure-aijO8FNF.mjs";
2
2
  //#region src/preview/index.ts
3
3
  /**
4
4
  * Unitless `previewSample` points (~`[-1, 1]`) are scaled by this degree offset
@@ -2325,19 +2325,20 @@ function createDirectionOfAttackLine(coordinates, options, textAmplifiers, confi
2325
2325
  const tip = vecAdd(last.start, vecScale(last.along, last.length));
2326
2326
  const length = Math.min(totalLength, totalLength * nonNegative$1(options.arrowheadLengthRatio, DEFAULT_DIRECTION_ARROWHEAD_LENGTH_RATIO));
2327
2327
  const innerHalfWidth = length * nonNegative$1(options.arrowheadWidthRatio, DEFAULT_DIRECTION_ARROWHEAD_WIDTH_RATIO) / 2;
2328
- const base = vecSub(tip, vecScale(last.along, length));
2328
+ const outlineExtension = config.outlineRatio ? length * Math.max(0, config.outlineRatio) : 0;
2329
+ const innerTip = vecSub(tip, vecScale(last.along, outlineExtension));
2330
+ const base = vecSub(innerTip, vecScale(last.along, length));
2329
2331
  const innerLeft = vecAdd(base, vecScale(last.perp, innerHalfWidth));
2330
2332
  const innerRight = vecSub(base, vecScale(last.perp, innerHalfWidth));
2331
2333
  const arrowhead = config.outlineRatio ? (() => {
2332
- const ratio = Math.max(0, config.outlineRatio);
2333
- const outerHalfWidth = innerHalfWidth * (1 + ratio);
2334
+ const outerHalfWidth = innerHalfWidth * (1 + Math.max(0, config.outlineRatio));
2334
2335
  const outerLeft = vecAdd(base, vecScale(last.perp, outerHalfWidth));
2335
2336
  return [
2336
2337
  innerLeft,
2337
- tip,
2338
+ innerTip,
2338
2339
  innerRight,
2339
2340
  vecSub(base, vecScale(last.perp, outerHalfWidth)),
2340
- vecAdd(tip, vecScale(last.along, length * ratio)),
2341
+ tip,
2341
2342
  outerLeft,
2342
2343
  innerLeft
2343
2344
  ];
@@ -2346,9 +2347,14 @@ function createDirectionOfAttackLine(coordinates, options, textAmplifiers, confi
2346
2347
  tip,
2347
2348
  innerRight
2348
2349
  ];
2350
+ const shaftVerts = outlineExtension > 0 ? verts.slice(0, -1) : verts;
2351
+ if (outlineExtension > 0) {
2352
+ while (shaftVerts.length > 1 && vecDot(vecSub(shaftVerts[shaftVerts.length - 1], innerTip), last.along) > 0) shaftVerts.pop();
2353
+ shaftVerts.push(innerTip);
2354
+ }
2349
2355
  const labelPosition = clampLinePosition(options.labelPosition, DEFAULT_DIRECTION_LABEL_POSITION);
2350
2356
  const labelGap = directionLabelGap(totalLength, labelPosition, textAmplifiers.T, options);
2351
- const lines = [...buildGappedLine(verts, labelGap ? [labelGap] : []), arrowhead.map((point) => unproject(point[0], point[1]))];
2357
+ const lines = [...buildGappedLine(shaftVerts, labelGap ? [labelGap] : []), arrowhead.map((point) => unproject(point[0], point[1]))];
2352
2358
  const features = [{
2353
2359
  type: "Feature",
2354
2360
  properties: { part: config.part },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orbat-mapper/control-measures",
3
- "version": "0.2.0-alpha.15",
3
+ "version": "0.2.0-alpha.16",
4
4
  "description": "Library for drawing tactical graphics and control measures according to MIL-STD-2525 and APP-6 standards.",
5
5
  "license": "MIT",
6
6
  "author": "Orbat Mapper",