@dra2020/district-analytics 12.1.2 → 14.0.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.
@@ -44,6 +44,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
44
44
  Object.defineProperty(exports, "__esModule", ({ value: true }));
45
45
  exports.AnalyticsSession = void 0;
46
46
  const baseclient_1 = __webpack_require__(/*! @dra2020/baseclient */ "@dra2020/baseclient");
47
+ // import * as DT from '@dra2020/dra-types';
47
48
  const Score = __importStar(__webpack_require__(/*! @dra2020/dra-score */ "@dra2020/dra-score"));
48
49
  const preprocess_1 = __webpack_require__(/*! ./preprocess */ "./src/preprocess.ts");
49
50
  const analyze_1 = __webpack_require__(/*! ./analyze */ "./src/analyze.ts");
@@ -53,6 +54,7 @@ const results_2 = __webpack_require__(/*! ./results */ "./src/results.ts");
53
54
  const minority_1 = __webpack_require__(/*! ./minority */ "./src/minority.ts");
54
55
  const D = __importStar(__webpack_require__(/*! ./_data */ "./src/_data.ts"));
55
56
  const U = __importStar(__webpack_require__(/*! ./utils */ "./src/utils.ts"));
57
+ // import * as S from './settings';
56
58
  class AnalyticsSession {
57
59
  constructor(SessionRequest) {
58
60
  this.legislativeDistricts = false; // 2020
@@ -74,7 +76,7 @@ class AnalyticsSession {
74
76
  this.legislativeDistricts = SessionRequest['legislativeDistricts'];
75
77
  this.state = new D.State(this, SessionRequest['stateXX'], SessionRequest['nDistricts']);
76
78
  this.counties = new D.Counties(this, SessionRequest['counties']);
77
- this.graph = new D.Graph(this, SessionRequest['graph']);
79
+ this.graph = new D.GraphClass(this, SessionRequest['graph']);
78
80
  this.features = new D.Features(this, SessionRequest['data'], this.config['datasets']);
79
81
  this.plan = new D.Plan(this, SessionRequest['plan']);
80
82
  this.districts = new D.Districts(this, SessionRequest['districtShapes']);
@@ -102,12 +104,12 @@ class AnalyticsSession {
102
104
  // Guard against being handed a map w/o any precincts assigned
103
105
  if (U.isObjectEmpty(this.plan._planByGeoID))
104
106
  return false;
105
- preprocess_1.doPreprocessData(this, bLog);
106
- analyze_1.doAnalyzeDistricts(this, bLog);
107
- analyze_1.doAnalyzePlan(this, bLog);
108
- this._profile = score_1.profilePlan(this, bLog);
109
- this._scorecard = score_1.scorePlan(this, this._profile, bLog, overridesJSON);
110
- results_1.doAnalyzePostProcessing(this, bLog);
107
+ (0, preprocess_1.doPreprocessData)(this, bLog);
108
+ (0, analyze_1.doAnalyzeDistricts)(this, bLog);
109
+ (0, analyze_1.doAnalyzePlan)(this, bLog);
110
+ this._profile = (0, score_1.profilePlan)(this, bLog);
111
+ this._scorecard = (0, score_1.scorePlan)(this, this._profile, bLog, overridesJSON);
112
+ (0, results_1.doAnalyzePostProcessing)(this, bLog);
111
113
  }
112
114
  catch (e) {
113
115
  console.log("Exception caught by analyzePlan().");
@@ -119,11 +121,11 @@ class AnalyticsSession {
119
121
  // 11-03-2020 - Added for racially polarized voting analysis
120
122
  // NOTE - This assumes that analyzePlan() has been run!
121
123
  analyzeRacialPolarization(districtID, groups, bLog = false) {
122
- return minority_1.doAnalyzeRacialPolarization(this, districtID, groups, bLog);
124
+ return (0, minority_1.doAnalyzeRacialPolarization)(this, districtID, groups, bLog);
123
125
  }
124
126
  // NOTE - This assumes that analyzePlan() has been run!
125
127
  getDistrictStatistics(bLog = false) {
126
- return results_2.prepareDistrictStatistics(this, bLog);
128
+ return (0, results_2.prepareDistrictStatistics)(this, bLog);
127
129
  }
128
130
  getPlanProfile(bLog = false) {
129
131
  return this._profile;
@@ -144,7 +146,7 @@ class AnalyticsSession {
144
146
  }
145
147
  // NOTE - This assumes that analyzePlan() has been run!
146
148
  getRequirementsChecklist(bLog = false) {
147
- return results_2.prepareRequirementsChecklist(this, bLog);
149
+ return (0, results_2.prepareRequirementsChecklist)(this, bLog);
148
150
  }
149
151
  // NOTE - This assumes that analyzePlan() has been run!
150
152
  getDiscontiguousDistrictFeatures(bLog = false) {
@@ -231,8 +233,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
231
233
  return result;
232
234
  };
233
235
  Object.defineProperty(exports, "__esModule", ({ value: true }));
234
- exports.Graph = exports.invertPlan = exports.Plan = exports.State = exports.Counties = exports.fieldForFeature = exports.geoIDForFeature = exports.Features = exports.inferSelectedMinority = exports.Districts = void 0;
235
- const G = __importStar(__webpack_require__(/*! @dra2020/dra-graph */ "@dra2020/dra-graph"));
236
+ exports.GraphClass = exports.invertPlan = exports.Plan = exports.State = exports.Counties = exports.fieldForFeature = exports.geoIDForFeature = exports.Features = exports.inferSelectedMinority = exports.Districts = void 0;
237
+ const dra_analytics_1 = __webpack_require__(/*! @dra2020/dra-analytics */ "@dra2020/dra-analytics");
236
238
  const U = __importStar(__webpack_require__(/*! ./utils */ "./src/utils.ts"));
237
239
  const S = __importStar(__webpack_require__(/*! ./settings */ "./src/settings.ts"));
238
240
  const compact_1 = __webpack_require__(/*! ./compact */ "./src/compact.ts");
@@ -470,7 +472,7 @@ class Districts {
470
472
  demPct = demVotes / totVotes;
471
473
  repPct = repVotes / totVotes;
472
474
  othPct = othVotes / totVotes;
473
- DemSeat = political_1.fptpWin(demPct);
475
+ DemSeat = (0, political_1.fptpWin)(demPct);
474
476
  }
475
477
  // Total minority VAP
476
478
  let minorityPop = totalVAP - whitePop;
@@ -503,8 +505,8 @@ class Districts {
503
505
  const features = geoIDs;
504
506
  const nakedGraph = graph._graph;
505
507
  const nakedPlan = plan._planByGeoID;
506
- bContiguous = G.isConnected(features, nakedGraph, bLog);
507
- bNotEmbedded = (!G.isEmbedded(i, features, nakedPlan, nakedGraph, bLog));
508
+ bContiguous = dra_analytics_1.Graph.isConnected(features, nakedGraph, bLog);
509
+ bNotEmbedded = (!dra_analytics_1.Graph.isEmbedded(i, features, nakedPlan, nakedGraph, bLog));
508
510
  }
509
511
  { // UPDATE THE DISTRICT STATISTICS
510
512
  // NOTE - These are set below for both non-empty & empty districts:
@@ -619,7 +621,7 @@ class Districts {
619
621
  // the underlying function and exposing it here to illustrate the parallelism
620
622
  // with recalcStatistics(). These are called in tandem by doAnalyzeDistricts().
621
623
  extractDistrictShapeProperties(bLog = false) {
622
- compact_1.extractDistrictProperties(this._session, bLog);
624
+ (0, compact_1.extractDistrictProperties)(this._session, bLog);
623
625
  }
624
626
  getCountyIndex(geoID) {
625
627
  let countyFIPS = U.parseGeoID(geoID)['county'];
@@ -1082,7 +1084,7 @@ function invertPlan(plan, s, bLog = false) {
1082
1084
  return invertedPlan;
1083
1085
  }
1084
1086
  exports.invertPlan = invertPlan;
1085
- class Graph {
1087
+ class GraphClass {
1086
1088
  constructor(s, graph) {
1087
1089
  this._session = s;
1088
1090
  this._graph = graph;
@@ -1103,7 +1105,7 @@ class Graph {
1103
1105
  // return U.getObjectKeys(this._graph[node]);
1104
1106
  }
1105
1107
  }
1106
- exports.Graph = Graph;
1108
+ exports.GraphClass = GraphClass;
1107
1109
 
1108
1110
 
1109
1111
  /***/ }),
@@ -1134,17 +1136,17 @@ exports.doAnalyzeDistricts = doAnalyzeDistricts;
1134
1136
  // NOTE - I could make this table-driven, but I'm thinking that the explicit
1135
1137
  // calls might make chunking for aync easier.
1136
1138
  function doAnalyzePlan(s, bLog = false) {
1137
- s.tests[0 /* Complete */] = valid_1.doIsComplete(s, bLog);
1138
- s.tests[1 /* Contiguous */] = valid_1.doIsContiguous(s, bLog);
1139
- s.tests[2 /* FreeOfHoles */] = valid_1.doIsFreeOfHoles(s, bLog);
1139
+ s.tests[0 /* Complete */] = (0, valid_1.doIsComplete)(s, bLog);
1140
+ s.tests[1 /* Contiguous */] = (0, valid_1.doIsContiguous)(s, bLog);
1141
+ s.tests[2 /* FreeOfHoles */] = (0, valid_1.doIsFreeOfHoles)(s, bLog);
1140
1142
  // NOTE - I can't check whether a population deviation is legal or not, until
1141
1143
  // the raw % is normalized. A zero (0) would mean "too much" / "not legal," for
1142
1144
  // the given type of district (CD vs. LD). The EqualPopulation test is derived
1143
1145
  // from PopulationDeviation, as part of scorecard or test log preparation.
1144
1146
  // Create an empty test entry here though ...
1145
1147
  s.tests[3 /* EqualPopulation */] = s.getTest(3 /* EqualPopulation */);
1146
- s.tests[5 /* UnexpectedCountySplits */] = cohesive_1.doFindCountiesSplitUnexpectedly(s, bLog);
1147
- s.tests[6 /* VTDSplits */] = cohesive_1.doFindSplitVTDs(s, bLog);
1148
+ s.tests[5 /* UnexpectedCountySplits */] = (0, cohesive_1.doFindCountiesSplitUnexpectedly)(s, bLog);
1149
+ s.tests[6 /* VTDSplits */] = (0, cohesive_1.doFindSplitVTDs)(s, bLog);
1148
1150
  // Enable a Test Log and Scorecard to be generated
1149
1151
  s.bPlanAnalyzed = true;
1150
1152
  s.bPostProcessingDone = false;
@@ -1156,7 +1158,7 @@ exports.doAnalyzePlan = doAnalyzePlan;
1156
1158
  // Equal Population to be secondary pass/fail validation.
1157
1159
  //
1158
1160
  function doDeriveSecondaryTests(s, bLog = false) {
1159
- s.tests[3 /* EqualPopulation */] = equal_1.doHasEqualPopulations(s, bLog);
1161
+ s.tests[3 /* EqualPopulation */] = (0, equal_1.doHasEqualPopulations)(s, bLog);
1160
1162
  }
1161
1163
  exports.doDeriveSecondaryTests = doDeriveSecondaryTests;
1162
1164
 
@@ -1410,7 +1412,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
1410
1412
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1411
1413
  exports.scoreKIWYSICompactness = exports.extractDistrictProperties = void 0;
1412
1414
  const baseclient_1 = __webpack_require__(/*! @dra2020/baseclient */ "@dra2020/baseclient");
1413
- const Compactness = __importStar(__webpack_require__(/*! @dra2020/compactness */ "@dra2020/compactness"));
1415
+ const dra_analytics_1 = __webpack_require__(/*! @dra2020/dra-analytics */ "@dra2020/dra-analytics");
1414
1416
  const U = __importStar(__webpack_require__(/*! ./utils */ "./src/utils.ts"));
1415
1417
  // HELPER TO EXTRACT PROPERTIES OF DISTRICT SHAPES
1416
1418
  function extractDistrictProperties(s, bLog = false) {
@@ -1461,7 +1463,7 @@ function scoreKIWYSICompactness(s, bLog = false) {
1461
1463
  goodShapes.features.push(f);
1462
1464
  }
1463
1465
  }
1464
- const scores = Compactness.scoreShapes(goodShapes, 0 /* Revised */);
1466
+ const scores = dra_analytics_1.Compactness.scoreShapes(goodShapes, 0 /* Revised */);
1465
1467
  // Round & invert the scores here at the source vs. later on, higher up.
1466
1468
  // Raw KIWYSI scores will be 1–100 with smaller better, so map to 1–100 bigger better.
1467
1469
  return scores.map(n => 100 - Math.round(n) + 1);
@@ -1564,7 +1566,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
1564
1566
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
1565
1567
  };
1566
1568
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1567
- exports.inferSelectedMinority = exports.fieldForFeature = exports.geoIDForFeature = void 0;
1569
+ exports.uncertaintyOfMembership = exports.effectiveSplits = exports.inferSelectedMinority = exports.fieldForFeature = exports.geoIDForFeature = void 0;
1568
1570
  __exportStar(__webpack_require__(/*! ./_api */ "./src/_api.ts"), exports);
1569
1571
  var _data_1 = __webpack_require__(/*! ./_data */ "./src/_data.ts");
1570
1572
  Object.defineProperty(exports, "geoIDForFeature", ({ enumerable: true, get: function () { return _data_1.geoIDForFeature; } }));
@@ -1573,6 +1575,10 @@ Object.defineProperty(exports, "inferSelectedMinority", ({ enumerable: true, get
1573
1575
  __exportStar(__webpack_require__(/*! ./results */ "./src/results.ts"), exports);
1574
1576
  __exportStar(__webpack_require__(/*! ./types */ "./src/types.ts"), exports);
1575
1577
  __exportStar(__webpack_require__(/*! ./utils */ "./src/utils.ts"), exports);
1578
+ // Re-export RPV types and COI splitting functions
1579
+ const dra_analytics_1 = __webpack_require__(/*! @dra2020/dra-analytics */ "@dra2020/dra-analytics");
1580
+ exports.effectiveSplits = dra_analytics_1.Splitting.effectiveSplits;
1581
+ exports.uncertaintyOfMembership = dra_analytics_1.Splitting.uncertaintyOfMembership;
1576
1582
 
1577
1583
 
1578
1584
  /***/ }),
@@ -1587,31 +1593,12 @@ __exportStar(__webpack_require__(/*! ./utils */ "./src/utils.ts"), exports);
1587
1593
  //
1588
1594
  // PROTECTS MINORITIES
1589
1595
  //
1590
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
1591
- if (k2 === undefined) k2 = k;
1592
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
1593
- }) : (function(o, m, k, k2) {
1594
- if (k2 === undefined) k2 = k;
1595
- o[k2] = m[k];
1596
- }));
1597
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
1598
- Object.defineProperty(o, "default", { enumerable: true, value: v });
1599
- }) : function(o, v) {
1600
- o["default"] = v;
1601
- });
1602
- var __importStar = (this && this.__importStar) || function (mod) {
1603
- if (mod && mod.__esModule) return mod;
1604
- var result = {};
1605
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
1606
- __setModuleDefault(result, mod);
1607
- return result;
1608
- };
1609
1596
  var __importDefault = (this && this.__importDefault) || function (mod) {
1610
1597
  return (mod && mod.__esModule) ? mod : { "default": mod };
1611
1598
  };
1612
1599
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1613
1600
  exports.doAnalyzeRacialPolarization = exports.getVRASection5 = exports.getMajorityMinority = void 0;
1614
- const RPV = __importStar(__webpack_require__(/*! @dra2020/racial-voting */ "@dra2020/racial-voting"));
1601
+ const dra_analytics_1 = __webpack_require__(/*! @dra2020/dra-analytics */ "@dra2020/dra-analytics");
1615
1602
  const majority_minority_json_1 = __importDefault(__webpack_require__(/*! ../static/majority-minority.json */ "./static/majority-minority.json"));
1616
1603
  const vra5_preclearance_json_1 = __importDefault(__webpack_require__(/*! ../static/vra5-preclearance.json */ "./static/vra5-preclearance.json"));
1617
1604
  // TODO - Update/revise this, when the update comes out in September:
@@ -1646,7 +1633,7 @@ function doAnalyzeRacialPolarization(s, districtID, groups, bLog = false) {
1646
1633
  return undefined;
1647
1634
  if (points.comparison.length <= 10)
1648
1635
  return undefined;
1649
- return RPV.analyzeRacialVoting(points, districtID, groups);
1636
+ return dra_analytics_1.Minority.analyzeRacialVoting(points, districtID, groups);
1650
1637
  }
1651
1638
  exports.doAnalyzeRacialPolarization = doAnalyzeRacialPolarization;
1652
1639
  // 11-18-2020 - Moved RPV to racial-voting package.
@@ -2053,7 +2040,7 @@ function doAnalyzePostProcessing(s, bLog = false) {
2053
2040
  scorecard.splitting.details['countiesWithSplits'] = simpleSplits['details']['countiesWithSplits'];
2054
2041
  // NOTE - Add split precincts in dra-client directly
2055
2042
  // Derive secondary tests
2056
- analyze_1.doDeriveSecondaryTests(s, bLog);
2043
+ (0, analyze_1.doDeriveSecondaryTests)(s, bLog);
2057
2044
  // Toggle the semaphore, so postprocessing isn't for both the testlog & scorecard
2058
2045
  s.bPostProcessingDone = true;
2059
2046
  }
@@ -2409,7 +2396,7 @@ function isUninhabited(geoID, s) {
2409
2396
  const f = s.features.featureByIndex(featureID);
2410
2397
  // 03-27-21
2411
2398
  const dk = s.features._keys["CENSUS" /* CENSUS */];
2412
- const totalPop = _data_1.fieldForFeature(f, dk, "Tot" /* TotalPop */);
2399
+ const totalPop = (0, _data_1.fieldForFeature)(f, dk, "Tot" /* TotalPop */);
2413
2400
  // const totalPop = s.features.fieldForFeature(f, T.Dataset.CENSUS, T.FeatureField.TotalPop);
2414
2401
  let bUninhabited = (totalPop > 0) ? false : true;
2415
2402
  // HACK for Kentucky's atypical data, so the official map shows as complete
@@ -2783,26 +2770,6 @@ function doIsFreeOfHoles(s, bLog = false) {
2783
2770
  exports.doIsFreeOfHoles = doIsFreeOfHoles;
2784
2771
 
2785
2772
 
2786
- /***/ }),
2787
-
2788
- /***/ "./static/majority-minority.json":
2789
- /*!***************************************!*\
2790
- !*** ./static/majority-minority.json ***!
2791
- \***************************************/
2792
- /***/ ((module) => {
2793
-
2794
- module.exports = JSON.parse("{\"AL\":{\"Black\":[7],\"Hispanic\":[],\"Pacific\":[]},\"AK\":{\"Black\":[],\"Hispanic\":[],\"Pacific\":[]},\"AZ\":{\"Black\":[],\"Hispanic\":[2,4,7],\"Pacific\":[]},\"AR\":{\"Black\":[],\"Hispanic\":[],\"Pacific\":[]},\"CA\":{\"Black\":[13,37,43],\"Hispanic\":[17,18,20,21,28,31,32,34,35,38,39,43,45,47,51],\"Pacific\":[12,13,14,15,17,18,19,27,34,39,45,47,52]},\"CO\":{\"Black\":[],\"Hispanic\":[],\"Pacific\":[]},\"CT\":{\"Black\":[],\"Hispanic\":[],\"Pacific\":[]},\"DC\":{\"Black\":[],\"Hispanic\":[],\"Pacific\":[]},\"DE\":{\"Black\":[],\"Hispanic\":[],\"Pacific\":[]},\"FL\":{\"Black\":[5,20,24],\"Hispanic\":[18,21,25],\"Pacific\":[]},\"GA\":{\"Black\":[2,4,5,13],\"Hispanic\":[],\"Pacific\":[]},\"HI\":{\"Black\":[],\"Hispanic\":[],\"Pacific\":[2]},\"ID\":{\"Black\":[],\"Hispanic\":[1],\"Pacific\":[]},\"IL\":{\"Black\":[1,2,7],\"Hispanic\":[4],\"Pacific\":[]},\"IN\":{\"Black\":[7],\"Hispanic\":[],\"Pacific\":[]},\"IA\":{\"Black\":[],\"Hispanic\":[],\"Pacific\":[]},\"KS\":{\"Black\":[],\"Hispanic\":[],\"Pacific\":[]},\"KY\":{\"Black\":[],\"Hispanic\":[],\"Pacific\":[]},\"LA\":{\"Black\":[2],\"Hispanic\":[],\"Pacific\":[]},\"ME\":{\"Black\":[],\"Hispanic\":[],\"Pacific\":[]},\"MD\":{\"Black\":[4,7],\"Hispanic\":[],\"Pacific\":[]},\"MA\":{\"Black\":[],\"Hispanic\":[],\"Pacific\":[]},\"MI\":{\"Black\":[13,14],\"Hispanic\":[],\"Pacific\":[]},\"MN\":{\"Black\":[],\"Hispanic\":[],\"Pacific\":[]},\"MS\":{\"Black\":[2],\"Hispanic\":[],\"Pacific\":[]},\"MO\":{\"Black\":[1,5],\"Hispanic\":[],\"Pacific\":[]},\"MT\":{\"Black\":[],\"Hispanic\":[],\"Pacific\":[]},\"NE\":{\"Black\":[],\"Hispanic\":[],\"Pacific\":[]},\"NV\":{\"Black\":[],\"Hispanic\":[],\"Pacific\":[]},\"NH\":{\"Black\":[],\"Hispanic\":[],\"Pacific\":[]},\"NJ\":{\"Black\":[10,12],\"Hispanic\":[13],\"Pacific\":[6]},\"NM\":{\"Black\":[],\"Hispanic\":[2,13],\"Pacific\":[]},\"NY\":{\"Black\":[5,8,9,13],\"Hispanic\":[12,16],\"Pacific\":[6,7,10]},\"NC\":{\"Black\":[1,12],\"Hispanic\":[],\"Pacific\":[]},\"ND\":{\"Black\":[],\"Hispanic\":[],\"Pacific\":[]},\"OH\":{\"Black\":[3,11],\"Hispanic\":[],\"Pacific\":[]},\"OK\":{\"Black\":[],\"Hispanic\":[],\"Pacific\":[]},\"OR\":{\"Black\":[],\"Hispanic\":[],\"Pacific\":[]},\"PA\":{\"Black\":[2],\"Hispanic\":[],\"Pacific\":[]},\"PR\":{\"Black\":[],\"Hispanic\":[],\"Pacific\":[]},\"RI\":{\"Black\":[],\"Hispanic\":[],\"Pacific\":[]},\"SC\":{\"Black\":[6],\"Hispanic\":[],\"Pacific\":[]},\"SD\":{\"Black\":[],\"Hispanic\":[],\"Pacific\":[]},\"TN\":{\"Black\":[9],\"Hispanic\":[],\"Pacific\":[]},\"TX\":{\"Black\":[9,18,33],\"Hispanic\":[15,16,19,20,23,27,28,29,32],\"Pacific\":[]},\"UT\":{\"Black\":[],\"Hispanic\":[],\"Pacific\":[]},\"VT\":{\"Black\":[],\"Hispanic\":[],\"Pacific\":[]},\"VA\":{\"Black\":[3],\"Hispanic\":[],\"Pacific\":[]},\"WA\":{\"Black\":[],\"Hispanic\":[3],\"Pacific\":[9]},\"WV\":{\"Black\":[],\"Hispanic\":[],\"Pacific\":[]},\"WI\":{\"Black\":[4],\"Hispanic\":[],\"Pacific\":[]},\"WY\":{\"Black\":[],\"Hispanic\":[],\"Pacific\":[]}}");
2795
-
2796
- /***/ }),
2797
-
2798
- /***/ "./static/vra5-preclearance.json":
2799
- /*!***************************************!*\
2800
- !*** ./static/vra5-preclearance.json ***!
2801
- \***************************************/
2802
- /***/ ((module) => {
2803
-
2804
- module.exports = JSON.parse("{\"AL\":\"all\",\"AK\":\"all\",\"AZ\":\"all\",\"CA\":\"parts\",\"FL\":\"parts\",\"GA\":\"all\",\"LA\":\"all\",\"MI\":\"parts\",\"MS\":\"all\",\"NY\":\"parts\",\"NC\":\"parts\",\"SC\":\"all\",\"SD\":\"parts\",\"TX\":\"all\",\"VA\":\"all\"}");
2805
-
2806
2773
  /***/ }),
2807
2774
 
2808
2775
  /***/ "@dra2020/baseclient":
@@ -2811,57 +2778,57 @@ module.exports = JSON.parse("{\"AL\":\"all\",\"AK\":\"all\",\"AZ\":\"all\",\"CA\
2811
2778
  \**************************************/
2812
2779
  /***/ ((module) => {
2813
2780
 
2814
- module.exports = require("@dra2020/baseclient");;
2781
+ module.exports = require("@dra2020/baseclient");
2815
2782
 
2816
2783
  /***/ }),
2817
2784
 
2818
- /***/ "@dra2020/compactness":
2819
- /*!***************************************!*\
2820
- !*** external "@dra2020/compactness" ***!
2821
- \***************************************/
2785
+ /***/ "@dra2020/dra-analytics":
2786
+ /*!*****************************************!*\
2787
+ !*** external "@dra2020/dra-analytics" ***!
2788
+ \*****************************************/
2822
2789
  /***/ ((module) => {
2823
2790
 
2824
- module.exports = require("@dra2020/compactness");;
2791
+ module.exports = require("@dra2020/dra-analytics");
2825
2792
 
2826
2793
  /***/ }),
2827
2794
 
2828
- /***/ "@dra2020/dra-graph":
2795
+ /***/ "@dra2020/dra-score":
2829
2796
  /*!*************************************!*\
2830
- !*** external "@dra2020/dra-graph" ***!
2797
+ !*** external "@dra2020/dra-score" ***!
2831
2798
  \*************************************/
2832
2799
  /***/ ((module) => {
2833
2800
 
2834
- module.exports = require("@dra2020/dra-graph");;
2801
+ module.exports = require("@dra2020/dra-score");
2835
2802
 
2836
2803
  /***/ }),
2837
2804
 
2838
- /***/ "@dra2020/dra-score":
2805
+ /***/ "@dra2020/dra-types":
2839
2806
  /*!*************************************!*\
2840
- !*** external "@dra2020/dra-score" ***!
2807
+ !*** external "@dra2020/dra-types" ***!
2841
2808
  \*************************************/
2842
2809
  /***/ ((module) => {
2843
2810
 
2844
- module.exports = require("@dra2020/dra-score");;
2811
+ module.exports = require("@dra2020/dra-types");
2845
2812
 
2846
2813
  /***/ }),
2847
2814
 
2848
- /***/ "@dra2020/dra-types":
2849
- /*!*************************************!*\
2850
- !*** external "@dra2020/dra-types" ***!
2851
- \*************************************/
2815
+ /***/ "./static/majority-minority.json":
2816
+ /*!***************************************!*\
2817
+ !*** ./static/majority-minority.json ***!
2818
+ \***************************************/
2852
2819
  /***/ ((module) => {
2853
2820
 
2854
- module.exports = require("@dra2020/dra-types");;
2821
+ module.exports = JSON.parse('{"AL":{"Black":[7],"Hispanic":[],"Pacific":[]},"AK":{"Black":[],"Hispanic":[],"Pacific":[]},"AZ":{"Black":[],"Hispanic":[2,4,7],"Pacific":[]},"AR":{"Black":[],"Hispanic":[],"Pacific":[]},"CA":{"Black":[13,37,43],"Hispanic":[17,18,20,21,28,31,32,34,35,38,39,43,45,47,51],"Pacific":[12,13,14,15,17,18,19,27,34,39,45,47,52]},"CO":{"Black":[],"Hispanic":[],"Pacific":[]},"CT":{"Black":[],"Hispanic":[],"Pacific":[]},"DC":{"Black":[],"Hispanic":[],"Pacific":[]},"DE":{"Black":[],"Hispanic":[],"Pacific":[]},"FL":{"Black":[5,20,24],"Hispanic":[18,21,25],"Pacific":[]},"GA":{"Black":[2,4,5,13],"Hispanic":[],"Pacific":[]},"HI":{"Black":[],"Hispanic":[],"Pacific":[2]},"ID":{"Black":[],"Hispanic":[1],"Pacific":[]},"IL":{"Black":[1,2,7],"Hispanic":[4],"Pacific":[]},"IN":{"Black":[7],"Hispanic":[],"Pacific":[]},"IA":{"Black":[],"Hispanic":[],"Pacific":[]},"KS":{"Black":[],"Hispanic":[],"Pacific":[]},"KY":{"Black":[],"Hispanic":[],"Pacific":[]},"LA":{"Black":[2],"Hispanic":[],"Pacific":[]},"ME":{"Black":[],"Hispanic":[],"Pacific":[]},"MD":{"Black":[4,7],"Hispanic":[],"Pacific":[]},"MA":{"Black":[],"Hispanic":[],"Pacific":[]},"MI":{"Black":[13,14],"Hispanic":[],"Pacific":[]},"MN":{"Black":[],"Hispanic":[],"Pacific":[]},"MS":{"Black":[2],"Hispanic":[],"Pacific":[]},"MO":{"Black":[1,5],"Hispanic":[],"Pacific":[]},"MT":{"Black":[],"Hispanic":[],"Pacific":[]},"NE":{"Black":[],"Hispanic":[],"Pacific":[]},"NV":{"Black":[],"Hispanic":[],"Pacific":[]},"NH":{"Black":[],"Hispanic":[],"Pacific":[]},"NJ":{"Black":[10,12],"Hispanic":[13],"Pacific":[6]},"NM":{"Black":[],"Hispanic":[2,13],"Pacific":[]},"NY":{"Black":[5,8,9,13],"Hispanic":[12,16],"Pacific":[6,7,10]},"NC":{"Black":[1,12],"Hispanic":[],"Pacific":[]},"ND":{"Black":[],"Hispanic":[],"Pacific":[]},"OH":{"Black":[3,11],"Hispanic":[],"Pacific":[]},"OK":{"Black":[],"Hispanic":[],"Pacific":[]},"OR":{"Black":[],"Hispanic":[],"Pacific":[]},"PA":{"Black":[2],"Hispanic":[],"Pacific":[]},"PR":{"Black":[],"Hispanic":[],"Pacific":[]},"RI":{"Black":[],"Hispanic":[],"Pacific":[]},"SC":{"Black":[6],"Hispanic":[],"Pacific":[]},"SD":{"Black":[],"Hispanic":[],"Pacific":[]},"TN":{"Black":[9],"Hispanic":[],"Pacific":[]},"TX":{"Black":[9,18,33],"Hispanic":[15,16,19,20,23,27,28,29,32],"Pacific":[]},"UT":{"Black":[],"Hispanic":[],"Pacific":[]},"VT":{"Black":[],"Hispanic":[],"Pacific":[]},"VA":{"Black":[3],"Hispanic":[],"Pacific":[]},"WA":{"Black":[],"Hispanic":[3],"Pacific":[9]},"WV":{"Black":[],"Hispanic":[],"Pacific":[]},"WI":{"Black":[4],"Hispanic":[],"Pacific":[]},"WY":{"Black":[],"Hispanic":[],"Pacific":[]}}');
2855
2822
 
2856
2823
  /***/ }),
2857
2824
 
2858
- /***/ "@dra2020/racial-voting":
2859
- /*!*****************************************!*\
2860
- !*** external "@dra2020/racial-voting" ***!
2861
- \*****************************************/
2825
+ /***/ "./static/vra5-preclearance.json":
2826
+ /*!***************************************!*\
2827
+ !*** ./static/vra5-preclearance.json ***!
2828
+ \***************************************/
2862
2829
  /***/ ((module) => {
2863
2830
 
2864
- module.exports = require("@dra2020/racial-voting");;
2831
+ module.exports = JSON.parse('{"AL":"all","AK":"all","AZ":"all","CA":"parts","FL":"parts","GA":"all","LA":"all","MI":"parts","MS":"all","NY":"parts","NC":"parts","SC":"all","SD":"parts","TX":"all","VA":"all"}');
2865
2832
 
2866
2833
  /***/ })
2867
2834
 
@@ -2873,8 +2840,9 @@ module.exports = require("@dra2020/racial-voting");;
2873
2840
  /******/ // The require function
2874
2841
  /******/ function __webpack_require__(moduleId) {
2875
2842
  /******/ // Check if module is in cache
2876
- /******/ if(__webpack_module_cache__[moduleId]) {
2877
- /******/ return __webpack_module_cache__[moduleId].exports;
2843
+ /******/ var cachedModule = __webpack_module_cache__[moduleId];
2844
+ /******/ if (cachedModule !== undefined) {
2845
+ /******/ return cachedModule.exports;
2878
2846
  /******/ }
2879
2847
  /******/ // Create a new module (and put it into the cache)
2880
2848
  /******/ var module = __webpack_module_cache__[moduleId] = {
@@ -2891,10 +2859,13 @@ module.exports = require("@dra2020/racial-voting");;
2891
2859
  /******/ }
2892
2860
  /******/
2893
2861
  /************************************************************************/
2894
- /******/ // module exports must be returned from runtime so entry inlining is disabled
2862
+ /******/
2895
2863
  /******/ // startup
2896
2864
  /******/ // Load entry module and return exports
2897
- /******/ return __webpack_require__("./src/index.ts");
2865
+ /******/ // This entry module is referenced by other modules so it can't be inlined
2866
+ /******/ var __webpack_exports__ = __webpack_require__("./src/index.ts");
2867
+ /******/
2868
+ /******/ return __webpack_exports__;
2898
2869
  /******/ })()
2899
2870
  ;
2900
2871
  });