@kepler.gl/constants 3.1.0-alpha.1 → 3.1.0-alpha.3

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.
@@ -0,0 +1,82 @@
1
+ import { HexColor, MiniColorRange, ValueOf } from '@kepler.gl/types';
2
+ declare type GetColors = (steps: number) => HexColor[];
3
+ declare type GetLinear = () => (n: number) => string;
4
+ export declare type CategoricalPalette = {
5
+ name: string;
6
+ type: 'qualitative';
7
+ category: ValueOf<typeof CATEGORIES>;
8
+ colorBlindSafe: boolean;
9
+ colors: GetColors;
10
+ maxStep: number;
11
+ };
12
+ export declare type SequentialPalette = {
13
+ name: string;
14
+ type: 'sequential' | 'diverging' | 'cyclical';
15
+ category: ValueOf<typeof CATEGORIES>;
16
+ colorBlindSafe: boolean;
17
+ colors: GetColors;
18
+ linear: GetLinear;
19
+ };
20
+ export declare type ColorPalette = CategoricalPalette | SequentialPalette;
21
+ export declare const CATEGORIES: {
22
+ COLORBREWER: string;
23
+ D3: string;
24
+ UBER: string;
25
+ COLORBLIND: string;
26
+ };
27
+ export declare const PALETTE_TYPES: {
28
+ SEQ: 'sequential';
29
+ QUA: 'qualitative';
30
+ DIV: 'diverging';
31
+ CYC: 'cyclical';
32
+ };
33
+ export declare const COLORBREWER_SCHEME: {
34
+ sequential: string[];
35
+ diverging: string[];
36
+ qualitative: string[];
37
+ };
38
+ export declare const D3_COLOR_CHROMATIC_SCHEME: {
39
+ cyclical: string[];
40
+ sequential: string[];
41
+ qualitative: string[];
42
+ };
43
+ export declare const DataVizColors: {
44
+ aqua: string;
45
+ tumbleweed: string;
46
+ mule_fawn: string;
47
+ tree_poppy: string;
48
+ flame: string;
49
+ sapphire: string;
50
+ orchid: string;
51
+ chathams_blue: string;
52
+ med_aquamarine: string;
53
+ crocodile: string;
54
+ java: string;
55
+ chalky: string;
56
+ light_taupe: string;
57
+ peach_orange: string;
58
+ apricot: string;
59
+ portage: string;
60
+ light_orchid: string;
61
+ blue_green: string;
62
+ bermuda: string;
63
+ cloudy: string;
64
+ };
65
+ /**
66
+ * Build Categorical color palette
67
+ */
68
+ export declare function buildCategoricalPalette({ name, category, colors, colorBlindSafe }: {
69
+ name: string;
70
+ category: ValueOf<typeof CATEGORIES>;
71
+ colors?: HexColor[];
72
+ colorBlindSafe?: boolean;
73
+ }): CategoricalPalette;
74
+ export declare const KEPLER_COLOR_PALETTES: ColorPalette[];
75
+ /**
76
+ * create color range from palette, with steps and reversed as config
77
+ */
78
+ export declare function colorPaletteToColorRange(colorPalette: ColorPalette, colorConfig: {
79
+ reversed: boolean;
80
+ steps: number;
81
+ }): MiniColorRange;
82
+ export {};
@@ -0,0 +1,440 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.PALETTE_TYPES = exports.KEPLER_COLOR_PALETTES = exports.DataVizColors = exports.D3_COLOR_CHROMATIC_SCHEME = exports.COLORBREWER_SCHEME = exports.CATEGORIES = void 0;
9
+ exports.buildCategoricalPalette = buildCategoricalPalette;
10
+ exports.colorPaletteToColorRange = colorPaletteToColorRange;
11
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
+ var d3ScaleChromatic = _interopRequireWildcard(require("d3-scale-chromatic"));
15
+ var _d3Array = require("d3-array");
16
+ var _chromaJs = _interopRequireDefault(require("chroma-js"));
17
+ var _console = _interopRequireDefault(require("global/console"));
18
+ var _d3Color = require("d3-color");
19
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
20
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
21
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
22
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } // SPDX-License-Identifier: MIT
23
+ // Copyright contributors to the kepler.gl project
24
+ // linear interpolator
25
+
26
+ var CATEGORIES = exports.CATEGORIES = {
27
+ COLORBREWER: 'ColorBrewer',
28
+ D3: 'D3',
29
+ UBER: 'Uber',
30
+ COLORBLIND: 'ColorBlind'
31
+ };
32
+ var PALETTE_TYPES = exports.PALETTE_TYPES = {
33
+ SEQ: 'sequential',
34
+ QUA: 'qualitative',
35
+ DIV: 'diverging',
36
+ CYC: 'cyclical'
37
+ };
38
+ var COLORBREWER_SCHEME = exports.COLORBREWER_SCHEME = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, PALETTE_TYPES.SEQ, ['BuGn', 'BuPu', 'GnBu', 'OrRd', 'PuBu', 'PuBuGn', 'PuRd', 'RdPu', 'YlGn', 'YlGnBu', 'YlOrBr', 'YlOrRd', 'Blues', 'Greens', 'Greys', 'Oranges', 'Purples', 'Reds']), PALETTE_TYPES.DIV, ['BrBG', 'PiYG', 'PRGn', 'PuOr', 'RdBu', 'RdGy', 'RdYlBu', 'RdYlGn', 'Spectral']), PALETTE_TYPES.QUA, ['Accent', 'Dark2', 'Paired', 'Pastel1', 'Pastel2', 'Set1', 'Set2', 'Set3']);
39
+
40
+ // https://rdrr.io/cran/RColorBrewer/man/ColorBrewer.html
41
+ var COLOR_BLIND_SAFE_MAP = {
42
+ // colorbrewer
43
+ BrBG: true,
44
+ PiYG: true,
45
+ PRGn: true,
46
+ PuOr: true,
47
+ RdBu: true,
48
+ RdGy: false,
49
+ RdYlBu: true,
50
+ RdYlGn: false,
51
+ Spectral: false,
52
+ Accent: false,
53
+ Dark2: true,
54
+ Paired: true,
55
+ Pastel1: false,
56
+ Pastel2: false,
57
+ Set1: false,
58
+ Set2: true,
59
+ Set3: false,
60
+ Blues: true,
61
+ BuGn: true,
62
+ BuPu: true,
63
+ GnBu: true,
64
+ Greens: true,
65
+ Greys: true,
66
+ Oranges: true,
67
+ OrRd: true,
68
+ PuBu: true,
69
+ PuBuGn: true,
70
+ PuRd: true,
71
+ Purples: true,
72
+ RdPu: true,
73
+ Reds: true,
74
+ YlGn: true,
75
+ YlGnBu: true,
76
+ YlOrBr: true,
77
+ YlOrRd: true,
78
+ // d3 scale chromatic
79
+ Sinebow: true,
80
+ Rainbow: false,
81
+ Turbo: true,
82
+ Viridis: true,
83
+ Inferno: true,
84
+ Magma: true,
85
+ Plasma: true,
86
+ Cividis: true,
87
+ Warm: true,
88
+ Cool: false,
89
+ CubehelixDefault: true,
90
+ Tableau10: false
91
+ };
92
+ var D3_COLOR_CHROMATIC_SCHEME = exports.D3_COLOR_CHROMATIC_SCHEME = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, PALETTE_TYPES.CYC, ['Sinebow', 'Rainbow']), PALETTE_TYPES.SEQ, ['Turbo', 'Viridis', 'Inferno', 'Magma', 'Plasma', 'Cividis', 'Warm', 'Cool', 'CubehelixDefault']), PALETTE_TYPES.QUA, ['Tableau10']);
93
+ var DataVizColors = exports.DataVizColors = {
94
+ aqua: '#12939A',
95
+ tumbleweed: '#DDB27C',
96
+ mule_fawn: '#88572C',
97
+ tree_poppy: '#FF991F',
98
+ flame: '#F15C17',
99
+ sapphire: '#223F9A',
100
+ orchid: '#DA70BF',
101
+ chathams_blue: '#125C77',
102
+ med_aquamarine: '#4DC19C',
103
+ crocodile: '#776E57',
104
+ java: '#17B8BE',
105
+ chalky: '#F6D18A',
106
+ light_taupe: '#B7885E',
107
+ peach_orange: '#FFCB99',
108
+ apricot: '#F89570',
109
+ portage: '#829AE3',
110
+ light_orchid: '#E79FD5',
111
+ blue_green: '#1E96BE',
112
+ bermuda: '#89DAC1',
113
+ cloudy: '#B3AD9E'
114
+ };
115
+ var UberVizDiverging = {
116
+ name: 'Uber Viz Diverging',
117
+ category: CATEGORIES.UBER,
118
+ type: PALETTE_TYPES.DIV,
119
+ colors: ['#00939C', '#E6FAFA'],
120
+ colors2: ['#FEEEE8', '#C22E00'],
121
+ diverging: true,
122
+ correctLightness: false,
123
+ colorBlindSafe: true
124
+ };
125
+ var UberVizSequential = {
126
+ name: 'Uber Viz Sequential',
127
+ category: CATEGORIES.UBER,
128
+ type: PALETTE_TYPES.SEQ,
129
+ colors: ['#00939C', '#E6FAFA'],
130
+ colorBlindSafe: true
131
+ };
132
+ var UberPool = {
133
+ name: 'UberPool',
134
+ type: PALETTE_TYPES.DIV,
135
+ category: CATEGORIES.UBER,
136
+ colors: ['#223F9A', '#CF1750', '#FAE300'],
137
+ correctLightness: false,
138
+ colorBlindSafe: true
139
+ };
140
+ var IceAndFire = {
141
+ name: 'Ice And Fire',
142
+ type: PALETTE_TYPES.DIV,
143
+ category: CATEGORIES.UBER,
144
+ colors: ['#0198BD', '#FAFEB3'],
145
+ colors2: ['#FEEDB1', '#D50255'],
146
+ diverging: true,
147
+ colorBlindSafe: true
148
+ };
149
+ var GlobalWarming = {
150
+ name: 'Global Warming',
151
+ type: PALETTE_TYPES.SEQ,
152
+ category: CATEGORIES.UBER,
153
+ colors: ['#4C0035', '#AC1C17', '#FFC300'],
154
+ colorBlindSafe: true
155
+ };
156
+ var Sunrise = {
157
+ name: 'Sunrise',
158
+ type: PALETTE_TYPES.SEQ,
159
+ category: CATEGORIES.UBER,
160
+ colors: ['#355C7D', '#C06C84', '#F8B195'],
161
+ colorBlindSafe: true
162
+ };
163
+ var OceanGreen = {
164
+ name: 'Ocean Green',
165
+ type: PALETTE_TYPES.SEQ,
166
+ category: CATEGORIES.UBER,
167
+ colors: ['#37535E', '#3EACA8', '#E5EEC1'],
168
+ colorBlindSafe: true
169
+ };
170
+ var PinkWine = {
171
+ name: 'Pink Wine',
172
+ type: PALETTE_TYPES.SEQ,
173
+ category: CATEGORIES.UBER,
174
+ colors: ['#2C1E3D', '#956485', '#EDD1CA'],
175
+ colorBlindSafe: true
176
+ };
177
+ var PurpleBlueYellow = {
178
+ name: 'Purple Blue Yellow',
179
+ type: PALETTE_TYPES.SEQ,
180
+ category: CATEGORIES.UBER,
181
+ colors: ['#383C65', '#49838A', '#D6DEBF'],
182
+ mode: 'hsl',
183
+ colorBlindSafe: true
184
+ };
185
+ var ViovetOcean = {
186
+ name: 'ViovetOcean',
187
+ type: PALETTE_TYPES.SEQ,
188
+ category: CATEGORIES.UBER,
189
+ colors: ['#7400B8', '#5E60CE', '#4EA8DE', '#56CFE1', '#72EFDD'],
190
+ colorBlindSafe: false
191
+ };
192
+ var SummerSky = {
193
+ name: 'SummerSky',
194
+ type: PALETTE_TYPES.SEQ,
195
+ category: CATEGORIES.UBER,
196
+ colors: ['#184E77', '#168AAD', '#76C893', '#D9ED92'],
197
+ colorBlindSafe: false
198
+ };
199
+ var UberVizQualitative = {
200
+ name: 'Uber Viz Qualitative',
201
+ type: PALETTE_TYPES.QUA,
202
+ category: CATEGORIES.UBER,
203
+ colors: Object.values(DataVizColors),
204
+ colorBlindSafe: false
205
+ };
206
+
207
+ // https://personal.sron.nl/~pault/#sec:qualitative
208
+ // A set of Qualitative Colors designed by Paul Tol that are color blind friendly
209
+ var TolBright = {
210
+ name: 'Tol Bright',
211
+ type: PALETTE_TYPES.QUA,
212
+ category: CATEGORIES.COLORBLIND,
213
+ colors: ['#4477AA', '#EE6677', '#228833', '#CCBB44', '#66CCEE', '#AA3377', '#BBBBBB'],
214
+ colorBlindSafe: true
215
+ };
216
+ // Bad Data: #BBBBBB
217
+
218
+ var TolVibrant = {
219
+ name: 'Tol Vibrant',
220
+ type: PALETTE_TYPES.QUA,
221
+ category: CATEGORIES.COLORBLIND,
222
+ colors: ['#EE7733', '#0077BB', '#33BBEE', '#EE3377', '#CC3311', '#009988', '#BBBBBB'],
223
+ colorBlindSafe: true
224
+ };
225
+ // Bad Data: #BBBBBB
226
+
227
+ var TolMuted = {
228
+ name: 'Tol Muted',
229
+ type: PALETTE_TYPES.QUA,
230
+ category: CATEGORIES.COLORBLIND,
231
+ colors: ['#CC6677', '#332288', '#DDCC77', '#117733', '#88CCEE', '#882255', '#44AA99', '#999933', '#AA4499'],
232
+ colorBlindSafe: true
233
+ };
234
+ // Bad Data: #DDDDDD
235
+
236
+ var TolMediumContrast = {
237
+ name: 'Tol Medium Contrast',
238
+ type: PALETTE_TYPES.QUA,
239
+ category: CATEGORIES.COLORBLIND,
240
+ colors: ['#6699CC', '#004488', '#EECC66', '#994455', '#997700', '#EE99AA'],
241
+ colorBlindSafe: true
242
+ };
243
+ var TolLight = {
244
+ name: 'Tol Light',
245
+ type: PALETTE_TYPES.QUA,
246
+ category: CATEGORIES.COLORBLIND,
247
+ colors: ['#77AADD', '#EE8866', '#EEDD88', '#FFAABB', '#99DDFF', '#44BB99', '#BBCC33', '#AAAA00'],
248
+ colorBlindSafe: true
249
+ };
250
+
251
+ // https://jfly.uni-koeln.de/color/
252
+ var OkabeIto = {
253
+ name: 'Okabe Ito',
254
+ type: PALETTE_TYPES.QUA,
255
+ category: CATEGORIES.COLORBLIND,
256
+ colors: ['#E69F00', '#56B4E9', '#009E73', '#F0E442', '#0072B2', '#D55E00', '#CC79A7', '#000000'],
257
+ colorBlindSafe: true
258
+ };
259
+ // Bad Data: #DDDDDD
260
+
261
+ /**
262
+ * Build Categorical color palette
263
+ */
264
+ function buildCategoricalPalette(_ref) {
265
+ var name = _ref.name,
266
+ category = _ref.category,
267
+ colors = _ref.colors,
268
+ colorBlindSafe = _ref.colorBlindSafe;
269
+ var allColors;
270
+ // find d3 color scheme
271
+ var scheme = d3ScaleChromatic["scheme".concat(name)];
272
+ if (!scheme && !colors) {
273
+ _console["default"].warn("scheme".concat(name, " cant not be found in d3 scale chromatic, needs to provide colors"));
274
+ allColors = ['#DDDDDD'];
275
+ } else if (!scheme) {
276
+ // build from colors
277
+ allColors = colors;
278
+ } else {
279
+ allColors = scheme;
280
+ }
281
+ if (!allColors.length) {
282
+ _console["default"].warn('Needs to provide valid d3 color scheme name or an array of colors');
283
+ }
284
+ return {
285
+ name: name,
286
+ category: category,
287
+ type: PALETTE_TYPES.QUA,
288
+ colorBlindSafe: colorBlindSafe !== null && colorBlindSafe !== void 0 ? colorBlindSafe : COLOR_BLIND_SAFE_MAP[name],
289
+ maxStep: allColors.length,
290
+ colors: function colors(numColors) {
291
+ // if numColors > maxSteps, will return allColors
292
+ return allColors.slice(0, numColors).map(_colorToUppercase);
293
+ }
294
+ };
295
+ }
296
+ function _colorToUppercase(c) {
297
+ return (0, _d3Color.color)(c).formatHex().toUpperCase();
298
+ }
299
+ /**
300
+ * All sequantial palette is based on palette in d3-scale-chromatic
301
+ * https://github.com/d3/d3-scale-chromatic/blob/main/src/index.js
302
+ */
303
+ function buildSequentialPalette(_ref2) {
304
+ var name = _ref2.name,
305
+ type = _ref2.type,
306
+ category = _ref2.category;
307
+ if (!Object.prototype.hasOwnProperty.call(COLOR_BLIND_SAFE_MAP, name)) {
308
+ _console["default"].warn("".concat(name, " does not exists in COLOR_BLIND_SAFE_MAP"));
309
+ }
310
+ var interpolator = d3ScaleChromatic["interpolate".concat(name)];
311
+ return {
312
+ name: name,
313
+ type: type,
314
+ category: category,
315
+ colorBlindSafe: COLOR_BLIND_SAFE_MAP[name],
316
+ colors: function colors(numColors) {
317
+ return (0, _d3Array.range)(0, numColors, 1).map(function (d) {
318
+ return interpolator(d / (numColors - 1));
319
+ }).map(_colorToUppercase);
320
+ },
321
+ linear: function linear() {
322
+ return interpolator;
323
+ }
324
+ };
325
+ }
326
+ function buildCustomPalette(_ref3) {
327
+ var colors = _ref3.colors,
328
+ _ref3$colors = _ref3.colors2,
329
+ colors2 = _ref3$colors === void 0 ? [] : _ref3$colors,
330
+ _ref3$correctLightnes = _ref3.correctLightness,
331
+ correctLightness = _ref3$correctLightnes === void 0 ? true : _ref3$correctLightnes,
332
+ _ref3$bezier = _ref3.bezier,
333
+ bezier = _ref3$bezier === void 0 ? false : _ref3$bezier,
334
+ _ref3$diverging = _ref3.diverging,
335
+ diverging = _ref3$diverging === void 0 ? false : _ref3$diverging,
336
+ _ref3$mode = _ref3.mode,
337
+ mode = _ref3$mode === void 0 ? 'lch' : _ref3$mode,
338
+ name = _ref3.name,
339
+ type = _ref3.type,
340
+ category = _ref3.category,
341
+ colorBlindSafe = _ref3.colorBlindSafe;
342
+ var palette = {
343
+ name: name,
344
+ type: type,
345
+ category: category,
346
+ colorBlindSafe: colorBlindSafe,
347
+ colors: function colors() {
348
+ return [];
349
+ },
350
+ linear: function linear() {
351
+ return function () {
352
+ return '';
353
+ };
354
+ }
355
+ };
356
+ if (!colors.length) {
357
+ _console["default"].error('colors has to be an array of colors');
358
+ return;
359
+ }
360
+ var scaleLeft = _chromaJs["default"].scale(bezier && colors.length > 1 ? _chromaJs["default"].bezier(colors) : colors).mode(mode).correctLightness(correctLightness);
361
+ var scaleRight;
362
+ var scaleFull;
363
+ if (diverging) {
364
+ if (!colors.length) {
365
+ _console["default"].error('colors2 has to be an array of colors when diverging = true');
366
+ return;
367
+ }
368
+ scaleRight = _chromaJs["default"].scale(bezier && colors2.length > 1 ? _chromaJs["default"].bezier(colors2) : colors2).mode(mode).correctLightness(correctLightness);
369
+ scaleFull = _chromaJs["default"].scale(bezier ? _chromaJs["default"].bezier(colors.concat(colors2)) : colors.concat(colors2)).mode(mode).correctLightness(correctLightness);
370
+ }
371
+
372
+ // return numColors => (scaleLeft ? stepsLeft.colors(numColors) : []);
373
+
374
+ // given number of colors return color steps
375
+ palette.colors = function (numColors) {
376
+ if (diverging) {
377
+ var even = numColors % 2 === 0;
378
+ var numColorsLeft = Math.ceil(numColors / 2) + (even ? 1 : 0);
379
+ var numColorsRight = Math.ceil(numColors / 2) + (even ? 1 : 0);
380
+ var colorsLeft = scaleLeft ? scaleLeft.colors(numColorsLeft) : [];
381
+ var colorsRight = scaleRight ? scaleRight.colors(numColorsRight) : [];
382
+ var _steps = (even ? colorsLeft.slice(0, colorsLeft.length - 1) : colorsLeft).concat(colorsRight.slice(1)).map(_colorToUppercase);
383
+ return _steps;
384
+ }
385
+ return scaleLeft ? scaleLeft.colors(numColors).map(_colorToUppercase) : [];
386
+ };
387
+ palette.linear = function () {
388
+ return diverging ? scaleFull : scaleLeft;
389
+ };
390
+ return palette;
391
+ }
392
+ function buildPaletteBySchemeGroups(schemeGroups, category) {
393
+ return Object.entries(schemeGroups).reduce(function (accu, _ref4) {
394
+ var _ref5 = (0, _slicedToArray2["default"])(_ref4, 2),
395
+ type = _ref5[0],
396
+ palettes = _ref5[1];
397
+ return [].concat((0, _toConsumableArray2["default"])(accu), (0, _toConsumableArray2["default"])(palettes.reduce(function (group, name) {
398
+ var colorPalette = type === PALETTE_TYPES.QUA ? buildCategoricalPalette({
399
+ name: name,
400
+ category: category
401
+ }) :
402
+ // @ts-ignore jsdoc cant figure out type of 'type'
403
+ buildSequentialPalette({
404
+ name: name,
405
+ type: type,
406
+ category: category
407
+ });
408
+ // @ts-ignore type is not assignable to never[]
409
+ group.push(colorPalette);
410
+ return group;
411
+ }, [])));
412
+ }, []);
413
+ }
414
+ var COLORBREWER_PALETTES = buildPaletteBySchemeGroups(COLORBREWER_SCHEME, CATEGORIES.COLORBREWER);
415
+ var D3_COLOR_PALETTES = buildPaletteBySchemeGroups(D3_COLOR_CHROMATIC_SCHEME, CATEGORIES.D3);
416
+ var UBER_PALETTES = [UberVizDiverging, UberVizSequential, UberPool, IceAndFire, GlobalWarming, Sunrise, OceanGreen, PinkWine, PurpleBlueYellow, ViovetOcean, SummerSky, UberVizQualitative, TolBright, TolVibrant, TolMuted, TolMediumContrast, TolLight, OkabeIto].map(function (recipe) {
417
+ return recipe.type === PALETTE_TYPES.QUA ? buildCategoricalPalette(recipe) : buildCustomPalette(recipe);
418
+ }).filter(Boolean);
419
+ var KEPLER_COLOR_PALETTES = exports.KEPLER_COLOR_PALETTES = [].concat((0, _toConsumableArray2["default"])(UBER_PALETTES), (0, _toConsumableArray2["default"])(COLORBREWER_PALETTES), (0, _toConsumableArray2["default"])(D3_COLOR_PALETTES));
420
+
421
+ /**
422
+ * create color range from palette, with steps and reversed as config
423
+ */
424
+ function colorPaletteToColorRange(colorPalette, colorConfig) {
425
+ var steps = colorConfig.steps,
426
+ reversed = colorConfig.reversed;
427
+ var colors = colorPalette.colors(steps).slice();
428
+ if (reversed) {
429
+ colors.reverse();
430
+ }
431
+ return _objectSpread({
432
+ name: colorPalette.name,
433
+ type: colorPalette.type,
434
+ category: colorPalette.category,
435
+ colors: colors
436
+ }, reversed ? {
437
+ reversed: reversed
438
+ } : {});
439
+ }
440
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkM1NjYWxlQ2hyb21hdGljIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX2QzQXJyYXkiLCJfY2hyb21hSnMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2NvbnNvbGUiLCJfZDNDb2xvciIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIkNBVEVHT1JJRVMiLCJleHBvcnRzIiwiQ09MT1JCUkVXRVIiLCJEMyIsIlVCRVIiLCJDT0xPUkJMSU5EIiwiUEFMRVRURV9UWVBFUyIsIlNFUSIsIlFVQSIsIkRJViIsIkNZQyIsIkNPTE9SQlJFV0VSX1NDSEVNRSIsIkNPTE9SX0JMSU5EX1NBRkVfTUFQIiwiQnJCRyIsIlBpWUciLCJQUkduIiwiUHVPciIsIlJkQnUiLCJSZEd5IiwiUmRZbEJ1IiwiUmRZbEduIiwiU3BlY3RyYWwiLCJBY2NlbnQiLCJEYXJrMiIsIlBhaXJlZCIsIlBhc3RlbDEiLCJQYXN0ZWwyIiwiU2V0MSIsIlNldDIiLCJTZXQzIiwiQmx1ZXMiLCJCdUduIiwiQnVQdSIsIkduQnUiLCJHcmVlbnMiLCJHcmV5cyIsIk9yYW5nZXMiLCJPclJkIiwiUHVCdSIsIlB1QnVHbiIsIlB1UmQiLCJQdXJwbGVzIiwiUmRQdSIsIlJlZHMiLCJZbEduIiwiWWxHbkJ1IiwiWWxPckJyIiwiWWxPclJkIiwiU2luZWJvdyIsIlJhaW5ib3ciLCJUdXJibyIsIlZpcmlkaXMiLCJJbmZlcm5vIiwiTWFnbWEiLCJQbGFzbWEiLCJDaXZpZGlzIiwiV2FybSIsIkNvb2wiLCJDdWJlaGVsaXhEZWZhdWx0IiwiVGFibGVhdTEwIiwiRDNfQ09MT1JfQ0hST01BVElDX1NDSEVNRSIsIkRhdGFWaXpDb2xvcnMiLCJhcXVhIiwidHVtYmxld2VlZCIsIm11bGVfZmF3biIsInRyZWVfcG9wcHkiLCJmbGFtZSIsInNhcHBoaXJlIiwib3JjaGlkIiwiY2hhdGhhbXNfYmx1ZSIsIm1lZF9hcXVhbWFyaW5lIiwiY3JvY29kaWxlIiwiamF2YSIsImNoYWxreSIsImxpZ2h0X3RhdXBlIiwicGVhY2hfb3JhbmdlIiwiYXByaWNvdCIsInBvcnRhZ2UiLCJsaWdodF9vcmNoaWQiLCJibHVlX2dyZWVuIiwiYmVybXVkYSIsImNsb3VkeSIsIlViZXJWaXpEaXZlcmdpbmciLCJuYW1lIiwiY2F0ZWdvcnkiLCJ0eXBlIiwiY29sb3JzIiwiY29sb3JzMiIsImRpdmVyZ2luZyIsImNvcnJlY3RMaWdodG5lc3MiLCJjb2xvckJsaW5kU2FmZSIsIlViZXJWaXpTZXF1ZW50aWFsIiwiVWJlclBvb2wiLCJJY2VBbmRGaXJlIiwiR2xvYmFsV2FybWluZyIsIlN1bnJpc2UiLCJPY2VhbkdyZWVuIiwiUGlua1dpbmUiLCJQdXJwbGVCbHVlWWVsbG93IiwibW9kZSIsIlZpb3ZldE9jZWFuIiwiU3VtbWVyU2t5IiwiVWJlclZpelF1YWxpdGF0aXZlIiwidmFsdWVzIiwiVG9sQnJpZ2h0IiwiVG9sVmlicmFudCIsIlRvbE11dGVkIiwiVG9sTWVkaXVtQ29udHJhc3QiLCJUb2xMaWdodCIsIk9rYWJlSXRvIiwiYnVpbGRDYXRlZ29yaWNhbFBhbGV0dGUiLCJfcmVmIiwiYWxsQ29sb3JzIiwic2NoZW1lIiwiY29uY2F0IiwiQ29uc29sZSIsIndhcm4iLCJtYXhTdGVwIiwibnVtQ29sb3JzIiwic2xpY2UiLCJtYXAiLCJfY29sb3JUb1VwcGVyY2FzZSIsImMiLCJkM0NvbG9yIiwiZm9ybWF0SGV4IiwidG9VcHBlckNhc2UiLCJidWlsZFNlcXVlbnRpYWxQYWxldHRlIiwiX3JlZjIiLCJwcm90b3R5cGUiLCJpbnRlcnBvbGF0b3IiLCJyYW5nZSIsImQiLCJsaW5lYXIiLCJidWlsZEN1c3RvbVBhbGV0dGUiLCJfcmVmMyIsIl9yZWYzJGNvbG9ycyIsIl9yZWYzJGNvcnJlY3RMaWdodG5lcyIsIl9yZWYzJGJlemllciIsImJlemllciIsIl9yZWYzJGRpdmVyZ2luZyIsIl9yZWYzJG1vZGUiLCJwYWxldHRlIiwiZXJyb3IiLCJzY2FsZUxlZnQiLCJjaHJvbWEiLCJzY2FsZSIsInNjYWxlUmlnaHQiLCJzY2FsZUZ1bGwiLCJldmVuIiwibnVtQ29sb3JzTGVmdCIsIk1hdGgiLCJjZWlsIiwibnVtQ29sb3JzUmlnaHQiLCJjb2xvcnNMZWZ0IiwiY29sb3JzUmlnaHQiLCJzdGVwcyIsImJ1aWxkUGFsZXR0ZUJ5U2NoZW1lR3JvdXBzIiwic2NoZW1lR3JvdXBzIiwiZW50cmllcyIsInJlZHVjZSIsImFjY3UiLCJfcmVmNCIsIl9yZWY1IiwiX3NsaWNlZFRvQXJyYXkyIiwicGFsZXR0ZXMiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiZ3JvdXAiLCJjb2xvclBhbGV0dGUiLCJDT0xPUkJSRVdFUl9QQUxFVFRFUyIsIkQzX0NPTE9SX1BBTEVUVEVTIiwiVUJFUl9QQUxFVFRFUyIsInJlY2lwZSIsIkJvb2xlYW4iLCJLRVBMRVJfQ09MT1JfUEFMRVRURVMiLCJjb2xvclBhbGV0dGVUb0NvbG9yUmFuZ2UiLCJjb2xvckNvbmZpZyIsInJldmVyc2VkIiwicmV2ZXJzZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9jb2xvci1wYWxldHRlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgKiBhcyBkM1NjYWxlQ2hyb21hdGljIGZyb20gJ2QzLXNjYWxlLWNocm9tYXRpYyc7XG5pbXBvcnQge3JhbmdlfSBmcm9tICdkMy1hcnJheSc7XG5pbXBvcnQgY2hyb21hIGZyb20gJ2Nocm9tYS1qcyc7XG5pbXBvcnQgQ29uc29sZSBmcm9tICdnbG9iYWwvY29uc29sZSc7XG5pbXBvcnQge2NvbG9yIGFzIGQzQ29sb3J9IGZyb20gJ2QzLWNvbG9yJztcbmltcG9ydCB7SGV4Q29sb3IsIE1pbmlDb2xvclJhbmdlLCBWYWx1ZU9mfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxudHlwZSBHZXRDb2xvcnMgPSAoc3RlcHM6IG51bWJlcikgPT4gSGV4Q29sb3JbXTtcbi8vIGxpbmVhciBpbnRlcnBvbGF0b3JcbnR5cGUgR2V0TGluZWFyID0gKCkgPT4gKG46IG51bWJlcikgPT4gc3RyaW5nO1xuXG5leHBvcnQgdHlwZSBDYXRlZ29yaWNhbFBhbGV0dGUgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogJ3F1YWxpdGF0aXZlJztcbiAgY2F0ZWdvcnk6IFZhbHVlT2Y8dHlwZW9mIENBVEVHT1JJRVM+O1xuICBjb2xvckJsaW5kU2FmZTogYm9vbGVhbjtcblxuICBjb2xvcnM6IEdldENvbG9ycztcbiAgLy8gY2F0ZWdvcmljYWwgcGFsZXR0ZVxuICBtYXhTdGVwOiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBTZXF1ZW50aWFsUGFsZXR0ZSA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiAnc2VxdWVudGlhbCcgfCAnZGl2ZXJnaW5nJyB8ICdjeWNsaWNhbCc7XG4gIGNhdGVnb3J5OiBWYWx1ZU9mPHR5cGVvZiBDQVRFR09SSUVTPjtcbiAgY29sb3JCbGluZFNhZmU6IGJvb2xlYW47XG4gIGNvbG9yczogR2V0Q29sb3JzO1xuICAvLyBzZXF1ZW50aWFsIHBhbGV0dGVcbiAgbGluZWFyOiBHZXRMaW5lYXI7XG59O1xuXG5leHBvcnQgdHlwZSBDb2xvclBhbGV0dGUgPSBDYXRlZ29yaWNhbFBhbGV0dGUgfCBTZXF1ZW50aWFsUGFsZXR0ZTtcblxuZXhwb3J0IGNvbnN0IENBVEVHT1JJRVMgPSB7XG4gIENPTE9SQlJFV0VSOiAnQ29sb3JCcmV3ZXInLFxuICBEMzogJ0QzJyxcbiAgVUJFUjogJ1ViZXInLFxuICBDT0xPUkJMSU5EOiAnQ29sb3JCbGluZCdcbn07XG5cbmV4cG9ydCBjb25zdCBQQUxFVFRFX1RZUEVTOiB7XG4gIFNFUTogJ3NlcXVlbnRpYWwnO1xuICBRVUE6ICdxdWFsaXRhdGl2ZSc7XG4gIERJVjogJ2RpdmVyZ2luZyc7XG4gIENZQzogJ2N5Y2xpY2FsJztcbn0gPSB7XG4gIFNFUTogJ3NlcXVlbnRpYWwnLFxuICBRVUE6ICdxdWFsaXRhdGl2ZScsXG4gIERJVjogJ2RpdmVyZ2luZycsXG4gIENZQzogJ2N5Y2xpY2FsJ1xufTtcblxuZXhwb3J0IGNvbnN0IENPTE9SQlJFV0VSX1NDSEVNRSA9IHtcbiAgW1BBTEVUVEVfVFlQRVMuU0VRXTogW1xuICAgICdCdUduJyxcbiAgICAnQnVQdScsXG4gICAgJ0duQnUnLFxuICAgICdPclJkJyxcbiAgICAnUHVCdScsXG4gICAgJ1B1QnVHbicsXG4gICAgJ1B1UmQnLFxuICAgICdSZFB1JyxcbiAgICAnWWxHbicsXG4gICAgJ1lsR25CdScsXG4gICAgJ1lsT3JCcicsXG4gICAgJ1lsT3JSZCcsXG4gICAgJ0JsdWVzJyxcbiAgICAnR3JlZW5zJyxcbiAgICAnR3JleXMnLFxuICAgICdPcmFuZ2VzJyxcbiAgICAnUHVycGxlcycsXG4gICAgJ1JlZHMnXG4gIF0sIC8vIDE4ICsgOSArIDhcbiAgLy8gc2luZ2xlaHVlOiBbJ0JsdWVzJywgJ0dyZWVucycsICdHcmV5cycsICdPcmFuZ2VzJywgJ1B1cnBsZXMnLCAnUmVkcyddLFxuICBbUEFMRVRURV9UWVBFUy5ESVZdOiBbXG4gICAgJ0JyQkcnLFxuICAgICdQaVlHJyxcbiAgICAnUFJHbicsXG4gICAgJ1B1T3InLFxuICAgICdSZEJ1JyxcbiAgICAnUmRHeScsXG4gICAgJ1JkWWxCdScsXG4gICAgJ1JkWWxHbicsXG4gICAgJ1NwZWN0cmFsJ1xuICBdLFxuICBbUEFMRVRURV9UWVBFUy5RVUFdOiBbJ0FjY2VudCcsICdEYXJrMicsICdQYWlyZWQnLCAnUGFzdGVsMScsICdQYXN0ZWwyJywgJ1NldDEnLCAnU2V0MicsICdTZXQzJ11cbn07XG5cbi8vIGh0dHBzOi8vcmRyci5pby9jcmFuL1JDb2xvckJyZXdlci9tYW4vQ29sb3JCcmV3ZXIuaHRtbFxuY29uc3QgQ09MT1JfQkxJTkRfU0FGRV9NQVAgPSB7XG4gIC8vIGNvbG9yYnJld2VyXG4gIEJyQkc6IHRydWUsXG4gIFBpWUc6IHRydWUsXG4gIFBSR246IHRydWUsXG4gIFB1T3I6IHRydWUsXG4gIFJkQnU6IHRydWUsXG4gIFJkR3k6IGZhbHNlLFxuICBSZFlsQnU6IHRydWUsXG4gIFJkWWxHbjogZmFsc2UsXG4gIFNwZWN0cmFsOiBmYWxzZSxcbiAgQWNjZW50OiBmYWxzZSxcbiAgRGFyazI6IHRydWUsXG4gIFBhaXJlZDogdHJ1ZSxcbiAgUGFzdGVsMTogZmFsc2UsXG4gIFBhc3RlbDI6IGZhbHNlLFxuICBTZXQxOiBmYWxzZSxcbiAgU2V0MjogdHJ1ZSxcbiAgU2V0MzogZmFsc2UsXG4gIEJsdWVzOiB0cnVlLFxuICBCdUduOiB0cnVlLFxuICBCdVB1OiB0cnVlLFxuICBHbkJ1OiB0cnVlLFxuICBHcmVlbnM6IHRydWUsXG4gIEdyZXlzOiB0cnVlLFxuICBPcmFuZ2VzOiB0cnVlLFxuICBPclJkOiB0cnVlLFxuICBQdUJ1OiB0cnVlLFxuICBQdUJ1R246IHRydWUsXG4gIFB1UmQ6IHRydWUsXG4gIFB1cnBsZXM6IHRydWUsXG4gIFJkUHU6IHRydWUsXG4gIFJlZHM6IHRydWUsXG4gIFlsR246IHRydWUsXG4gIFlsR25CdTogdHJ1ZSxcbiAgWWxPckJyOiB0cnVlLFxuICBZbE9yUmQ6IHRydWUsXG5cbiAgLy8gZDMgc2NhbGUgY2hyb21hdGljXG4gIFNpbmVib3c6IHRydWUsXG4gIFJhaW5ib3c6IGZhbHNlLFxuICBUdXJibzogdHJ1ZSxcbiAgVmlyaWRpczogdHJ1ZSxcbiAgSW5mZXJubzogdHJ1ZSxcbiAgTWFnbWE6IHRydWUsXG4gIFBsYXNtYTogdHJ1ZSxcbiAgQ2l2aWRpczogdHJ1ZSxcbiAgV2FybTogdHJ1ZSxcbiAgQ29vbDogZmFsc2UsXG4gIEN1YmVoZWxpeERlZmF1bHQ6IHRydWUsXG4gIFRhYmxlYXUxMDogZmFsc2Vcbn07XG5cbmV4cG9ydCBjb25zdCBEM19DT0xPUl9DSFJPTUFUSUNfU0NIRU1FID0ge1xuICBbUEFMRVRURV9UWVBFUy5DWUNdOiBbJ1NpbmVib3cnLCAnUmFpbmJvdyddLFxuICBbUEFMRVRURV9UWVBFUy5TRVFdOiBbXG4gICAgJ1R1cmJvJyxcbiAgICAnVmlyaWRpcycsXG4gICAgJ0luZmVybm8nLFxuICAgICdNYWdtYScsXG4gICAgJ1BsYXNtYScsXG4gICAgJ0NpdmlkaXMnLFxuICAgICdXYXJtJyxcbiAgICAnQ29vbCcsXG4gICAgJ0N1YmVoZWxpeERlZmF1bHQnXG4gIF0sXG4gIFtQQUxFVFRFX1RZUEVTLlFVQV06IFsnVGFibGVhdTEwJ11cbn07XG5cbmV4cG9ydCBjb25zdCBEYXRhVml6Q29sb3JzID0ge1xuICBhcXVhOiAnIzEyOTM5QScsXG4gIHR1bWJsZXdlZWQ6ICcjRERCMjdDJyxcbiAgbXVsZV9mYXduOiAnIzg4NTcyQycsXG4gIHRyZWVfcG9wcHk6ICcjRkY5OTFGJyxcbiAgZmxhbWU6ICcjRjE1QzE3JyxcbiAgc2FwcGhpcmU6ICcjMjIzRjlBJyxcbiAgb3JjaGlkOiAnI0RBNzBCRicsXG4gIGNoYXRoYW1zX2JsdWU6ICcjMTI1Qzc3JyxcbiAgbWVkX2FxdWFtYXJpbmU6ICcjNERDMTlDJyxcbiAgY3JvY29kaWxlOiAnIzc3NkU1NycsXG4gIGphdmE6ICcjMTdCOEJFJyxcbiAgY2hhbGt5OiAnI0Y2RDE4QScsXG4gIGxpZ2h0X3RhdXBlOiAnI0I3ODg1RScsXG4gIHBlYWNoX29yYW5nZTogJyNGRkNCOTknLFxuICBhcHJpY290OiAnI0Y4OTU3MCcsXG4gIHBvcnRhZ2U6ICcjODI5QUUzJyxcbiAgbGlnaHRfb3JjaGlkOiAnI0U3OUZENScsXG4gIGJsdWVfZ3JlZW46ICcjMUU5NkJFJyxcbiAgYmVybXVkYTogJyM4OURBQzEnLFxuICBjbG91ZHk6ICcjQjNBRDlFJ1xufTtcblxuY29uc3QgVWJlclZpekRpdmVyZ2luZyA9IHtcbiAgbmFtZTogJ1ViZXIgVml6IERpdmVyZ2luZycsXG4gIGNhdGVnb3J5OiBDQVRFR09SSUVTLlVCRVIsXG4gIHR5cGU6IFBBTEVUVEVfVFlQRVMuRElWLFxuICBjb2xvcnM6IFsnIzAwOTM5QycsICcjRTZGQUZBJ10sXG4gIGNvbG9yczI6IFsnI0ZFRUVFOCcsICcjQzIyRTAwJ10sXG4gIGRpdmVyZ2luZzogdHJ1ZSxcbiAgY29ycmVjdExpZ2h0bmVzczogZmFsc2UsXG4gIGNvbG9yQmxpbmRTYWZlOiB0cnVlXG59O1xuXG5jb25zdCBVYmVyVml6U2VxdWVudGlhbCA9IHtcbiAgbmFtZTogJ1ViZXIgVml6IFNlcXVlbnRpYWwnLFxuICBjYXRlZ29yeTogQ0FURUdPUklFUy5VQkVSLFxuICB0eXBlOiBQQUxFVFRFX1RZUEVTLlNFUSxcbiAgY29sb3JzOiBbJyMwMDkzOUMnLCAnI0U2RkFGQSddLFxuICBjb2xvckJsaW5kU2FmZTogdHJ1ZVxufTtcblxuY29uc3QgVWJlclBvb2wgPSB7XG4gIG5hbWU6ICdVYmVyUG9vbCcsXG4gIHR5cGU6IFBBTEVUVEVfVFlQRVMuRElWLFxuICBjYXRlZ29yeTogQ0FURUdPUklFUy5VQkVSLFxuICBjb2xvcnM6IFsnIzIyM0Y5QScsICcjQ0YxNzUwJywgJyNGQUUzMDAnXSxcbiAgY29ycmVjdExpZ2h0bmVzczogZmFsc2UsXG4gIGNvbG9yQmxpbmRTYWZlOiB0cnVlXG59O1xuXG5jb25zdCBJY2VBbmRGaXJlID0ge1xuICBuYW1lOiAnSWNlIEFuZCBGaXJlJyxcbiAgdHlwZTogUEFMRVRURV9UWVBFUy5ESVYsXG4gIGNhdGVnb3J5OiBDQVRFR09SSUVTLlVCRVIsXG4gIGNvbG9yczogWycjMDE5OEJEJywgJyNGQUZFQjMnXSxcbiAgY29sb3JzMjogWycjRkVFREIxJywgJyNENTAyNTUnXSxcbiAgZGl2ZXJnaW5nOiB0cnVlLFxuICBjb2xvckJsaW5kU2FmZTogdHJ1ZVxufTtcblxuY29uc3QgR2xvYmFsV2FybWluZyA9IHtcbiAgbmFtZTogJ0dsb2JhbCBXYXJtaW5nJyxcbiAgdHlwZTogUEFMRVRURV9UWVBFUy5TRVEsXG4gIGNhdGVnb3J5OiBDQVRFR09SSUVTLlVCRVIsXG4gIGNvbG9yczogWycjNEMwMDM1JywgJyNBQzFDMTcnLCAnI0ZGQzMwMCddLFxuICBjb2xvckJsaW5kU2FmZTogdHJ1ZVxufTtcblxuY29uc3QgU3VucmlzZSA9IHtcbiAgbmFtZTogJ1N1bnJpc2UnLFxuICB0eXBlOiBQQUxFVFRFX1RZUEVTLlNFUSxcbiAgY2F0ZWdvcnk6IENBVEVHT1JJRVMuVUJFUixcbiAgY29sb3JzOiBbJyMzNTVDN0QnLCAnI0MwNkM4NCcsICcjRjhCMTk1J10sXG4gIGNvbG9yQmxpbmRTYWZlOiB0cnVlXG59O1xuXG5jb25zdCBPY2VhbkdyZWVuID0ge1xuICBuYW1lOiAnT2NlYW4gR3JlZW4nLFxuICB0eXBlOiBQQUxFVFRFX1RZUEVTLlNFUSxcbiAgY2F0ZWdvcnk6IENBVEVHT1JJRVMuVUJFUixcbiAgY29sb3JzOiBbJyMzNzUzNUUnLCAnIzNFQUNBOCcsICcjRTVFRUMxJ10sXG4gIGNvbG9yQmxpbmRTYWZlOiB0cnVlXG59O1xuXG5jb25zdCBQaW5rV2luZSA9IHtcbiAgbmFtZTogJ1BpbmsgV2luZScsXG4gIHR5cGU6IFBBTEVUVEVfVFlQRVMuU0VRLFxuICBjYXRlZ29yeTogQ0FURUdPUklFUy5VQkVSLFxuICBjb2xvcnM6IFsnIzJDMUUzRCcsICcjOTU2NDg1JywgJyNFREQxQ0EnXSxcbiAgY29sb3JCbGluZFNhZmU6IHRydWVcbn07XG5cbmNvbnN0IFB1cnBsZUJsdWVZZWxsb3cgPSB7XG4gIG5hbWU6ICdQdXJwbGUgQmx1ZSBZZWxsb3cnLFxuICB0eXBlOiBQQUxFVFRFX1RZUEVTLlNFUSxcbiAgY2F0ZWdvcnk6IENBVEVHT1JJRVMuVUJFUixcbiAgY29sb3JzOiBbJyMzODNDNjUnLCAnIzQ5ODM4QScsICcjRDZERUJGJ10sXG4gIG1vZGU6ICdoc2wnLFxuICBjb2xvckJsaW5kU2FmZTogdHJ1ZVxufTtcblxuY29uc3QgVmlvdmV0T2NlYW4gPSB7XG4gIG5hbWU6ICdWaW92ZXRPY2VhbicsXG4gIHR5cGU6IFBBTEVUVEVfVFlQRVMuU0VRLFxuICBjYXRlZ29yeTogQ0FURUdPUklFUy5VQkVSLFxuICBjb2xvcnM6IFsnIzc0MDBCOCcsICcjNUU2MENFJywgJyM0RUE4REUnLCAnIzU2Q0ZFMScsICcjNzJFRkREJ10sXG4gIGNvbG9yQmxpbmRTYWZlOiBmYWxzZVxufTtcblxuY29uc3QgU3VtbWVyU2t5ID0ge1xuICBuYW1lOiAnU3VtbWVyU2t5JyxcbiAgdHlwZTogUEFMRVRURV9UWVBFUy5TRVEsXG4gIGNhdGVnb3J5OiBDQVRFR09SSUVTLlVCRVIsXG4gIGNvbG9yczogWycjMTg0RTc3JywgJyMxNjhBQUQnLCAnIzc2Qzg5MycsICcjRDlFRDkyJ10sXG4gIGNvbG9yQmxpbmRTYWZlOiBmYWxzZVxufTtcblxuY29uc3QgVWJlclZpelF1YWxpdGF0aXZlID0ge1xuICBuYW1lOiAnVWJlciBWaXogUXVhbGl0YXRpdmUnLFxuICB0eXBlOiBQQUxFVFRFX1RZUEVTLlFVQSxcbiAgY2F0ZWdvcnk6IENBVEVHT1JJRVMuVUJFUixcbiAgY29sb3JzOiBPYmplY3QudmFsdWVzKERhdGFWaXpDb2xvcnMpLFxuICBjb2xvckJsaW5kU2FmZTogZmFsc2Vcbn07XG5cbi8vIGh0dHBzOi8vcGVyc29uYWwuc3Jvbi5ubC9+cGF1bHQvI3NlYzpxdWFsaXRhdGl2ZVxuLy8gQSBzZXQgb2YgUXVhbGl0YXRpdmUgQ29sb3JzIGRlc2lnbmVkIGJ5IFBhdWwgVG9sIHRoYXQgYXJlIGNvbG9yIGJsaW5kIGZyaWVuZGx5XG5jb25zdCBUb2xCcmlnaHQgPSB7XG4gIG5hbWU6ICdUb2wgQnJpZ2h0JyxcbiAgdHlwZTogUEFMRVRURV9UWVBFUy5RVUEsXG4gIGNhdGVnb3J5OiBDQVRFR09SSUVTLkNPTE9SQkxJTkQsXG4gIGNvbG9yczogWycjNDQ3N0FBJywgJyNFRTY2NzcnLCAnIzIyODgzMycsICcjQ0NCQjQ0JywgJyM2NkNDRUUnLCAnI0FBMzM3NycsICcjQkJCQkJCJ10sXG4gIGNvbG9yQmxpbmRTYWZlOiB0cnVlXG59O1xuLy8gQmFkIERhdGE6ICNCQkJCQkJcblxuY29uc3QgVG9sVmlicmFudCA9IHtcbiAgbmFtZTogJ1RvbCBWaWJyYW50JyxcbiAgdHlwZTogUEFMRVRURV9UWVBFUy5RVUEsXG4gIGNhdGVnb3J5OiBDQVRFR09SSUVTLkNPTE9SQkxJTkQsXG4gIGNvbG9yczogWycjRUU3NzMzJywgJyMwMDc3QkInLCAnIzMzQkJFRScsICcjRUUzMzc3JywgJyNDQzMzMTEnLCAnIzAwOTk4OCcsICcjQkJCQkJCJ10sXG4gIGNvbG9yQmxpbmRTYWZlOiB0cnVlXG59O1xuLy8gQmFkIERhdGE6ICNCQkJCQkJcblxuY29uc3QgVG9sTXV0ZWQgPSB7XG4gIG5hbWU6ICdUb2wgTXV0ZWQnLFxuICB0eXBlOiBQQUxFVFRFX1RZUEVTLlFVQSxcbiAgY2F0ZWdvcnk6IENBVEVHT1JJRVMuQ09MT1JCTElORCxcbiAgY29sb3JzOiBbXG4gICAgJyNDQzY2NzcnLFxuICAgICcjMzMyMjg4JyxcbiAgICAnI0REQ0M3NycsXG4gICAgJyMxMTc3MzMnLFxuICAgICcjODhDQ0VFJyxcbiAgICAnIzg4MjI1NScsXG4gICAgJyM0NEFBOTknLFxuICAgICcjOTk5OTMzJyxcbiAgICAnI0FBNDQ5OSdcbiAgXSxcbiAgY29sb3JCbGluZFNhZmU6IHRydWVcbn07XG4vLyBCYWQgRGF0YTogI0RERERERFxuXG5jb25zdCBUb2xNZWRpdW1Db250cmFzdCA9IHtcbiAgbmFtZTogJ1RvbCBNZWRpdW0gQ29udHJhc3QnLFxuICB0eXBlOiBQQUxFVFRFX1RZUEVTLlFVQSxcbiAgY2F0ZWdvcnk6IENBVEVHT1JJRVMuQ09MT1JCTElORCxcbiAgY29sb3JzOiBbJyM2Njk5Q0MnLCAnIzAwNDQ4OCcsICcjRUVDQzY2JywgJyM5OTQ0NTUnLCAnIzk5NzcwMCcsICcjRUU5OUFBJ10sXG4gIGNvbG9yQmxpbmRTYWZlOiB0cnVlXG59O1xuXG5jb25zdCBUb2xMaWdodCA9IHtcbiAgbmFtZTogJ1RvbCBMaWdodCcsXG4gIHR5cGU6IFBBTEVUVEVfVFlQRVMuUVVBLFxuICBjYXRlZ29yeTogQ0FURUdPUklFUy5DT0xPUkJMSU5ELFxuICBjb2xvcnM6IFsnIzc3QUFERCcsICcjRUU4ODY2JywgJyNFRUREODgnLCAnI0ZGQUFCQicsICcjOTlEREZGJywgJyM0NEJCOTknLCAnI0JCQ0MzMycsICcjQUFBQTAwJ10sXG4gIGNvbG9yQmxpbmRTYWZlOiB0cnVlXG59O1xuXG4vLyBodHRwczovL2pmbHkudW5pLWtvZWxuLmRlL2NvbG9yL1xuY29uc3QgT2thYmVJdG8gPSB7XG4gIG5hbWU6ICdPa2FiZSBJdG8nLFxuICB0eXBlOiBQQUxFVFRFX1RZUEVTLlFVQSxcbiAgY2F0ZWdvcnk6IENBVEVHT1JJRVMuQ09MT1JCTElORCxcbiAgY29sb3JzOiBbJyNFNjlGMDAnLCAnIzU2QjRFOScsICcjMDA5RTczJywgJyNGMEU0NDInLCAnIzAwNzJCMicsICcjRDU1RTAwJywgJyNDQzc5QTcnLCAnIzAwMDAwMCddLFxuICBjb2xvckJsaW5kU2FmZTogdHJ1ZVxufTtcbi8vIEJhZCBEYXRhOiAjREREREREXG5cbi8qKlxuICogQnVpbGQgQ2F0ZWdvcmljYWwgY29sb3IgcGFsZXR0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRDYXRlZ29yaWNhbFBhbGV0dGUoe1xuICBuYW1lLFxuICBjYXRlZ29yeSxcbiAgY29sb3JzLFxuICBjb2xvckJsaW5kU2FmZVxufToge1xuICBuYW1lOiBzdHJpbmc7XG4gIGNhdGVnb3J5OiBWYWx1ZU9mPHR5cGVvZiBDQVRFR09SSUVTPjtcbiAgY29sb3JzPzogSGV4Q29sb3JbXTtcbiAgY29sb3JCbGluZFNhZmU/OiBib29sZWFuO1xufSk6IENhdGVnb3JpY2FsUGFsZXR0ZSB7XG4gIGxldCBhbGxDb2xvcnM7XG4gIC8vIGZpbmQgZDMgY29sb3Igc2NoZW1lXG4gIGNvbnN0IHNjaGVtZSA9IGQzU2NhbGVDaHJvbWF0aWNbYHNjaGVtZSR7bmFtZX1gXTtcblxuICBpZiAoIXNjaGVtZSAmJiAhY29sb3JzKSB7XG4gICAgQ29uc29sZS53YXJuKGBzY2hlbWUke25hbWV9IGNhbnQgbm90IGJlIGZvdW5kIGluIGQzIHNjYWxlIGNocm9tYXRpYywgbmVlZHMgdG8gcHJvdmlkZSBjb2xvcnNgKTtcbiAgICBhbGxDb2xvcnMgPSBbJyNEREREREQnXTtcbiAgfSBlbHNlIGlmICghc2NoZW1lKSB7XG4gICAgLy8gYnVpbGQgZnJvbSBjb2xvcnNcbiAgICBhbGxDb2xvcnMgPSBjb2xvcnM7XG4gIH0gZWxzZSB7XG4gICAgYWxsQ29sb3JzID0gc2NoZW1lO1xuICB9XG5cbiAgaWYgKCFhbGxDb2xvcnMubGVuZ3RoKSB7XG4gICAgQ29uc29sZS53YXJuKCdOZWVkcyB0byBwcm92aWRlIHZhbGlkIGQzIGNvbG9yIHNjaGVtZSBuYW1lIG9yIGFuIGFycmF5IG9mIGNvbG9ycycpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lLFxuICAgIGNhdGVnb3J5LFxuICAgIHR5cGU6IFBBTEVUVEVfVFlQRVMuUVVBLFxuICAgIGNvbG9yQmxpbmRTYWZlOiBjb2xvckJsaW5kU2FmZSA/PyBDT0xPUl9CTElORF9TQUZFX01BUFtuYW1lXSxcbiAgICBtYXhTdGVwOiBhbGxDb2xvcnMubGVuZ3RoLFxuICAgIGNvbG9yczogbnVtQ29sb3JzID0+IHtcbiAgICAgIC8vIGlmIG51bUNvbG9ycyA+IG1heFN0ZXBzLCAgd2lsbCByZXR1cm4gYWxsQ29sb3JzXG4gICAgICByZXR1cm4gYWxsQ29sb3JzLnNsaWNlKDAsIG51bUNvbG9ycykubWFwKF9jb2xvclRvVXBwZXJjYXNlKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIF9jb2xvclRvVXBwZXJjYXNlKGMpIHtcbiAgcmV0dXJuIGQzQ29sb3IoYykuZm9ybWF0SGV4KCkudG9VcHBlckNhc2UoKTtcbn1cbi8qKlxuICogQWxsIHNlcXVhbnRpYWwgcGFsZXR0ZSBpcyBiYXNlZCBvbiBwYWxldHRlIGluIGQzLXNjYWxlLWNocm9tYXRpY1xuICogaHR0cHM6Ly9naXRodWIuY29tL2QzL2QzLXNjYWxlLWNocm9tYXRpYy9ibG9iL21haW4vc3JjL2luZGV4LmpzXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkU2VxdWVudGlhbFBhbGV0dGUoe25hbWUsIHR5cGUsIGNhdGVnb3J5fSkge1xuICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChDT0xPUl9CTElORF9TQUZFX01BUCwgbmFtZSkpIHtcbiAgICBDb25zb2xlLndhcm4oYCR7bmFtZX0gZG9lcyBub3QgZXhpc3RzIGluIENPTE9SX0JMSU5EX1NBRkVfTUFQYCk7XG4gIH1cbiAgY29uc3QgaW50ZXJwb2xhdG9yID0gZDNTY2FsZUNocm9tYXRpY1tgaW50ZXJwb2xhdGUke25hbWV9YF07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lLFxuICAgIHR5cGUsXG4gICAgY2F0ZWdvcnksXG4gICAgY29sb3JCbGluZFNhZmU6IENPTE9SX0JMSU5EX1NBRkVfTUFQW25hbWVdLFxuICAgIGNvbG9yczogbnVtQ29sb3JzID0+IHtcbiAgICAgIHJldHVybiByYW5nZSgwLCBudW1Db2xvcnMsIDEpXG4gICAgICAgIC5tYXAoZCA9PiBpbnRlcnBvbGF0b3IoZCAvIChudW1Db2xvcnMgLSAxKSkpXG4gICAgICAgIC5tYXAoX2NvbG9yVG9VcHBlcmNhc2UpO1xuICAgIH0sXG4gICAgbGluZWFyOiAoKSA9PiB7XG4gICAgICByZXR1cm4gaW50ZXJwb2xhdG9yO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gYnVpbGRDdXN0b21QYWxldHRlKHtcbiAgY29sb3JzLFxuICBjb2xvcnMyID0gW10sXG4gIGNvcnJlY3RMaWdodG5lc3MgPSB0cnVlLFxuICBiZXppZXIgPSBmYWxzZSxcbiAgZGl2ZXJnaW5nID0gZmFsc2UsXG4gIG1vZGUgPSAnbGNoJyxcbiAgbmFtZSxcbiAgdHlwZSxcbiAgY2F0ZWdvcnksXG4gIGNvbG9yQmxpbmRTYWZlXG59OiB7XG4gIGNvbG9yczogSGV4Q29sb3JbXTtcbiAgY29sb3JzMj86IEhleENvbG9yW107XG4gIGNvcnJlY3RMaWdodG5lc3M/OiBib29sZWFuO1xuICBiZXppZXI/OiBib29sZWFuO1xuICBkaXZlcmdpbmc/OiBib29sZWFuO1xuICBtb2RlPzogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IFNlcXVlbnRpYWxQYWxldHRlWyd0eXBlJ107XG4gIGNhdGVnb3J5OiBWYWx1ZU9mPHR5cGVvZiBDQVRFR09SSUVTPjtcbiAgY29sb3JCbGluZFNhZmU6IGJvb2xlYW47XG59KTogU2VxdWVudGlhbFBhbGV0dGUgfCB1bmRlZmluZWQge1xuICBjb25zdCBwYWxldHRlOiBTZXF1ZW50aWFsUGFsZXR0ZSA9IHtcbiAgICBuYW1lLFxuICAgIHR5cGUsXG4gICAgY2F0ZWdvcnksXG4gICAgY29sb3JCbGluZFNhZmUsXG4gICAgY29sb3JzOiAoKSA9PiBbXSxcbiAgICBsaW5lYXI6ICgpID0+ICgpID0+ICcnXG4gIH07XG5cbiAgaWYgKCFjb2xvcnMubGVuZ3RoKSB7XG4gICAgQ29uc29sZS5lcnJvcignY29sb3JzIGhhcyB0byBiZSBhbiBhcnJheSBvZiBjb2xvcnMnKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBzY2FsZUxlZnQgPSBjaHJvbWFcbiAgICAuc2NhbGUoYmV6aWVyICYmIGNvbG9ycy5sZW5ndGggPiAxID8gY2hyb21hLmJlemllcihjb2xvcnMpIDogY29sb3JzKVxuICAgIC5tb2RlKG1vZGUpXG4gICAgLmNvcnJlY3RMaWdodG5lc3MoY29ycmVjdExpZ2h0bmVzcyk7XG4gIGxldCBzY2FsZVJpZ2h0O1xuICBsZXQgc2NhbGVGdWxsO1xuICBpZiAoZGl2ZXJnaW5nKSB7XG4gICAgaWYgKCFjb2xvcnMubGVuZ3RoKSB7XG4gICAgICBDb25zb2xlLmVycm9yKCdjb2xvcnMyIGhhcyB0byBiZSBhbiBhcnJheSBvZiBjb2xvcnMgd2hlbiBkaXZlcmdpbmcgPSB0cnVlJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHNjYWxlUmlnaHQgPSBjaHJvbWFcbiAgICAgIC5zY2FsZShiZXppZXIgJiYgY29sb3JzMi5sZW5ndGggPiAxID8gY2hyb21hLmJlemllcihjb2xvcnMyKSA6IGNvbG9yczIpXG4gICAgICAubW9kZShtb2RlKVxuICAgICAgLmNvcnJlY3RMaWdodG5lc3MoY29ycmVjdExpZ2h0bmVzcyk7XG5cbiAgICBzY2FsZUZ1bGwgPSBjaHJvbWFcbiAgICAgIC5zY2FsZShiZXppZXIgPyBjaHJvbWEuYmV6aWVyKGNvbG9ycy5jb25jYXQoY29sb3JzMikpIDogY29sb3JzLmNvbmNhdChjb2xvcnMyKSlcbiAgICAgIC5tb2RlKG1vZGUpXG4gICAgICAuY29ycmVjdExpZ2h0bmVzcyhjb3JyZWN0TGlnaHRuZXNzKTtcbiAgfVxuXG4gIC8vIHJldHVybiBudW1Db2xvcnMgPT4gKHNjYWxlTGVmdCA/IHN0ZXBzTGVmdC5jb2xvcnMobnVtQ29sb3JzKSA6IFtdKTtcblxuICAvLyBnaXZlbiBudW1iZXIgb2YgY29sb3JzIHJldHVybiBjb2xvciBzdGVwc1xuICBwYWxldHRlLmNvbG9ycyA9IG51bUNvbG9ycyA9PiB7XG4gICAgaWYgKGRpdmVyZ2luZykge1xuICAgICAgY29uc3QgZXZlbiA9IG51bUNvbG9ycyAlIDIgPT09IDA7XG5cbiAgICAgIGNvbnN0IG51bUNvbG9yc0xlZnQgPSBNYXRoLmNlaWwobnVtQ29sb3JzIC8gMikgKyAoZXZlbiA/IDEgOiAwKTtcbiAgICAgIGNvbnN0IG51bUNvbG9yc1JpZ2h0ID0gTWF0aC5jZWlsKG51bUNvbG9ycyAvIDIpICsgKGV2ZW4gPyAxIDogMCk7XG5cbiAgICAgIGNvbnN0IGNvbG9yc0xlZnQgPSBzY2FsZUxlZnQgPyBzY2FsZUxlZnQuY29sb3JzKG51bUNvbG9yc0xlZnQpIDogW107XG4gICAgICBjb25zdCBjb2xvcnNSaWdodCA9IHNjYWxlUmlnaHQgPyBzY2FsZVJpZ2h0LmNvbG9ycyhudW1Db2xvcnNSaWdodCkgOiBbXTtcbiAgICAgIGNvbnN0IHN0ZXBzID0gKGV2ZW4gPyBjb2xvcnNMZWZ0LnNsaWNlKDAsIGNvbG9yc0xlZnQubGVuZ3RoIC0gMSkgOiBjb2xvcnNMZWZ0KVxuICAgICAgICAuY29uY2F0KGNvbG9yc1JpZ2h0LnNsaWNlKDEpKVxuICAgICAgICAubWFwKF9jb2xvclRvVXBwZXJjYXNlKTtcblxuICAgICAgcmV0dXJuIHN0ZXBzO1xuICAgIH1cblxuICAgIHJldHVybiBzY2FsZUxlZnQgPyBzY2FsZUxlZnQuY29sb3JzKG51bUNvbG9ycykubWFwKF9jb2xvclRvVXBwZXJjYXNlKSA6IFtdO1xuICB9O1xuXG4gIHBhbGV0dGUubGluZWFyID0gKCkgPT4ge1xuICAgIHJldHVybiBkaXZlcmdpbmcgPyBzY2FsZUZ1bGwgOiBzY2FsZUxlZnQ7XG4gIH07XG5cbiAgcmV0dXJuIHBhbGV0dGU7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkUGFsZXR0ZUJ5U2NoZW1lR3JvdXBzKFxuICBzY2hlbWVHcm91cHM6IHR5cGVvZiBDT0xPUkJSRVdFUl9TQ0hFTUUgfCB0eXBlb2YgRDNfQ09MT1JfQ0hST01BVElDX1NDSEVNRSxcbiAgY2F0ZWdvcnk6IFZhbHVlT2Y8dHlwZW9mIENBVEVHT1JJRVM+XG4pOiBDb2xvclBhbGV0dGVbXSB7XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhzY2hlbWVHcm91cHMpLnJlZHVjZSgoYWNjdSwgW3R5cGUsIHBhbGV0dGVzXSkgPT4ge1xuICAgIHJldHVybiBbXG4gICAgICAuLi5hY2N1LFxuICAgICAgLi4ucGFsZXR0ZXMucmVkdWNlKChncm91cCwgbmFtZSkgPT4ge1xuICAgICAgICBjb25zdCBjb2xvclBhbGV0dGUgPVxuICAgICAgICAgIHR5cGUgPT09IFBBTEVUVEVfVFlQRVMuUVVBXG4gICAgICAgICAgICA/IGJ1aWxkQ2F0ZWdvcmljYWxQYWxldHRlKHtuYW1lLCBjYXRlZ29yeX0pXG4gICAgICAgICAgICA6IC8vIEB0cy1pZ25vcmUganNkb2MgY2FudCBmaWd1cmUgb3V0IHR5cGUgb2YgJ3R5cGUnXG4gICAgICAgICAgICAgIGJ1aWxkU2VxdWVudGlhbFBhbGV0dGUoe25hbWUsIHR5cGUsIGNhdGVnb3J5fSk7XG4gICAgICAgIC8vIEB0cy1pZ25vcmUgdHlwZSBpcyBub3QgYXNzaWduYWJsZSB0byBuZXZlcltdXG4gICAgICAgIGdyb3VwLnB1c2goY29sb3JQYWxldHRlKTtcbiAgICAgICAgcmV0dXJuIGdyb3VwO1xuICAgICAgfSwgW10pXG4gICAgXTtcbiAgfSwgW10pO1xufVxuXG5jb25zdCBDT0xPUkJSRVdFUl9QQUxFVFRFUyA9IGJ1aWxkUGFsZXR0ZUJ5U2NoZW1lR3JvdXBzKENPTE9SQlJFV0VSX1NDSEVNRSwgQ0FURUdPUklFUy5DT0xPUkJSRVdFUik7XG5jb25zdCBEM19DT0xPUl9QQUxFVFRFUyA9IGJ1aWxkUGFsZXR0ZUJ5U2NoZW1lR3JvdXBzKEQzX0NPTE9SX0NIUk9NQVRJQ19TQ0hFTUUsIENBVEVHT1JJRVMuRDMpO1xuY29uc3QgVUJFUl9QQUxFVFRFUzogQ29sb3JQYWxldHRlW10gPSBbXG4gIFViZXJWaXpEaXZlcmdpbmcsXG4gIFViZXJWaXpTZXF1ZW50aWFsLFxuICBVYmVyUG9vbCxcbiAgSWNlQW5kRmlyZSxcbiAgR2xvYmFsV2FybWluZyxcbiAgU3VucmlzZSxcbiAgT2NlYW5HcmVlbixcbiAgUGlua1dpbmUsXG4gIFB1cnBsZUJsdWVZZWxsb3csXG4gIFZpb3ZldE9jZWFuLFxuICBTdW1tZXJTa3ksXG4gIFViZXJWaXpRdWFsaXRhdGl2ZSxcbiAgVG9sQnJpZ2h0LFxuICBUb2xWaWJyYW50LFxuICBUb2xNdXRlZCxcbiAgVG9sTWVkaXVtQ29udHJhc3QsXG4gIFRvbExpZ2h0LFxuICBPa2FiZUl0b1xuXVxuICAubWFwKHJlY2lwZSA9PlxuICAgIHJlY2lwZS50eXBlID09PSBQQUxFVFRFX1RZUEVTLlFVQSA/IGJ1aWxkQ2F0ZWdvcmljYWxQYWxldHRlKHJlY2lwZSkgOiBidWlsZEN1c3RvbVBhbGV0dGUocmVjaXBlKVxuICApXG4gIC5maWx0ZXIoQm9vbGVhbikgYXMgQ29sb3JQYWxldHRlW107XG5cbmV4cG9ydCBjb25zdCBLRVBMRVJfQ09MT1JfUEFMRVRURVM6IENvbG9yUGFsZXR0ZVtdID0gW1xuICAuLi5VQkVSX1BBTEVUVEVTLFxuICAuLi5DT0xPUkJSRVdFUl9QQUxFVFRFUyxcbiAgLi4uRDNfQ09MT1JfUEFMRVRURVNcbl07XG5cbi8qKlxuICogY3JlYXRlIGNvbG9yIHJhbmdlIGZyb20gcGFsZXR0ZSwgd2l0aCBzdGVwcyBhbmQgcmV2ZXJzZWQgYXMgY29uZmlnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2xvclBhbGV0dGVUb0NvbG9yUmFuZ2UoXG4gIGNvbG9yUGFsZXR0ZTogQ29sb3JQYWxldHRlLFxuICBjb2xvckNvbmZpZzoge1xuICAgIHJldmVyc2VkOiBib29sZWFuO1xuICAgIHN0ZXBzOiBudW1iZXI7XG4gIH1cbik6IE1pbmlDb2xvclJhbmdlIHtcbiAgY29uc3Qge3N0ZXBzLCByZXZlcnNlZH0gPSBjb2xvckNvbmZpZztcbiAgY29uc3QgY29sb3JzID0gY29sb3JQYWxldHRlLmNvbG9ycyhzdGVwcykuc2xpY2UoKTtcbiAgaWYgKHJldmVyc2VkKSB7XG4gICAgY29sb3JzLnJldmVyc2UoKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbmFtZTogY29sb3JQYWxldHRlLm5hbWUsXG4gICAgdHlwZTogY29sb3JQYWxldHRlLnR5cGUsXG4gICAgY2F0ZWdvcnk6IGNvbG9yUGFsZXR0ZS5jYXRlZ29yeSxcbiAgICBjb2xvcnMsXG4gICAgLi4uKHJldmVyc2VkID8ge3JldmVyc2VkfSA6IHt9KVxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsZ0JBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNB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QU1JLG9CQUFvQixHQUFHO0VBQzNCO0VBQ0FDLElBQUksRUFBRSxJQUFJO0VBQ1ZDLElBQUksRUFBRSxJQUFJO0VBQ1ZDLElBQUksRUFBRSxJQUFJO0VBQ1ZDLElBQUksRUFBRSxJQUFJO0VBQ1ZDLElBQUksRUFBRSxJQUFJO0VBQ1ZDLElBQUksRUFBRSxLQUFLO0VBQ1hDLE1BQU0sRUFBRSxJQUFJO0VBQ1pDLE1BQU0sRUFBRSxLQUFLO0VBQ2JDLFFBQVEsRUFBRSxLQUFLO0VBQ2ZDLE1BQU0sRUFBRSxLQUFLO0VBQ2JDLEtBQUssRUFBRSxJQUFJO0VBQ1hDLE1BQU0sRUFBRSxJQUFJO0VBQ1pDLE9BQU8sRUFBRSxLQUFLO0VBQ2RDLE9BQU8sRUFBRSxLQUFLO0VBQ2RDLElBQUksRUFBRSxLQUFLO0VBQ1hDLElBQUksRUFBRSxJQUFJO0VBQ1ZDLElBQUksRUFBRSxLQUFLO0VBQ1hDLEtBQUssRUFBRSxJQUFJO0VBQ1hDLElBQUksRUFBRSxJQUFJO0VBQ1ZDLElBQUksRUFBRSxJQUFJO0VBQ1ZDLElBQUksRUFBRSxJQUFJO0VBQ1ZDLE1BQU0sRUFBRSxJQUFJO0VBQ1pDLEtBQUssRUFBRSxJQUFJO0VBQ1hDLE9BQU8sRUFBRSxJQUFJO0VBQ2JDLElBQUksRUFBRSxJQUFJO0VBQ1ZDLElBQUksRUFBRSxJQUFJO0VBQ1ZDLE1BQU0sRUFBRSxJQUFJO0VBQ1pDLElBQUksRUFBRSxJQUFJO0VBQ1ZDLE9BQU8sRUFBRSxJQUFJO0VBQ2JDLElBQUksRUFBRSxJQUFJO0VBQ1ZDLElBQUksRUFBRSxJQUFJO0VBQ1ZDLElBQUksRUFBRSxJQUFJO0VBQ1ZDLE1BQU0sRUFBRSxJQUFJO0VBQ1pDLE1BQU0sRUFBRSxJQUFJO0VBQ1pDLE1BQU0sRUFBRSxJQUFJO0VBRVo7RUFDQUMsT0FBTyxFQUFFLElBQUk7RUFDYkMsT0FBTyxFQUFFLEtBQUs7RUFDZEMsS0FBSyxFQUFFLElBQUk7RUFDWEMsT0FBTyxFQUFFLElBQUk7RUFDYkMsT0FBTyxFQUFFLElBQUk7RUFDYkMsS0FBSyxFQUFFLElBQUk7RUFDWEMsTUFBTSxF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
@@ -0,0 +1,11 @@
1
+ import { HexColor } from '@kepler.gl/types';
2
+ declare const COLORS: {
3
+ [key: string]: HexColor;
4
+ };
5
+ export default COLORS;
6
+ export declare const ColorsByTheme: {
7
+ [theme: string]: {
8
+ [idx: string]: HexColor;
9
+ };
10
+ };
11
+ export declare const Themes: string[];