function SnapContext() {

  /**
   * @type {Record<string, SnapPoints>}
   */
  this._targets = {};

  /**
   * @type {Record<SnapLocation, Point>}
   */
  this._snapOrigins = {};

  /**
   * @type {SnapLocation[]}
   */
  this._snapLocations = [];

  /**
   * @type {Record<SnapLocation, Point[]>}
   */
  this._defaultSnaps = {};
}
A snap context, containing the (possibly incomplete)
mappings of drop targets (to identify the snapping)
to computed snap points.