@dra2020/baseclient 1.0.69 → 1.0.72

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.
@@ -98,13 +98,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
98
98
  return result;
99
99
  };
100
100
  Object.defineProperty(exports, "__esModule", ({ value: true }));
101
- exports.genDRAColor = exports.defaultDistrictsPalette = exports.getPalette = exports.genColor = exports.PartisanPrecinctClassicColors = exports.EthnicFewClassicColors = exports.ColorValues = void 0;
101
+ exports.getPalette = exports.orderedColors = exports.genColor = exports.defaultDistrictsPalette = exports.EthnicBackgroundColor = exports.CountEthnicBackgroundColor = exports.PartisanDistrictClassicColors = exports.CountPartisanDistrictClassicColors = exports.PartisanPrecinctClassicColors = exports.CountPartisanPrecinctClassicColors = exports.EthnicFewClassicColors = exports.CountEthnicFewClassicColors = exports.ColorValues = exports.DefaultColorNames = exports.MaxClassicColors = exports.MaxColors = exports.MaxOrderedColors = void 0;
102
102
  const JsColorMapsData = __importStar(__webpack_require__(/*! ./jscolormapsdata */ "./lib/colors/jscolormapsdata.ts"));
103
103
  const all_1 = __webpack_require__(/*! ../all/all */ "./lib/all/all.ts");
104
- const MaxOrderedColors = 50;
105
- const MaxColors = MaxOrderedColors * 3;
106
- const MaxClassicColors = 55;
107
- const DefaultColorNames = [
104
+ exports.MaxOrderedColors = 50;
105
+ exports.MaxColors = exports.MaxOrderedColors * 3; // Tied to orderedColors()
106
+ exports.MaxClassicColors = 55;
107
+ exports.DefaultColorNames = [
108
108
  'GhostWhite',
109
109
  'Blue',
110
110
  'Green',
@@ -304,12 +304,16 @@ exports.ColorValues = {
304
304
  'Yellow': '#FFFF00',
305
305
  'YellowGreen': '#9ACD32',
306
306
  };
307
+ // For Demographics scale (4 colors)
308
+ exports.CountEthnicFewClassicColors = 4;
307
309
  exports.EthnicFewClassicColors = [
308
310
  '#fafafa',
309
311
  '#aaaaaa',
310
312
  '#666666',
311
313
  '#111111', //
312
314
  ];
315
+ // For Partisan Precinct Scale (12 colors)
316
+ exports.CountPartisanPrecinctClassicColors = 12;
313
317
  exports.PartisanPrecinctClassicColors = [
314
318
  '#960018',
315
319
  '#FF2020',
@@ -324,78 +328,106 @@ exports.PartisanPrecinctClassicColors = [
324
328
  '#2020FF',
325
329
  '#00008B', // Dark blue
326
330
  ];
331
+ // For Partisan District Scale (12 stops)
332
+ exports.CountPartisanDistrictClassicColors = 12;
333
+ exports.PartisanDistrictClassicColors = [
334
+ '#960018',
335
+ '#960018',
336
+ '#FF2020',
337
+ '#FF2020',
338
+ '#FF6060',
339
+ '#FFDEDE',
340
+ '#DEDEFF',
341
+ '#6060FF',
342
+ '#2020FF',
343
+ '#2020FF',
344
+ '#00008B',
345
+ '#00008B', // .60 <= 1.0
346
+ ];
347
+ // All Groups Mosaic 16 colors
348
+ exports.CountEthnicBackgroundColor = 16;
349
+ exports.EthnicBackgroundColor = [
350
+ '#c0392b',
351
+ '#3498db',
352
+ '#2ecc71',
353
+ '#9b59b6',
354
+ '#d98880',
355
+ '#aed6f1',
356
+ '#abebc6',
357
+ '#bb8fce',
358
+ '#f1c40f',
359
+ '#aab7b8',
360
+ '#d5f5e3',
361
+ '#d6eaf8',
362
+ '#186a3b',
363
+ '#e8daef',
364
+ '#45b39d',
365
+ '#4a235a', // black / asian
366
+ ];
367
+ exports.defaultDistrictsPalette = 'jet_r';
368
+ // Static color tables; lazily populated
327
369
  let ColorTable = {};
328
370
  let OrderedColorTable = {};
329
371
  function genColor(i, useFirstColor, palette) {
330
372
  // i is district number, 0 => District[0] (unassigned), so subtract 1 to access ColorTable
331
- if (!useFirstColor || !palette)
332
- return genDRAColor(i, useFirstColor);
333
373
  if (i == 0)
334
- return exports.ColorValues[DefaultColorNames[0]];
335
- switch (palette) {
336
- case 'jet':
337
- case 'viridis':
338
- case 'magma':
339
- case 'plasma':
340
- case 'bone':
341
- case 'greys':
342
- case 'inferno':
343
- case 'turbo':
344
- default:
345
- return orderedColors(palette)[(i - 1) % MaxOrderedColors];
346
- case 'draclassic':
347
- return genDRAColor(i, useFirstColor);
348
- }
374
+ return exports.ColorValues[exports.DefaultColorNames[0]];
375
+ if (!useFirstColor || !palette || palette === 'draclassic')
376
+ return genDRAColor(i, useFirstColor);
377
+ const colors = orderedColors(palette);
378
+ if (colors.length >= exports.MaxOrderedColors)
379
+ return colors[(i - 1) % exports.MaxOrderedColors];
380
+ // Unexpected to get here, but something in case of an error
381
+ return genDRAColor(i, useFirstColor);
349
382
  }
350
383
  exports.genColor = genColor;
351
- function getPalette(palette) {
352
- if (palette === 'draclassic') {
353
- // return draclassic palette with only 30 colors
354
- let colors = [];
355
- for (let i = 1; i < 30; i++)
356
- colors.push(genDRAColor(i, true));
357
- return colors;
384
+ // DRA classic color palette
385
+ function genDRAColor(i, useFirstColor) {
386
+ // i is district number, 0 => District[0] (unassigned), so subtract 1 to access ColorTable
387
+ function gen_table() {
388
+ ColorTable['draclassic'] = [];
389
+ for (let i = 0; i < exports.MaxClassicColors; i++) {
390
+ // A little funky math below to skip the first (white) color
391
+ let j = (i % (exports.DefaultColorNames.length - 1)) + 1;
392
+ ColorTable['draclassic'].push(exports.ColorValues[exports.DefaultColorNames[j]]);
393
+ }
358
394
  }
359
- return getColorTable(palette);
395
+ if (!ColorTable['draclassic'])
396
+ gen_table();
397
+ if (i == 0)
398
+ return exports.ColorValues[exports.DefaultColorNames[0]];
399
+ return ColorTable['draclassic'][((i - 1) + (useFirstColor ? 0 : 1)) % exports.MaxClassicColors];
360
400
  }
361
- exports.getPalette = getPalette;
362
401
  const DistrictsColorOrder = [0, 49, 24, 36, 12, 42, 6, 30, 18, 45, 3, 27, 9, 33, 15, 46, 21, 39, 4, 28, 10, 34, 16, 48, 22, 40, 5, 29, 11, 35, 17, 1, 23, 41,
363
402
  7, 31, 13, 37, 19, 47, 25, 43, 8, 32, 14, 38, 2, 20, 26, 44];
364
403
  function orderedColors(palette) {
365
404
  const colors = getPalette(palette);
366
405
  if (!OrderedColorTable[palette]) {
367
406
  OrderedColorTable[palette] = [];
368
- for (let i = 0; i < MaxColors; i++) {
407
+ for (let i = 0; i < exports.MaxColors; i++) {
369
408
  OrderedColorTable[palette].push(colors[DistrictsColorOrder[i] * 3]);
370
409
  }
371
410
  }
372
411
  return OrderedColorTable[palette];
373
412
  }
374
- exports.defaultDistrictsPalette = 'jet_r';
375
- // DRA classic color palette
376
- function genDRAColor(i, useFirstColor) {
377
- // i is district number, 0 => District[0] (unassigned), so subtract 1 to access ColorTable
378
- function gen_table() {
379
- ColorTable['draclassic'] = [];
380
- for (let i = 0; i < MaxClassicColors; i++) {
381
- // A little funky math below to skip the first (white) color
382
- let j = (i % (DefaultColorNames.length - 1)) + 1;
383
- ColorTable['draclassic'].push(exports.ColorValues[DefaultColorNames[j]]);
384
- }
413
+ exports.orderedColors = orderedColors;
414
+ function getPalette(palette) {
415
+ if (palette === 'draclassic') {
416
+ // return draclassic palette with only 50 colors
417
+ let colors = [];
418
+ for (let i = 1; i < exports.MaxOrderedColors; i++)
419
+ colors.push(genDRAColor(i, true));
420
+ return colors;
385
421
  }
386
- if (ColorTable == null)
387
- gen_table();
388
- if (i == 0)
389
- return exports.ColorValues[DefaultColorNames[0]];
390
- return ColorTable['draclassic'][((i - 1) + (useFirstColor ? 0 : 1)) % MaxClassicColors];
422
+ return getColorTable(palette);
391
423
  }
392
- exports.genDRAColor = genDRAColor;
424
+ exports.getPalette = getPalette;
393
425
  // Generate table for palette
394
426
  function getColorTable(palette) {
395
427
  if (palette === 'demographicsclassic') {
396
428
  if (!ColorTable[palette]) {
397
429
  ColorTable[palette] = [];
398
- for (let i = 0; i < 4; i++)
430
+ for (let i = 0; i < exports.CountEthnicFewClassicColors; i++)
399
431
  ColorTable[palette].push(exports.EthnicFewClassicColors[i]);
400
432
  }
401
433
  return ColorTable[palette];
@@ -403,14 +435,30 @@ function getColorTable(palette) {
403
435
  else if (palette === 'partisanclassic') {
404
436
  if (!ColorTable[palette]) {
405
437
  ColorTable[palette] = [];
406
- for (let i = 0; i < 12; i++)
438
+ for (let i = 0; i < exports.CountPartisanPrecinctClassicColors; i++)
407
439
  ColorTable[palette].push(exports.PartisanPrecinctClassicColors[i]);
408
440
  }
409
441
  return ColorTable[palette];
410
442
  }
443
+ else if (palette === 'partisandistrictsclassic') {
444
+ if (!ColorTable[palette]) {
445
+ ColorTable[palette] = [];
446
+ for (let i = 0; i < exports.CountPartisanDistrictClassicColors; i++)
447
+ ColorTable[palette].push(exports.PartisanDistrictClassicColors[i]);
448
+ }
449
+ return ColorTable[palette];
450
+ }
451
+ else if (palette === 'allgroupsclassic') {
452
+ if (!ColorTable[palette]) {
453
+ ColorTable[palette] = [];
454
+ for (let i = 0; i < exports.CountEthnicBackgroundColor; i++)
455
+ ColorTable[palette].push(exports.EthnicBackgroundColor[i]);
456
+ return ColorTable[palette];
457
+ }
458
+ }
411
459
  if (allPaletteNames.includes(palette)) {
412
460
  if (!ColorTable[palette])
413
- ColorTable[palette] = jscolormap(palette, MaxColors);
461
+ ColorTable[palette] = jscolormap(palette, exports.MaxColors);
414
462
  return ColorTable[palette];
415
463
  }
416
464
  else
@@ -896,6 +944,9 @@ class ParseOne {
896
944
  this.quote = 0;
897
945
  this.nwhite = 0;
898
946
  }
947
+ else if (this.quote) {
948
+ this.tok[this.toklen++] = c;
949
+ }
899
950
  else if (c === Comma || c === Pipe) {
900
951
  this.force = true;
901
952
  this.pushtok();
@@ -2218,6 +2269,8 @@ function mergePolygon(f1, f2) {
2218
2269
  function geoNormalizeCollection(col, options) {
2219
2270
  options = Util.shallowAssignImmutable(NormalizeAll, options);
2220
2271
  // Normalize individual features
2272
+ if (col && Array.isArray(col.features))
2273
+ col.features = col.features.filter((f) => f.properties && f.geometry && f.geometry.coordinates);
2221
2274
  if (col && Array.isArray(col.features))
2222
2275
  col.features.forEach((f) => geoNormalizeFeature(f, options));
2223
2276
  // Ensure ID
@@ -7413,9 +7466,9 @@ function featureRewind(f, options) {
7413
7466
  return null;
7414
7467
  // Has to be an unpacked feature
7415
7468
  if (f.type !== 'Feature')
7416
- throw 'featureRewind: must be a valid GeoJSON feature';
7469
+ return f;
7417
7470
  if (!f.geometry || f.geometry.packed)
7418
- throw 'featureRewind: only valid on unpacked features';
7471
+ return f;
7419
7472
  // Non polygons are simpler
7420
7473
  if (f.geometry.type !== 'Polygon' && f.geometry.type !== 'MultiPolygon')
7421
7474
  return canonicalPoint(f, options);