You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			7806 lines
		
	
	
		
			207 KiB
		
	
	
	
		
			JavaScript
		
	
			
		
		
	
	
			7806 lines
		
	
	
		
			207 KiB
		
	
	
	
		
			JavaScript
		
	
| (self["webpackChunk_JUPYTERLAB_CORE_OUTPUT"] = self["webpackChunk_JUPYTERLAB_CORE_OUTPUT"] || []).push([[9619],{
 | |
| 
 | |
| /***/ 93535:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'apathy',
 | |
|   author: 'jannik siebert (https://github.com/janniks)',
 | |
|   base00: '#031A16',
 | |
|   base01: '#0B342D',
 | |
|   base02: '#184E45',
 | |
|   base03: '#2B685E',
 | |
|   base04: '#5F9C92',
 | |
|   base05: '#81B5AC',
 | |
|   base06: '#A7CEC8',
 | |
|   base07: '#D2E7E4',
 | |
|   base08: '#3E9688',
 | |
|   base09: '#3E7996',
 | |
|   base0A: '#3E4C96',
 | |
|   base0B: '#883E96',
 | |
|   base0C: '#963E4C',
 | |
|   base0D: '#96883E',
 | |
|   base0E: '#4C963E',
 | |
|   base0F: '#3E965B'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 48000:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'ashes',
 | |
|   author: 'jannik siebert (https://github.com/janniks)',
 | |
|   base00: '#1C2023',
 | |
|   base01: '#393F45',
 | |
|   base02: '#565E65',
 | |
|   base03: '#747C84',
 | |
|   base04: '#ADB3BA',
 | |
|   base05: '#C7CCD1',
 | |
|   base06: '#DFE2E5',
 | |
|   base07: '#F3F4F5',
 | |
|   base08: '#C7AE95',
 | |
|   base09: '#C7C795',
 | |
|   base0A: '#AEC795',
 | |
|   base0B: '#95C7AE',
 | |
|   base0C: '#95AEC7',
 | |
|   base0D: '#AE95C7',
 | |
|   base0E: '#C795AE',
 | |
|   base0F: '#C79595'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 89575:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'atelier dune',
 | |
|   author: 'bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune)',
 | |
|   base00: '#20201d',
 | |
|   base01: '#292824',
 | |
|   base02: '#6e6b5e',
 | |
|   base03: '#7d7a68',
 | |
|   base04: '#999580',
 | |
|   base05: '#a6a28c',
 | |
|   base06: '#e8e4cf',
 | |
|   base07: '#fefbec',
 | |
|   base08: '#d73737',
 | |
|   base09: '#b65611',
 | |
|   base0A: '#cfb017',
 | |
|   base0B: '#60ac39',
 | |
|   base0C: '#1fad83',
 | |
|   base0D: '#6684e1',
 | |
|   base0E: '#b854d4',
 | |
|   base0F: '#d43552'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 63295:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'atelier forest',
 | |
|   author: 'bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest)',
 | |
|   base00: '#1b1918',
 | |
|   base01: '#2c2421',
 | |
|   base02: '#68615e',
 | |
|   base03: '#766e6b',
 | |
|   base04: '#9c9491',
 | |
|   base05: '#a8a19f',
 | |
|   base06: '#e6e2e0',
 | |
|   base07: '#f1efee',
 | |
|   base08: '#f22c40',
 | |
|   base09: '#df5320',
 | |
|   base0A: '#d5911a',
 | |
|   base0B: '#5ab738',
 | |
|   base0C: '#00ad9c',
 | |
|   base0D: '#407ee7',
 | |
|   base0E: '#6666ea',
 | |
|   base0F: '#c33ff3'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 68411:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'atelier heath',
 | |
|   author: 'bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath)',
 | |
|   base00: '#1b181b',
 | |
|   base01: '#292329',
 | |
|   base02: '#695d69',
 | |
|   base03: '#776977',
 | |
|   base04: '#9e8f9e',
 | |
|   base05: '#ab9bab',
 | |
|   base06: '#d8cad8',
 | |
|   base07: '#f7f3f7',
 | |
|   base08: '#ca402b',
 | |
|   base09: '#a65926',
 | |
|   base0A: '#bb8a35',
 | |
|   base0B: '#379a37',
 | |
|   base0C: '#159393',
 | |
|   base0D: '#516aec',
 | |
|   base0E: '#7b59c0',
 | |
|   base0F: '#cc33cc'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 20209:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'atelier lakeside',
 | |
|   author: 'bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside/)',
 | |
|   base00: '#161b1d',
 | |
|   base01: '#1f292e',
 | |
|   base02: '#516d7b',
 | |
|   base03: '#5a7b8c',
 | |
|   base04: '#7195a8',
 | |
|   base05: '#7ea2b4',
 | |
|   base06: '#c1e4f6',
 | |
|   base07: '#ebf8ff',
 | |
|   base08: '#d22d72',
 | |
|   base09: '#935c25',
 | |
|   base0A: '#8a8a0f',
 | |
|   base0B: '#568c3b',
 | |
|   base0C: '#2d8f6f',
 | |
|   base0D: '#257fad',
 | |
|   base0E: '#5d5db1',
 | |
|   base0F: '#b72dd2'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 5968:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'atelier seaside',
 | |
|   author: 'bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside/)',
 | |
|   base00: '#131513',
 | |
|   base01: '#242924',
 | |
|   base02: '#5e6e5e',
 | |
|   base03: '#687d68',
 | |
|   base04: '#809980',
 | |
|   base05: '#8ca68c',
 | |
|   base06: '#cfe8cf',
 | |
|   base07: '#f0fff0',
 | |
|   base08: '#e6193c',
 | |
|   base09: '#87711d',
 | |
|   base0A: '#c3c322',
 | |
|   base0B: '#29a329',
 | |
|   base0C: '#1999b3',
 | |
|   base0D: '#3d62f5',
 | |
|   base0E: '#ad2bee',
 | |
|   base0F: '#e619c3'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 20904:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'bespin',
 | |
|   author: 'jan t. sott',
 | |
|   base00: '#28211c',
 | |
|   base01: '#36312e',
 | |
|   base02: '#5e5d5c',
 | |
|   base03: '#666666',
 | |
|   base04: '#797977',
 | |
|   base05: '#8a8986',
 | |
|   base06: '#9d9b97',
 | |
|   base07: '#baae9e',
 | |
|   base08: '#cf6a4c',
 | |
|   base09: '#cf7d34',
 | |
|   base0A: '#f9ee98',
 | |
|   base0B: '#54be0d',
 | |
|   base0C: '#afc4db',
 | |
|   base0D: '#5ea6ea',
 | |
|   base0E: '#9b859d',
 | |
|   base0F: '#937121'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 87002:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'brewer',
 | |
|   author: 'timothée poisot (http://github.com/tpoisot)',
 | |
|   base00: '#0c0d0e',
 | |
|   base01: '#2e2f30',
 | |
|   base02: '#515253',
 | |
|   base03: '#737475',
 | |
|   base04: '#959697',
 | |
|   base05: '#b7b8b9',
 | |
|   base06: '#dadbdc',
 | |
|   base07: '#fcfdfe',
 | |
|   base08: '#e31a1c',
 | |
|   base09: '#e6550d',
 | |
|   base0A: '#dca060',
 | |
|   base0B: '#31a354',
 | |
|   base0C: '#80b1d3',
 | |
|   base0D: '#3182bd',
 | |
|   base0E: '#756bb1',
 | |
|   base0F: '#b15928'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 74865:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'bright',
 | |
|   author: 'chris kempson (http://chriskempson.com)',
 | |
|   base00: '#000000',
 | |
|   base01: '#303030',
 | |
|   base02: '#505050',
 | |
|   base03: '#b0b0b0',
 | |
|   base04: '#d0d0d0',
 | |
|   base05: '#e0e0e0',
 | |
|   base06: '#f5f5f5',
 | |
|   base07: '#ffffff',
 | |
|   base08: '#fb0120',
 | |
|   base09: '#fc6d24',
 | |
|   base0A: '#fda331',
 | |
|   base0B: '#a1c659',
 | |
|   base0C: '#76c7b7',
 | |
|   base0D: '#6fb3d2',
 | |
|   base0E: '#d381c3',
 | |
|   base0F: '#be643c'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 89483:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'chalk',
 | |
|   author: 'chris kempson (http://chriskempson.com)',
 | |
|   base00: '#151515',
 | |
|   base01: '#202020',
 | |
|   base02: '#303030',
 | |
|   base03: '#505050',
 | |
|   base04: '#b0b0b0',
 | |
|   base05: '#d0d0d0',
 | |
|   base06: '#e0e0e0',
 | |
|   base07: '#f5f5f5',
 | |
|   base08: '#fb9fb1',
 | |
|   base09: '#eda987',
 | |
|   base0A: '#ddb26f',
 | |
|   base0B: '#acc267',
 | |
|   base0C: '#12cfc0',
 | |
|   base0D: '#6fc2ef',
 | |
|   base0E: '#e1a3ee',
 | |
|   base0F: '#deaf8f'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 15992:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'codeschool',
 | |
|   author: 'brettof86',
 | |
|   base00: '#232c31',
 | |
|   base01: '#1c3657',
 | |
|   base02: '#2a343a',
 | |
|   base03: '#3f4944',
 | |
|   base04: '#84898c',
 | |
|   base05: '#9ea7a6',
 | |
|   base06: '#a7cfa3',
 | |
|   base07: '#b5d8f6',
 | |
|   base08: '#2a5491',
 | |
|   base09: '#43820d',
 | |
|   base0A: '#a03b1e',
 | |
|   base0B: '#237986',
 | |
|   base0C: '#b02f30',
 | |
|   base0D: '#484d79',
 | |
|   base0E: '#c59820',
 | |
|   base0F: '#c98344'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 47340:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'colors',
 | |
|   author: 'mrmrs (http://clrs.cc)',
 | |
|   base00: '#111111',
 | |
|   base01: '#333333',
 | |
|   base02: '#555555',
 | |
|   base03: '#777777',
 | |
|   base04: '#999999',
 | |
|   base05: '#bbbbbb',
 | |
|   base06: '#dddddd',
 | |
|   base07: '#ffffff',
 | |
|   base08: '#ff4136',
 | |
|   base09: '#ff851b',
 | |
|   base0A: '#ffdc00',
 | |
|   base0B: '#2ecc40',
 | |
|   base0C: '#7fdbff',
 | |
|   base0D: '#0074d9',
 | |
|   base0E: '#b10dc9',
 | |
|   base0F: '#85144b'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 88968:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'default',
 | |
|   author: 'chris kempson (http://chriskempson.com)',
 | |
|   base00: '#181818',
 | |
|   base01: '#282828',
 | |
|   base02: '#383838',
 | |
|   base03: '#585858',
 | |
|   base04: '#b8b8b8',
 | |
|   base05: '#d8d8d8',
 | |
|   base06: '#e8e8e8',
 | |
|   base07: '#f8f8f8',
 | |
|   base08: '#ab4642',
 | |
|   base09: '#dc9656',
 | |
|   base0A: '#f7ca88',
 | |
|   base0B: '#a1b56c',
 | |
|   base0C: '#86c1b9',
 | |
|   base0D: '#7cafc2',
 | |
|   base0E: '#ba8baf',
 | |
|   base0F: '#a16946'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 33424:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'eighties',
 | |
|   author: 'chris kempson (http://chriskempson.com)',
 | |
|   base00: '#2d2d2d',
 | |
|   base01: '#393939',
 | |
|   base02: '#515151',
 | |
|   base03: '#747369',
 | |
|   base04: '#a09f93',
 | |
|   base05: '#d3d0c8',
 | |
|   base06: '#e8e6df',
 | |
|   base07: '#f2f0ec',
 | |
|   base08: '#f2777a',
 | |
|   base09: '#f99157',
 | |
|   base0A: '#ffcc66',
 | |
|   base0B: '#99cc99',
 | |
|   base0C: '#66cccc',
 | |
|   base0D: '#6699cc',
 | |
|   base0E: '#cc99cc',
 | |
|   base0F: '#d27b53'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 95326:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'embers',
 | |
|   author: 'jannik siebert (https://github.com/janniks)',
 | |
|   base00: '#16130F',
 | |
|   base01: '#2C2620',
 | |
|   base02: '#433B32',
 | |
|   base03: '#5A5047',
 | |
|   base04: '#8A8075',
 | |
|   base05: '#A39A90',
 | |
|   base06: '#BEB6AE',
 | |
|   base07: '#DBD6D1',
 | |
|   base08: '#826D57',
 | |
|   base09: '#828257',
 | |
|   base0A: '#6D8257',
 | |
|   base0B: '#57826D',
 | |
|   base0C: '#576D82',
 | |
|   base0D: '#6D5782',
 | |
|   base0E: '#82576D',
 | |
|   base0F: '#825757'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 91907:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'flat',
 | |
|   author: 'chris kempson (http://chriskempson.com)',
 | |
|   base00: '#2C3E50',
 | |
|   base01: '#34495E',
 | |
|   base02: '#7F8C8D',
 | |
|   base03: '#95A5A6',
 | |
|   base04: '#BDC3C7',
 | |
|   base05: '#e0e0e0',
 | |
|   base06: '#f5f5f5',
 | |
|   base07: '#ECF0F1',
 | |
|   base08: '#E74C3C',
 | |
|   base09: '#E67E22',
 | |
|   base0A: '#F1C40F',
 | |
|   base0B: '#2ECC71',
 | |
|   base0C: '#1ABC9C',
 | |
|   base0D: '#3498DB',
 | |
|   base0E: '#9B59B6',
 | |
|   base0F: '#be643c'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 44026:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'google',
 | |
|   author: 'seth wright (http://sethawright.com)',
 | |
|   base00: '#1d1f21',
 | |
|   base01: '#282a2e',
 | |
|   base02: '#373b41',
 | |
|   base03: '#969896',
 | |
|   base04: '#b4b7b4',
 | |
|   base05: '#c5c8c6',
 | |
|   base06: '#e0e0e0',
 | |
|   base07: '#ffffff',
 | |
|   base08: '#CC342B',
 | |
|   base09: '#F96A38',
 | |
|   base0A: '#FBA922',
 | |
|   base0B: '#198844',
 | |
|   base0C: '#3971ED',
 | |
|   base0D: '#3971ED',
 | |
|   base0E: '#A36AC7',
 | |
|   base0F: '#3971ED'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 93445:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'grayscale',
 | |
|   author: 'alexandre gavioli (https://github.com/alexx2/)',
 | |
|   base00: '#101010',
 | |
|   base01: '#252525',
 | |
|   base02: '#464646',
 | |
|   base03: '#525252',
 | |
|   base04: '#ababab',
 | |
|   base05: '#b9b9b9',
 | |
|   base06: '#e3e3e3',
 | |
|   base07: '#f7f7f7',
 | |
|   base08: '#7c7c7c',
 | |
|   base09: '#999999',
 | |
|   base0A: '#a0a0a0',
 | |
|   base0B: '#8e8e8e',
 | |
|   base0C: '#868686',
 | |
|   base0D: '#686868',
 | |
|   base0E: '#747474',
 | |
|   base0F: '#5e5e5e'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 62173:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'green screen',
 | |
|   author: 'chris kempson (http://chriskempson.com)',
 | |
|   base00: '#001100',
 | |
|   base01: '#003300',
 | |
|   base02: '#005500',
 | |
|   base03: '#007700',
 | |
|   base04: '#009900',
 | |
|   base05: '#00bb00',
 | |
|   base06: '#00dd00',
 | |
|   base07: '#00ff00',
 | |
|   base08: '#007700',
 | |
|   base09: '#009900',
 | |
|   base0A: '#007700',
 | |
|   base0B: '#00bb00',
 | |
|   base0C: '#005500',
 | |
|   base0D: '#009900',
 | |
|   base0E: '#00bb00',
 | |
|   base0F: '#005500'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 24978:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'harmonic16',
 | |
|   author: 'jannik siebert (https://github.com/janniks)',
 | |
|   base00: '#0b1c2c',
 | |
|   base01: '#223b54',
 | |
|   base02: '#405c79',
 | |
|   base03: '#627e99',
 | |
|   base04: '#aabcce',
 | |
|   base05: '#cbd6e2',
 | |
|   base06: '#e5ebf1',
 | |
|   base07: '#f7f9fb',
 | |
|   base08: '#bf8b56',
 | |
|   base09: '#bfbf56',
 | |
|   base0A: '#8bbf56',
 | |
|   base0B: '#56bf8b',
 | |
|   base0C: '#568bbf',
 | |
|   base0D: '#8b56bf',
 | |
|   base0E: '#bf568b',
 | |
|   base0F: '#bf5656'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 66732:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'hopscotch',
 | |
|   author: 'jan t. sott',
 | |
|   base00: '#322931',
 | |
|   base01: '#433b42',
 | |
|   base02: '#5c545b',
 | |
|   base03: '#797379',
 | |
|   base04: '#989498',
 | |
|   base05: '#b9b5b8',
 | |
|   base06: '#d5d3d5',
 | |
|   base07: '#ffffff',
 | |
|   base08: '#dd464c',
 | |
|   base09: '#fd8b19',
 | |
|   base0A: '#fdcc59',
 | |
|   base0B: '#8fc13e',
 | |
|   base0C: '#149b93',
 | |
|   base0D: '#1290bf',
 | |
|   base0E: '#c85e7c',
 | |
|   base0F: '#b33508'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 78052:
 | |
| /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| 
 | |
| function _interopRequire(obj) { return obj && obj.__esModule ? obj['default'] : obj; }
 | |
| 
 | |
| var _threezerotwofour = __webpack_require__(34104);
 | |
| 
 | |
| exports.threezerotwofour = _interopRequire(_threezerotwofour);
 | |
| 
 | |
| var _apathy = __webpack_require__(93535);
 | |
| 
 | |
| exports.apathy = _interopRequire(_apathy);
 | |
| 
 | |
| var _ashes = __webpack_require__(48000);
 | |
| 
 | |
| exports.ashes = _interopRequire(_ashes);
 | |
| 
 | |
| var _atelierDune = __webpack_require__(89575);
 | |
| 
 | |
| exports.atelierDune = _interopRequire(_atelierDune);
 | |
| 
 | |
| var _atelierForest = __webpack_require__(63295);
 | |
| 
 | |
| exports.atelierForest = _interopRequire(_atelierForest);
 | |
| 
 | |
| var _atelierHeath = __webpack_require__(68411);
 | |
| 
 | |
| exports.atelierHeath = _interopRequire(_atelierHeath);
 | |
| 
 | |
| var _atelierLakeside = __webpack_require__(20209);
 | |
| 
 | |
| exports.atelierLakeside = _interopRequire(_atelierLakeside);
 | |
| 
 | |
| var _atelierSeaside = __webpack_require__(5968);
 | |
| 
 | |
| exports.atelierSeaside = _interopRequire(_atelierSeaside);
 | |
| 
 | |
| var _bespin = __webpack_require__(20904);
 | |
| 
 | |
| exports.bespin = _interopRequire(_bespin);
 | |
| 
 | |
| var _brewer = __webpack_require__(87002);
 | |
| 
 | |
| exports.brewer = _interopRequire(_brewer);
 | |
| 
 | |
| var _bright = __webpack_require__(74865);
 | |
| 
 | |
| exports.bright = _interopRequire(_bright);
 | |
| 
 | |
| var _chalk = __webpack_require__(89483);
 | |
| 
 | |
| exports.chalk = _interopRequire(_chalk);
 | |
| 
 | |
| var _codeschool = __webpack_require__(15992);
 | |
| 
 | |
| exports.codeschool = _interopRequire(_codeschool);
 | |
| 
 | |
| var _colors = __webpack_require__(47340);
 | |
| 
 | |
| exports.colors = _interopRequire(_colors);
 | |
| 
 | |
| var _default = __webpack_require__(88968);
 | |
| 
 | |
| exports["default"] = _interopRequire(_default);
 | |
| 
 | |
| var _eighties = __webpack_require__(33424);
 | |
| 
 | |
| exports.eighties = _interopRequire(_eighties);
 | |
| 
 | |
| var _embers = __webpack_require__(95326);
 | |
| 
 | |
| exports.embers = _interopRequire(_embers);
 | |
| 
 | |
| var _flat = __webpack_require__(91907);
 | |
| 
 | |
| exports.flat = _interopRequire(_flat);
 | |
| 
 | |
| var _google = __webpack_require__(44026);
 | |
| 
 | |
| exports.google = _interopRequire(_google);
 | |
| 
 | |
| var _grayscale = __webpack_require__(93445);
 | |
| 
 | |
| exports.grayscale = _interopRequire(_grayscale);
 | |
| 
 | |
| var _greenscreen = __webpack_require__(62173);
 | |
| 
 | |
| exports.greenscreen = _interopRequire(_greenscreen);
 | |
| 
 | |
| var _harmonic = __webpack_require__(24978);
 | |
| 
 | |
| exports.harmonic = _interopRequire(_harmonic);
 | |
| 
 | |
| var _hopscotch = __webpack_require__(66732);
 | |
| 
 | |
| exports.hopscotch = _interopRequire(_hopscotch);
 | |
| 
 | |
| var _isotope = __webpack_require__(53614);
 | |
| 
 | |
| exports.isotope = _interopRequire(_isotope);
 | |
| 
 | |
| var _marrakesh = __webpack_require__(95650);
 | |
| 
 | |
| exports.marrakesh = _interopRequire(_marrakesh);
 | |
| 
 | |
| var _mocha = __webpack_require__(99699);
 | |
| 
 | |
| exports.mocha = _interopRequire(_mocha);
 | |
| 
 | |
| var _monokai = __webpack_require__(43756);
 | |
| 
 | |
| exports.monokai = _interopRequire(_monokai);
 | |
| 
 | |
| var _ocean = __webpack_require__(60889);
 | |
| 
 | |
| exports.ocean = _interopRequire(_ocean);
 | |
| 
 | |
| var _paraiso = __webpack_require__(27319);
 | |
| 
 | |
| exports.paraiso = _interopRequire(_paraiso);
 | |
| 
 | |
| var _pop = __webpack_require__(75030);
 | |
| 
 | |
| exports.pop = _interopRequire(_pop);
 | |
| 
 | |
| var _railscasts = __webpack_require__(89658);
 | |
| 
 | |
| exports.railscasts = _interopRequire(_railscasts);
 | |
| 
 | |
| var _shapeshifter = __webpack_require__(47900);
 | |
| 
 | |
| exports.shapeshifter = _interopRequire(_shapeshifter);
 | |
| 
 | |
| var _solarized = __webpack_require__(19077);
 | |
| 
 | |
| exports.solarized = _interopRequire(_solarized);
 | |
| 
 | |
| var _summerfruit = __webpack_require__(71126);
 | |
| 
 | |
| exports.summerfruit = _interopRequire(_summerfruit);
 | |
| 
 | |
| var _tomorrow = __webpack_require__(94107);
 | |
| 
 | |
| exports.tomorrow = _interopRequire(_tomorrow);
 | |
| 
 | |
| var _tube = __webpack_require__(52622);
 | |
| 
 | |
| exports.tube = _interopRequire(_tube);
 | |
| 
 | |
| var _twilight = __webpack_require__(25328);
 | |
| 
 | |
| exports.twilight = _interopRequire(_twilight);
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 53614:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'isotope',
 | |
|   author: 'jan t. sott',
 | |
|   base00: '#000000',
 | |
|   base01: '#404040',
 | |
|   base02: '#606060',
 | |
|   base03: '#808080',
 | |
|   base04: '#c0c0c0',
 | |
|   base05: '#d0d0d0',
 | |
|   base06: '#e0e0e0',
 | |
|   base07: '#ffffff',
 | |
|   base08: '#ff0000',
 | |
|   base09: '#ff9900',
 | |
|   base0A: '#ff0099',
 | |
|   base0B: '#33ff00',
 | |
|   base0C: '#00ffff',
 | |
|   base0D: '#0066ff',
 | |
|   base0E: '#cc00ff',
 | |
|   base0F: '#3300ff'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 95650:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'marrakesh',
 | |
|   author: 'alexandre gavioli (http://github.com/alexx2/)',
 | |
|   base00: '#201602',
 | |
|   base01: '#302e00',
 | |
|   base02: '#5f5b17',
 | |
|   base03: '#6c6823',
 | |
|   base04: '#86813b',
 | |
|   base05: '#948e48',
 | |
|   base06: '#ccc37a',
 | |
|   base07: '#faf0a5',
 | |
|   base08: '#c35359',
 | |
|   base09: '#b36144',
 | |
|   base0A: '#a88339',
 | |
|   base0B: '#18974e',
 | |
|   base0C: '#75a738',
 | |
|   base0D: '#477ca1',
 | |
|   base0E: '#8868b3',
 | |
|   base0F: '#b3588e'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 99699:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'mocha',
 | |
|   author: 'chris kempson (http://chriskempson.com)',
 | |
|   base00: '#3B3228',
 | |
|   base01: '#534636',
 | |
|   base02: '#645240',
 | |
|   base03: '#7e705a',
 | |
|   base04: '#b8afad',
 | |
|   base05: '#d0c8c6',
 | |
|   base06: '#e9e1dd',
 | |
|   base07: '#f5eeeb',
 | |
|   base08: '#cb6077',
 | |
|   base09: '#d28b71',
 | |
|   base0A: '#f4bc87',
 | |
|   base0B: '#beb55b',
 | |
|   base0C: '#7bbda4',
 | |
|   base0D: '#8ab3b5',
 | |
|   base0E: '#a89bb9',
 | |
|   base0F: '#bb9584'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 43756:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'monokai',
 | |
|   author: 'wimer hazenberg (http://www.monokai.nl)',
 | |
|   base00: '#272822',
 | |
|   base01: '#383830',
 | |
|   base02: '#49483e',
 | |
|   base03: '#75715e',
 | |
|   base04: '#a59f85',
 | |
|   base05: '#f8f8f2',
 | |
|   base06: '#f5f4f1',
 | |
|   base07: '#f9f8f5',
 | |
|   base08: '#f92672',
 | |
|   base09: '#fd971f',
 | |
|   base0A: '#f4bf75',
 | |
|   base0B: '#a6e22e',
 | |
|   base0C: '#a1efe4',
 | |
|   base0D: '#66d9ef',
 | |
|   base0E: '#ae81ff',
 | |
|   base0F: '#cc6633'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 60889:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'ocean',
 | |
|   author: 'chris kempson (http://chriskempson.com)',
 | |
|   base00: '#2b303b',
 | |
|   base01: '#343d46',
 | |
|   base02: '#4f5b66',
 | |
|   base03: '#65737e',
 | |
|   base04: '#a7adba',
 | |
|   base05: '#c0c5ce',
 | |
|   base06: '#dfe1e8',
 | |
|   base07: '#eff1f5',
 | |
|   base08: '#bf616a',
 | |
|   base09: '#d08770',
 | |
|   base0A: '#ebcb8b',
 | |
|   base0B: '#a3be8c',
 | |
|   base0C: '#96b5b4',
 | |
|   base0D: '#8fa1b3',
 | |
|   base0E: '#b48ead',
 | |
|   base0F: '#ab7967'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 27319:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'paraiso',
 | |
|   author: 'jan t. sott',
 | |
|   base00: '#2f1e2e',
 | |
|   base01: '#41323f',
 | |
|   base02: '#4f424c',
 | |
|   base03: '#776e71',
 | |
|   base04: '#8d8687',
 | |
|   base05: '#a39e9b',
 | |
|   base06: '#b9b6b0',
 | |
|   base07: '#e7e9db',
 | |
|   base08: '#ef6155',
 | |
|   base09: '#f99b15',
 | |
|   base0A: '#fec418',
 | |
|   base0B: '#48b685',
 | |
|   base0C: '#5bc4bf',
 | |
|   base0D: '#06b6ef',
 | |
|   base0E: '#815ba4',
 | |
|   base0F: '#e96ba8'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 75030:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'pop',
 | |
|   author: 'chris kempson (http://chriskempson.com)',
 | |
|   base00: '#000000',
 | |
|   base01: '#202020',
 | |
|   base02: '#303030',
 | |
|   base03: '#505050',
 | |
|   base04: '#b0b0b0',
 | |
|   base05: '#d0d0d0',
 | |
|   base06: '#e0e0e0',
 | |
|   base07: '#ffffff',
 | |
|   base08: '#eb008a',
 | |
|   base09: '#f29333',
 | |
|   base0A: '#f8ca12',
 | |
|   base0B: '#37b349',
 | |
|   base0C: '#00aabb',
 | |
|   base0D: '#0e5a94',
 | |
|   base0E: '#b31e8d',
 | |
|   base0F: '#7a2d00'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 89658:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'railscasts',
 | |
|   author: 'ryan bates (http://railscasts.com)',
 | |
|   base00: '#2b2b2b',
 | |
|   base01: '#272935',
 | |
|   base02: '#3a4055',
 | |
|   base03: '#5a647e',
 | |
|   base04: '#d4cfc9',
 | |
|   base05: '#e6e1dc',
 | |
|   base06: '#f4f1ed',
 | |
|   base07: '#f9f7f3',
 | |
|   base08: '#da4939',
 | |
|   base09: '#cc7833',
 | |
|   base0A: '#ffc66d',
 | |
|   base0B: '#a5c261',
 | |
|   base0C: '#519f50',
 | |
|   base0D: '#6d9cbe',
 | |
|   base0E: '#b6b3eb',
 | |
|   base0F: '#bc9458'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 47900:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'shapeshifter',
 | |
|   author: 'tyler benziger (http://tybenz.com)',
 | |
|   base00: '#000000',
 | |
|   base01: '#040404',
 | |
|   base02: '#102015',
 | |
|   base03: '#343434',
 | |
|   base04: '#555555',
 | |
|   base05: '#ababab',
 | |
|   base06: '#e0e0e0',
 | |
|   base07: '#f9f9f9',
 | |
|   base08: '#e92f2f',
 | |
|   base09: '#e09448',
 | |
|   base0A: '#dddd13',
 | |
|   base0B: '#0ed839',
 | |
|   base0C: '#23edda',
 | |
|   base0D: '#3b48e3',
 | |
|   base0E: '#f996e2',
 | |
|   base0F: '#69542d'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 19077:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'solarized',
 | |
|   author: 'ethan schoonover (http://ethanschoonover.com/solarized)',
 | |
|   base00: '#002b36',
 | |
|   base01: '#073642',
 | |
|   base02: '#586e75',
 | |
|   base03: '#657b83',
 | |
|   base04: '#839496',
 | |
|   base05: '#93a1a1',
 | |
|   base06: '#eee8d5',
 | |
|   base07: '#fdf6e3',
 | |
|   base08: '#dc322f',
 | |
|   base09: '#cb4b16',
 | |
|   base0A: '#b58900',
 | |
|   base0B: '#859900',
 | |
|   base0C: '#2aa198',
 | |
|   base0D: '#268bd2',
 | |
|   base0E: '#6c71c4',
 | |
|   base0F: '#d33682'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 71126:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'summerfruit',
 | |
|   author: 'christopher corley (http://cscorley.github.io/)',
 | |
|   base00: '#151515',
 | |
|   base01: '#202020',
 | |
|   base02: '#303030',
 | |
|   base03: '#505050',
 | |
|   base04: '#B0B0B0',
 | |
|   base05: '#D0D0D0',
 | |
|   base06: '#E0E0E0',
 | |
|   base07: '#FFFFFF',
 | |
|   base08: '#FF0086',
 | |
|   base09: '#FD8900',
 | |
|   base0A: '#ABA800',
 | |
|   base0B: '#00C918',
 | |
|   base0C: '#1faaaa',
 | |
|   base0D: '#3777E6',
 | |
|   base0E: '#AD00A1',
 | |
|   base0F: '#cc6633'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 34104:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'threezerotwofour',
 | |
|   author: 'jan t. sott (http://github.com/idleberg)',
 | |
|   base00: '#090300',
 | |
|   base01: '#3a3432',
 | |
|   base02: '#4a4543',
 | |
|   base03: '#5c5855',
 | |
|   base04: '#807d7c',
 | |
|   base05: '#a5a2a2',
 | |
|   base06: '#d6d5d4',
 | |
|   base07: '#f7f7f7',
 | |
|   base08: '#db2d20',
 | |
|   base09: '#e8bbd0',
 | |
|   base0A: '#fded02',
 | |
|   base0B: '#01a252',
 | |
|   base0C: '#b5e4f4',
 | |
|   base0D: '#01a0e4',
 | |
|   base0E: '#a16a94',
 | |
|   base0F: '#cdab53'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 94107:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'tomorrow',
 | |
|   author: 'chris kempson (http://chriskempson.com)',
 | |
|   base00: '#1d1f21',
 | |
|   base01: '#282a2e',
 | |
|   base02: '#373b41',
 | |
|   base03: '#969896',
 | |
|   base04: '#b4b7b4',
 | |
|   base05: '#c5c8c6',
 | |
|   base06: '#e0e0e0',
 | |
|   base07: '#ffffff',
 | |
|   base08: '#cc6666',
 | |
|   base09: '#de935f',
 | |
|   base0A: '#f0c674',
 | |
|   base0B: '#b5bd68',
 | |
|   base0C: '#8abeb7',
 | |
|   base0D: '#81a2be',
 | |
|   base0E: '#b294bb',
 | |
|   base0F: '#a3685a'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 52622:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'london tube',
 | |
|   author: 'jan t. sott',
 | |
|   base00: '#231f20',
 | |
|   base01: '#1c3f95',
 | |
|   base02: '#5a5758',
 | |
|   base03: '#737171',
 | |
|   base04: '#959ca1',
 | |
|   base05: '#d9d8d8',
 | |
|   base06: '#e7e7e8',
 | |
|   base07: '#ffffff',
 | |
|   base08: '#ee2e24',
 | |
|   base09: '#f386a1',
 | |
|   base0A: '#ffd204',
 | |
|   base0B: '#00853e',
 | |
|   base0C: '#85cebc',
 | |
|   base0D: '#009ddc',
 | |
|   base0E: '#98005d',
 | |
|   base0F: '#b06110'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 25328:
 | |
| /***/ ((module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = {
 | |
|   scheme: 'twilight',
 | |
|   author: 'david hart (http://hart-dev.com)',
 | |
|   base00: '#1e1e1e',
 | |
|   base01: '#323537',
 | |
|   base02: '#464b50',
 | |
|   base03: '#5f5a60',
 | |
|   base04: '#838184',
 | |
|   base05: '#a7a7a7',
 | |
|   base06: '#c3c3c3',
 | |
|   base07: '#ffffff',
 | |
|   base08: '#cf6a4c',
 | |
|   base09: '#cda869',
 | |
|   base0A: '#f9ee98',
 | |
|   base0B: '#8f9d6a',
 | |
|   base0C: '#afc4db',
 | |
|   base0D: '#7587a6',
 | |
|   base0E: '#9b859d',
 | |
|   base0F: '#9b703f'
 | |
| };
 | |
| module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 47297:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| /* MIT license */
 | |
| var cssKeywords = __webpack_require__(10626);
 | |
| 
 | |
| // NOTE: conversions should only return primitive values (i.e. arrays, or
 | |
| //       values that give correct `typeof` results).
 | |
| //       do not use box values types (i.e. Number(), String(), etc.)
 | |
| 
 | |
| var reverseKeywords = {};
 | |
| for (var key in cssKeywords) {
 | |
| 	if (cssKeywords.hasOwnProperty(key)) {
 | |
| 		reverseKeywords[cssKeywords[key]] = key;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| var convert = module.exports = {
 | |
| 	rgb: {channels: 3, labels: 'rgb'},
 | |
| 	hsl: {channels: 3, labels: 'hsl'},
 | |
| 	hsv: {channels: 3, labels: 'hsv'},
 | |
| 	hwb: {channels: 3, labels: 'hwb'},
 | |
| 	cmyk: {channels: 4, labels: 'cmyk'},
 | |
| 	xyz: {channels: 3, labels: 'xyz'},
 | |
| 	lab: {channels: 3, labels: 'lab'},
 | |
| 	lch: {channels: 3, labels: 'lch'},
 | |
| 	hex: {channels: 1, labels: ['hex']},
 | |
| 	keyword: {channels: 1, labels: ['keyword']},
 | |
| 	ansi16: {channels: 1, labels: ['ansi16']},
 | |
| 	ansi256: {channels: 1, labels: ['ansi256']},
 | |
| 	hcg: {channels: 3, labels: ['h', 'c', 'g']},
 | |
| 	apple: {channels: 3, labels: ['r16', 'g16', 'b16']},
 | |
| 	gray: {channels: 1, labels: ['gray']}
 | |
| };
 | |
| 
 | |
| // hide .channels and .labels properties
 | |
| for (var model in convert) {
 | |
| 	if (convert.hasOwnProperty(model)) {
 | |
| 		if (!('channels' in convert[model])) {
 | |
| 			throw new Error('missing channels property: ' + model);
 | |
| 		}
 | |
| 
 | |
| 		if (!('labels' in convert[model])) {
 | |
| 			throw new Error('missing channel labels property: ' + model);
 | |
| 		}
 | |
| 
 | |
| 		if (convert[model].labels.length !== convert[model].channels) {
 | |
| 			throw new Error('channel and label counts mismatch: ' + model);
 | |
| 		}
 | |
| 
 | |
| 		var channels = convert[model].channels;
 | |
| 		var labels = convert[model].labels;
 | |
| 		delete convert[model].channels;
 | |
| 		delete convert[model].labels;
 | |
| 		Object.defineProperty(convert[model], 'channels', {value: channels});
 | |
| 		Object.defineProperty(convert[model], 'labels', {value: labels});
 | |
| 	}
 | |
| }
 | |
| 
 | |
| convert.rgb.hsl = function (rgb) {
 | |
| 	var r = rgb[0] / 255;
 | |
| 	var g = rgb[1] / 255;
 | |
| 	var b = rgb[2] / 255;
 | |
| 	var min = Math.min(r, g, b);
 | |
| 	var max = Math.max(r, g, b);
 | |
| 	var delta = max - min;
 | |
| 	var h;
 | |
| 	var s;
 | |
| 	var l;
 | |
| 
 | |
| 	if (max === min) {
 | |
| 		h = 0;
 | |
| 	} else if (r === max) {
 | |
| 		h = (g - b) / delta;
 | |
| 	} else if (g === max) {
 | |
| 		h = 2 + (b - r) / delta;
 | |
| 	} else if (b === max) {
 | |
| 		h = 4 + (r - g) / delta;
 | |
| 	}
 | |
| 
 | |
| 	h = Math.min(h * 60, 360);
 | |
| 
 | |
| 	if (h < 0) {
 | |
| 		h += 360;
 | |
| 	}
 | |
| 
 | |
| 	l = (min + max) / 2;
 | |
| 
 | |
| 	if (max === min) {
 | |
| 		s = 0;
 | |
| 	} else if (l <= 0.5) {
 | |
| 		s = delta / (max + min);
 | |
| 	} else {
 | |
| 		s = delta / (2 - max - min);
 | |
| 	}
 | |
| 
 | |
| 	return [h, s * 100, l * 100];
 | |
| };
 | |
| 
 | |
| convert.rgb.hsv = function (rgb) {
 | |
| 	var rdif;
 | |
| 	var gdif;
 | |
| 	var bdif;
 | |
| 	var h;
 | |
| 	var s;
 | |
| 
 | |
| 	var r = rgb[0] / 255;
 | |
| 	var g = rgb[1] / 255;
 | |
| 	var b = rgb[2] / 255;
 | |
| 	var v = Math.max(r, g, b);
 | |
| 	var diff = v - Math.min(r, g, b);
 | |
| 	var diffc = function (c) {
 | |
| 		return (v - c) / 6 / diff + 1 / 2;
 | |
| 	};
 | |
| 
 | |
| 	if (diff === 0) {
 | |
| 		h = s = 0;
 | |
| 	} else {
 | |
| 		s = diff / v;
 | |
| 		rdif = diffc(r);
 | |
| 		gdif = diffc(g);
 | |
| 		bdif = diffc(b);
 | |
| 
 | |
| 		if (r === v) {
 | |
| 			h = bdif - gdif;
 | |
| 		} else if (g === v) {
 | |
| 			h = (1 / 3) + rdif - bdif;
 | |
| 		} else if (b === v) {
 | |
| 			h = (2 / 3) + gdif - rdif;
 | |
| 		}
 | |
| 		if (h < 0) {
 | |
| 			h += 1;
 | |
| 		} else if (h > 1) {
 | |
| 			h -= 1;
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	return [
 | |
| 		h * 360,
 | |
| 		s * 100,
 | |
| 		v * 100
 | |
| 	];
 | |
| };
 | |
| 
 | |
| convert.rgb.hwb = function (rgb) {
 | |
| 	var r = rgb[0];
 | |
| 	var g = rgb[1];
 | |
| 	var b = rgb[2];
 | |
| 	var h = convert.rgb.hsl(rgb)[0];
 | |
| 	var w = 1 / 255 * Math.min(r, Math.min(g, b));
 | |
| 
 | |
| 	b = 1 - 1 / 255 * Math.max(r, Math.max(g, b));
 | |
| 
 | |
| 	return [h, w * 100, b * 100];
 | |
| };
 | |
| 
 | |
| convert.rgb.cmyk = function (rgb) {
 | |
| 	var r = rgb[0] / 255;
 | |
| 	var g = rgb[1] / 255;
 | |
| 	var b = rgb[2] / 255;
 | |
| 	var c;
 | |
| 	var m;
 | |
| 	var y;
 | |
| 	var k;
 | |
| 
 | |
| 	k = Math.min(1 - r, 1 - g, 1 - b);
 | |
| 	c = (1 - r - k) / (1 - k) || 0;
 | |
| 	m = (1 - g - k) / (1 - k) || 0;
 | |
| 	y = (1 - b - k) / (1 - k) || 0;
 | |
| 
 | |
| 	return [c * 100, m * 100, y * 100, k * 100];
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance
 | |
|  * */
 | |
| function comparativeDistance(x, y) {
 | |
| 	return (
 | |
| 		Math.pow(x[0] - y[0], 2) +
 | |
| 		Math.pow(x[1] - y[1], 2) +
 | |
| 		Math.pow(x[2] - y[2], 2)
 | |
| 	);
 | |
| }
 | |
| 
 | |
| convert.rgb.keyword = function (rgb) {
 | |
| 	var reversed = reverseKeywords[rgb];
 | |
| 	if (reversed) {
 | |
| 		return reversed;
 | |
| 	}
 | |
| 
 | |
| 	var currentClosestDistance = Infinity;
 | |
| 	var currentClosestKeyword;
 | |
| 
 | |
| 	for (var keyword in cssKeywords) {
 | |
| 		if (cssKeywords.hasOwnProperty(keyword)) {
 | |
| 			var value = cssKeywords[keyword];
 | |
| 
 | |
| 			// Compute comparative distance
 | |
| 			var distance = comparativeDistance(rgb, value);
 | |
| 
 | |
| 			// Check if its less, if so set as closest
 | |
| 			if (distance < currentClosestDistance) {
 | |
| 				currentClosestDistance = distance;
 | |
| 				currentClosestKeyword = keyword;
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	return currentClosestKeyword;
 | |
| };
 | |
| 
 | |
| convert.keyword.rgb = function (keyword) {
 | |
| 	return cssKeywords[keyword];
 | |
| };
 | |
| 
 | |
| convert.rgb.xyz = function (rgb) {
 | |
| 	var r = rgb[0] / 255;
 | |
| 	var g = rgb[1] / 255;
 | |
| 	var b = rgb[2] / 255;
 | |
| 
 | |
| 	// assume sRGB
 | |
| 	r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);
 | |
| 	g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);
 | |
| 	b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);
 | |
| 
 | |
| 	var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);
 | |
| 	var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);
 | |
| 	var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);
 | |
| 
 | |
| 	return [x * 100, y * 100, z * 100];
 | |
| };
 | |
| 
 | |
| convert.rgb.lab = function (rgb) {
 | |
| 	var xyz = convert.rgb.xyz(rgb);
 | |
| 	var x = xyz[0];
 | |
| 	var y = xyz[1];
 | |
| 	var z = xyz[2];
 | |
| 	var l;
 | |
| 	var a;
 | |
| 	var b;
 | |
| 
 | |
| 	x /= 95.047;
 | |
| 	y /= 100;
 | |
| 	z /= 108.883;
 | |
| 
 | |
| 	x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);
 | |
| 	y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);
 | |
| 	z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);
 | |
| 
 | |
| 	l = (116 * y) - 16;
 | |
| 	a = 500 * (x - y);
 | |
| 	b = 200 * (y - z);
 | |
| 
 | |
| 	return [l, a, b];
 | |
| };
 | |
| 
 | |
| convert.hsl.rgb = function (hsl) {
 | |
| 	var h = hsl[0] / 360;
 | |
| 	var s = hsl[1] / 100;
 | |
| 	var l = hsl[2] / 100;
 | |
| 	var t1;
 | |
| 	var t2;
 | |
| 	var t3;
 | |
| 	var rgb;
 | |
| 	var val;
 | |
| 
 | |
| 	if (s === 0) {
 | |
| 		val = l * 255;
 | |
| 		return [val, val, val];
 | |
| 	}
 | |
| 
 | |
| 	if (l < 0.5) {
 | |
| 		t2 = l * (1 + s);
 | |
| 	} else {
 | |
| 		t2 = l + s - l * s;
 | |
| 	}
 | |
| 
 | |
| 	t1 = 2 * l - t2;
 | |
| 
 | |
| 	rgb = [0, 0, 0];
 | |
| 	for (var i = 0; i < 3; i++) {
 | |
| 		t3 = h + 1 / 3 * -(i - 1);
 | |
| 		if (t3 < 0) {
 | |
| 			t3++;
 | |
| 		}
 | |
| 		if (t3 > 1) {
 | |
| 			t3--;
 | |
| 		}
 | |
| 
 | |
| 		if (6 * t3 < 1) {
 | |
| 			val = t1 + (t2 - t1) * 6 * t3;
 | |
| 		} else if (2 * t3 < 1) {
 | |
| 			val = t2;
 | |
| 		} else if (3 * t3 < 2) {
 | |
| 			val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;
 | |
| 		} else {
 | |
| 			val = t1;
 | |
| 		}
 | |
| 
 | |
| 		rgb[i] = val * 255;
 | |
| 	}
 | |
| 
 | |
| 	return rgb;
 | |
| };
 | |
| 
 | |
| convert.hsl.hsv = function (hsl) {
 | |
| 	var h = hsl[0];
 | |
| 	var s = hsl[1] / 100;
 | |
| 	var l = hsl[2] / 100;
 | |
| 	var smin = s;
 | |
| 	var lmin = Math.max(l, 0.01);
 | |
| 	var sv;
 | |
| 	var v;
 | |
| 
 | |
| 	l *= 2;
 | |
| 	s *= (l <= 1) ? l : 2 - l;
 | |
| 	smin *= lmin <= 1 ? lmin : 2 - lmin;
 | |
| 	v = (l + s) / 2;
 | |
| 	sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);
 | |
| 
 | |
| 	return [h, sv * 100, v * 100];
 | |
| };
 | |
| 
 | |
| convert.hsv.rgb = function (hsv) {
 | |
| 	var h = hsv[0] / 60;
 | |
| 	var s = hsv[1] / 100;
 | |
| 	var v = hsv[2] / 100;
 | |
| 	var hi = Math.floor(h) % 6;
 | |
| 
 | |
| 	var f = h - Math.floor(h);
 | |
| 	var p = 255 * v * (1 - s);
 | |
| 	var q = 255 * v * (1 - (s * f));
 | |
| 	var t = 255 * v * (1 - (s * (1 - f)));
 | |
| 	v *= 255;
 | |
| 
 | |
| 	switch (hi) {
 | |
| 		case 0:
 | |
| 			return [v, t, p];
 | |
| 		case 1:
 | |
| 			return [q, v, p];
 | |
| 		case 2:
 | |
| 			return [p, v, t];
 | |
| 		case 3:
 | |
| 			return [p, q, v];
 | |
| 		case 4:
 | |
| 			return [t, p, v];
 | |
| 		case 5:
 | |
| 			return [v, p, q];
 | |
| 	}
 | |
| };
 | |
| 
 | |
| convert.hsv.hsl = function (hsv) {
 | |
| 	var h = hsv[0];
 | |
| 	var s = hsv[1] / 100;
 | |
| 	var v = hsv[2] / 100;
 | |
| 	var vmin = Math.max(v, 0.01);
 | |
| 	var lmin;
 | |
| 	var sl;
 | |
| 	var l;
 | |
| 
 | |
| 	l = (2 - s) * v;
 | |
| 	lmin = (2 - s) * vmin;
 | |
| 	sl = s * vmin;
 | |
| 	sl /= (lmin <= 1) ? lmin : 2 - lmin;
 | |
| 	sl = sl || 0;
 | |
| 	l /= 2;
 | |
| 
 | |
| 	return [h, sl * 100, l * 100];
 | |
| };
 | |
| 
 | |
| // http://dev.w3.org/csswg/css-color/#hwb-to-rgb
 | |
| convert.hwb.rgb = function (hwb) {
 | |
| 	var h = hwb[0] / 360;
 | |
| 	var wh = hwb[1] / 100;
 | |
| 	var bl = hwb[2] / 100;
 | |
| 	var ratio = wh + bl;
 | |
| 	var i;
 | |
| 	var v;
 | |
| 	var f;
 | |
| 	var n;
 | |
| 
 | |
| 	// wh + bl cant be > 1
 | |
| 	if (ratio > 1) {
 | |
| 		wh /= ratio;
 | |
| 		bl /= ratio;
 | |
| 	}
 | |
| 
 | |
| 	i = Math.floor(6 * h);
 | |
| 	v = 1 - bl;
 | |
| 	f = 6 * h - i;
 | |
| 
 | |
| 	if ((i & 0x01) !== 0) {
 | |
| 		f = 1 - f;
 | |
| 	}
 | |
| 
 | |
| 	n = wh + f * (v - wh); // linear interpolation
 | |
| 
 | |
| 	var r;
 | |
| 	var g;
 | |
| 	var b;
 | |
| 	switch (i) {
 | |
| 		default:
 | |
| 		case 6:
 | |
| 		case 0: r = v; g = n; b = wh; break;
 | |
| 		case 1: r = n; g = v; b = wh; break;
 | |
| 		case 2: r = wh; g = v; b = n; break;
 | |
| 		case 3: r = wh; g = n; b = v; break;
 | |
| 		case 4: r = n; g = wh; b = v; break;
 | |
| 		case 5: r = v; g = wh; b = n; break;
 | |
| 	}
 | |
| 
 | |
| 	return [r * 255, g * 255, b * 255];
 | |
| };
 | |
| 
 | |
| convert.cmyk.rgb = function (cmyk) {
 | |
| 	var c = cmyk[0] / 100;
 | |
| 	var m = cmyk[1] / 100;
 | |
| 	var y = cmyk[2] / 100;
 | |
| 	var k = cmyk[3] / 100;
 | |
| 	var r;
 | |
| 	var g;
 | |
| 	var b;
 | |
| 
 | |
| 	r = 1 - Math.min(1, c * (1 - k) + k);
 | |
| 	g = 1 - Math.min(1, m * (1 - k) + k);
 | |
| 	b = 1 - Math.min(1, y * (1 - k) + k);
 | |
| 
 | |
| 	return [r * 255, g * 255, b * 255];
 | |
| };
 | |
| 
 | |
| convert.xyz.rgb = function (xyz) {
 | |
| 	var x = xyz[0] / 100;
 | |
| 	var y = xyz[1] / 100;
 | |
| 	var z = xyz[2] / 100;
 | |
| 	var r;
 | |
| 	var g;
 | |
| 	var b;
 | |
| 
 | |
| 	r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);
 | |
| 	g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);
 | |
| 	b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);
 | |
| 
 | |
| 	// assume sRGB
 | |
| 	r = r > 0.0031308
 | |
| 		? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)
 | |
| 		: r * 12.92;
 | |
| 
 | |
| 	g = g > 0.0031308
 | |
| 		? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)
 | |
| 		: g * 12.92;
 | |
| 
 | |
| 	b = b > 0.0031308
 | |
| 		? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)
 | |
| 		: b * 12.92;
 | |
| 
 | |
| 	r = Math.min(Math.max(0, r), 1);
 | |
| 	g = Math.min(Math.max(0, g), 1);
 | |
| 	b = Math.min(Math.max(0, b), 1);
 | |
| 
 | |
| 	return [r * 255, g * 255, b * 255];
 | |
| };
 | |
| 
 | |
| convert.xyz.lab = function (xyz) {
 | |
| 	var x = xyz[0];
 | |
| 	var y = xyz[1];
 | |
| 	var z = xyz[2];
 | |
| 	var l;
 | |
| 	var a;
 | |
| 	var b;
 | |
| 
 | |
| 	x /= 95.047;
 | |
| 	y /= 100;
 | |
| 	z /= 108.883;
 | |
| 
 | |
| 	x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);
 | |
| 	y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);
 | |
| 	z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);
 | |
| 
 | |
| 	l = (116 * y) - 16;
 | |
| 	a = 500 * (x - y);
 | |
| 	b = 200 * (y - z);
 | |
| 
 | |
| 	return [l, a, b];
 | |
| };
 | |
| 
 | |
| convert.lab.xyz = function (lab) {
 | |
| 	var l = lab[0];
 | |
| 	var a = lab[1];
 | |
| 	var b = lab[2];
 | |
| 	var x;
 | |
| 	var y;
 | |
| 	var z;
 | |
| 
 | |
| 	y = (l + 16) / 116;
 | |
| 	x = a / 500 + y;
 | |
| 	z = y - b / 200;
 | |
| 
 | |
| 	var y2 = Math.pow(y, 3);
 | |
| 	var x2 = Math.pow(x, 3);
 | |
| 	var z2 = Math.pow(z, 3);
 | |
| 	y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;
 | |
| 	x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;
 | |
| 	z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;
 | |
| 
 | |
| 	x *= 95.047;
 | |
| 	y *= 100;
 | |
| 	z *= 108.883;
 | |
| 
 | |
| 	return [x, y, z];
 | |
| };
 | |
| 
 | |
| convert.lab.lch = function (lab) {
 | |
| 	var l = lab[0];
 | |
| 	var a = lab[1];
 | |
| 	var b = lab[2];
 | |
| 	var hr;
 | |
| 	var h;
 | |
| 	var c;
 | |
| 
 | |
| 	hr = Math.atan2(b, a);
 | |
| 	h = hr * 360 / 2 / Math.PI;
 | |
| 
 | |
| 	if (h < 0) {
 | |
| 		h += 360;
 | |
| 	}
 | |
| 
 | |
| 	c = Math.sqrt(a * a + b * b);
 | |
| 
 | |
| 	return [l, c, h];
 | |
| };
 | |
| 
 | |
| convert.lch.lab = function (lch) {
 | |
| 	var l = lch[0];
 | |
| 	var c = lch[1];
 | |
| 	var h = lch[2];
 | |
| 	var a;
 | |
| 	var b;
 | |
| 	var hr;
 | |
| 
 | |
| 	hr = h / 360 * 2 * Math.PI;
 | |
| 	a = c * Math.cos(hr);
 | |
| 	b = c * Math.sin(hr);
 | |
| 
 | |
| 	return [l, a, b];
 | |
| };
 | |
| 
 | |
| convert.rgb.ansi16 = function (args) {
 | |
| 	var r = args[0];
 | |
| 	var g = args[1];
 | |
| 	var b = args[2];
 | |
| 	var value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization
 | |
| 
 | |
| 	value = Math.round(value / 50);
 | |
| 
 | |
| 	if (value === 0) {
 | |
| 		return 30;
 | |
| 	}
 | |
| 
 | |
| 	var ansi = 30
 | |
| 		+ ((Math.round(b / 255) << 2)
 | |
| 		| (Math.round(g / 255) << 1)
 | |
| 		| Math.round(r / 255));
 | |
| 
 | |
| 	if (value === 2) {
 | |
| 		ansi += 60;
 | |
| 	}
 | |
| 
 | |
| 	return ansi;
 | |
| };
 | |
| 
 | |
| convert.hsv.ansi16 = function (args) {
 | |
| 	// optimization here; we already know the value and don't need to get
 | |
| 	// it converted for us.
 | |
| 	return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);
 | |
| };
 | |
| 
 | |
| convert.rgb.ansi256 = function (args) {
 | |
| 	var r = args[0];
 | |
| 	var g = args[1];
 | |
| 	var b = args[2];
 | |
| 
 | |
| 	// we use the extended greyscale palette here, with the exception of
 | |
| 	// black and white. normal palette only has 4 greyscale shades.
 | |
| 	if (r === g && g === b) {
 | |
| 		if (r < 8) {
 | |
| 			return 16;
 | |
| 		}
 | |
| 
 | |
| 		if (r > 248) {
 | |
| 			return 231;
 | |
| 		}
 | |
| 
 | |
| 		return Math.round(((r - 8) / 247) * 24) + 232;
 | |
| 	}
 | |
| 
 | |
| 	var ansi = 16
 | |
| 		+ (36 * Math.round(r / 255 * 5))
 | |
| 		+ (6 * Math.round(g / 255 * 5))
 | |
| 		+ Math.round(b / 255 * 5);
 | |
| 
 | |
| 	return ansi;
 | |
| };
 | |
| 
 | |
| convert.ansi16.rgb = function (args) {
 | |
| 	var color = args % 10;
 | |
| 
 | |
| 	// handle greyscale
 | |
| 	if (color === 0 || color === 7) {
 | |
| 		if (args > 50) {
 | |
| 			color += 3.5;
 | |
| 		}
 | |
| 
 | |
| 		color = color / 10.5 * 255;
 | |
| 
 | |
| 		return [color, color, color];
 | |
| 	}
 | |
| 
 | |
| 	var mult = (~~(args > 50) + 1) * 0.5;
 | |
| 	var r = ((color & 1) * mult) * 255;
 | |
| 	var g = (((color >> 1) & 1) * mult) * 255;
 | |
| 	var b = (((color >> 2) & 1) * mult) * 255;
 | |
| 
 | |
| 	return [r, g, b];
 | |
| };
 | |
| 
 | |
| convert.ansi256.rgb = function (args) {
 | |
| 	// handle greyscale
 | |
| 	if (args >= 232) {
 | |
| 		var c = (args - 232) * 10 + 8;
 | |
| 		return [c, c, c];
 | |
| 	}
 | |
| 
 | |
| 	args -= 16;
 | |
| 
 | |
| 	var rem;
 | |
| 	var r = Math.floor(args / 36) / 5 * 255;
 | |
| 	var g = Math.floor((rem = args % 36) / 6) / 5 * 255;
 | |
| 	var b = (rem % 6) / 5 * 255;
 | |
| 
 | |
| 	return [r, g, b];
 | |
| };
 | |
| 
 | |
| convert.rgb.hex = function (args) {
 | |
| 	var integer = ((Math.round(args[0]) & 0xFF) << 16)
 | |
| 		+ ((Math.round(args[1]) & 0xFF) << 8)
 | |
| 		+ (Math.round(args[2]) & 0xFF);
 | |
| 
 | |
| 	var string = integer.toString(16).toUpperCase();
 | |
| 	return '000000'.substring(string.length) + string;
 | |
| };
 | |
| 
 | |
| convert.hex.rgb = function (args) {
 | |
| 	var match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);
 | |
| 	if (!match) {
 | |
| 		return [0, 0, 0];
 | |
| 	}
 | |
| 
 | |
| 	var colorString = match[0];
 | |
| 
 | |
| 	if (match[0].length === 3) {
 | |
| 		colorString = colorString.split('').map(function (char) {
 | |
| 			return char + char;
 | |
| 		}).join('');
 | |
| 	}
 | |
| 
 | |
| 	var integer = parseInt(colorString, 16);
 | |
| 	var r = (integer >> 16) & 0xFF;
 | |
| 	var g = (integer >> 8) & 0xFF;
 | |
| 	var b = integer & 0xFF;
 | |
| 
 | |
| 	return [r, g, b];
 | |
| };
 | |
| 
 | |
| convert.rgb.hcg = function (rgb) {
 | |
| 	var r = rgb[0] / 255;
 | |
| 	var g = rgb[1] / 255;
 | |
| 	var b = rgb[2] / 255;
 | |
| 	var max = Math.max(Math.max(r, g), b);
 | |
| 	var min = Math.min(Math.min(r, g), b);
 | |
| 	var chroma = (max - min);
 | |
| 	var grayscale;
 | |
| 	var hue;
 | |
| 
 | |
| 	if (chroma < 1) {
 | |
| 		grayscale = min / (1 - chroma);
 | |
| 	} else {
 | |
| 		grayscale = 0;
 | |
| 	}
 | |
| 
 | |
| 	if (chroma <= 0) {
 | |
| 		hue = 0;
 | |
| 	} else
 | |
| 	if (max === r) {
 | |
| 		hue = ((g - b) / chroma) % 6;
 | |
| 	} else
 | |
| 	if (max === g) {
 | |
| 		hue = 2 + (b - r) / chroma;
 | |
| 	} else {
 | |
| 		hue = 4 + (r - g) / chroma + 4;
 | |
| 	}
 | |
| 
 | |
| 	hue /= 6;
 | |
| 	hue %= 1;
 | |
| 
 | |
| 	return [hue * 360, chroma * 100, grayscale * 100];
 | |
| };
 | |
| 
 | |
| convert.hsl.hcg = function (hsl) {
 | |
| 	var s = hsl[1] / 100;
 | |
| 	var l = hsl[2] / 100;
 | |
| 	var c = 1;
 | |
| 	var f = 0;
 | |
| 
 | |
| 	if (l < 0.5) {
 | |
| 		c = 2.0 * s * l;
 | |
| 	} else {
 | |
| 		c = 2.0 * s * (1.0 - l);
 | |
| 	}
 | |
| 
 | |
| 	if (c < 1.0) {
 | |
| 		f = (l - 0.5 * c) / (1.0 - c);
 | |
| 	}
 | |
| 
 | |
| 	return [hsl[0], c * 100, f * 100];
 | |
| };
 | |
| 
 | |
| convert.hsv.hcg = function (hsv) {
 | |
| 	var s = hsv[1] / 100;
 | |
| 	var v = hsv[2] / 100;
 | |
| 
 | |
| 	var c = s * v;
 | |
| 	var f = 0;
 | |
| 
 | |
| 	if (c < 1.0) {
 | |
| 		f = (v - c) / (1 - c);
 | |
| 	}
 | |
| 
 | |
| 	return [hsv[0], c * 100, f * 100];
 | |
| };
 | |
| 
 | |
| convert.hcg.rgb = function (hcg) {
 | |
| 	var h = hcg[0] / 360;
 | |
| 	var c = hcg[1] / 100;
 | |
| 	var g = hcg[2] / 100;
 | |
| 
 | |
| 	if (c === 0.0) {
 | |
| 		return [g * 255, g * 255, g * 255];
 | |
| 	}
 | |
| 
 | |
| 	var pure = [0, 0, 0];
 | |
| 	var hi = (h % 1) * 6;
 | |
| 	var v = hi % 1;
 | |
| 	var w = 1 - v;
 | |
| 	var mg = 0;
 | |
| 
 | |
| 	switch (Math.floor(hi)) {
 | |
| 		case 0:
 | |
| 			pure[0] = 1; pure[1] = v; pure[2] = 0; break;
 | |
| 		case 1:
 | |
| 			pure[0] = w; pure[1] = 1; pure[2] = 0; break;
 | |
| 		case 2:
 | |
| 			pure[0] = 0; pure[1] = 1; pure[2] = v; break;
 | |
| 		case 3:
 | |
| 			pure[0] = 0; pure[1] = w; pure[2] = 1; break;
 | |
| 		case 4:
 | |
| 			pure[0] = v; pure[1] = 0; pure[2] = 1; break;
 | |
| 		default:
 | |
| 			pure[0] = 1; pure[1] = 0; pure[2] = w;
 | |
| 	}
 | |
| 
 | |
| 	mg = (1.0 - c) * g;
 | |
| 
 | |
| 	return [
 | |
| 		(c * pure[0] + mg) * 255,
 | |
| 		(c * pure[1] + mg) * 255,
 | |
| 		(c * pure[2] + mg) * 255
 | |
| 	];
 | |
| };
 | |
| 
 | |
| convert.hcg.hsv = function (hcg) {
 | |
| 	var c = hcg[1] / 100;
 | |
| 	var g = hcg[2] / 100;
 | |
| 
 | |
| 	var v = c + g * (1.0 - c);
 | |
| 	var f = 0;
 | |
| 
 | |
| 	if (v > 0.0) {
 | |
| 		f = c / v;
 | |
| 	}
 | |
| 
 | |
| 	return [hcg[0], f * 100, v * 100];
 | |
| };
 | |
| 
 | |
| convert.hcg.hsl = function (hcg) {
 | |
| 	var c = hcg[1] / 100;
 | |
| 	var g = hcg[2] / 100;
 | |
| 
 | |
| 	var l = g * (1.0 - c) + 0.5 * c;
 | |
| 	var s = 0;
 | |
| 
 | |
| 	if (l > 0.0 && l < 0.5) {
 | |
| 		s = c / (2 * l);
 | |
| 	} else
 | |
| 	if (l >= 0.5 && l < 1.0) {
 | |
| 		s = c / (2 * (1 - l));
 | |
| 	}
 | |
| 
 | |
| 	return [hcg[0], s * 100, l * 100];
 | |
| };
 | |
| 
 | |
| convert.hcg.hwb = function (hcg) {
 | |
| 	var c = hcg[1] / 100;
 | |
| 	var g = hcg[2] / 100;
 | |
| 	var v = c + g * (1.0 - c);
 | |
| 	return [hcg[0], (v - c) * 100, (1 - v) * 100];
 | |
| };
 | |
| 
 | |
| convert.hwb.hcg = function (hwb) {
 | |
| 	var w = hwb[1] / 100;
 | |
| 	var b = hwb[2] / 100;
 | |
| 	var v = 1 - b;
 | |
| 	var c = v - w;
 | |
| 	var g = 0;
 | |
| 
 | |
| 	if (c < 1) {
 | |
| 		g = (v - c) / (1 - c);
 | |
| 	}
 | |
| 
 | |
| 	return [hwb[0], c * 100, g * 100];
 | |
| };
 | |
| 
 | |
| convert.apple.rgb = function (apple) {
 | |
| 	return [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];
 | |
| };
 | |
| 
 | |
| convert.rgb.apple = function (rgb) {
 | |
| 	return [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];
 | |
| };
 | |
| 
 | |
| convert.gray.rgb = function (args) {
 | |
| 	return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];
 | |
| };
 | |
| 
 | |
| convert.gray.hsl = convert.gray.hsv = function (args) {
 | |
| 	return [0, 0, args[0]];
 | |
| };
 | |
| 
 | |
| convert.gray.hwb = function (gray) {
 | |
| 	return [0, 100, gray[0]];
 | |
| };
 | |
| 
 | |
| convert.gray.cmyk = function (gray) {
 | |
| 	return [0, 0, 0, gray[0]];
 | |
| };
 | |
| 
 | |
| convert.gray.lab = function (gray) {
 | |
| 	return [gray[0], 0, 0];
 | |
| };
 | |
| 
 | |
| convert.gray.hex = function (gray) {
 | |
| 	var val = Math.round(gray[0] / 100 * 255) & 0xFF;
 | |
| 	var integer = (val << 16) + (val << 8) + val;
 | |
| 
 | |
| 	var string = integer.toString(16).toUpperCase();
 | |
| 	return '000000'.substring(string.length) + string;
 | |
| };
 | |
| 
 | |
| convert.rgb.gray = function (rgb) {
 | |
| 	var val = (rgb[0] + rgb[1] + rgb[2]) / 3;
 | |
| 	return [val / 255 * 100];
 | |
| };
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 31642:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var conversions = __webpack_require__(47297);
 | |
| var route = __webpack_require__(77971);
 | |
| 
 | |
| var convert = {};
 | |
| 
 | |
| var models = Object.keys(conversions);
 | |
| 
 | |
| function wrapRaw(fn) {
 | |
| 	var wrappedFn = function (args) {
 | |
| 		if (args === undefined || args === null) {
 | |
| 			return args;
 | |
| 		}
 | |
| 
 | |
| 		if (arguments.length > 1) {
 | |
| 			args = Array.prototype.slice.call(arguments);
 | |
| 		}
 | |
| 
 | |
| 		return fn(args);
 | |
| 	};
 | |
| 
 | |
| 	// preserve .conversion property if there is one
 | |
| 	if ('conversion' in fn) {
 | |
| 		wrappedFn.conversion = fn.conversion;
 | |
| 	}
 | |
| 
 | |
| 	return wrappedFn;
 | |
| }
 | |
| 
 | |
| function wrapRounded(fn) {
 | |
| 	var wrappedFn = function (args) {
 | |
| 		if (args === undefined || args === null) {
 | |
| 			return args;
 | |
| 		}
 | |
| 
 | |
| 		if (arguments.length > 1) {
 | |
| 			args = Array.prototype.slice.call(arguments);
 | |
| 		}
 | |
| 
 | |
| 		var result = fn(args);
 | |
| 
 | |
| 		// we're assuming the result is an array here.
 | |
| 		// see notice in conversions.js; don't use box types
 | |
| 		// in conversion functions.
 | |
| 		if (typeof result === 'object') {
 | |
| 			for (var len = result.length, i = 0; i < len; i++) {
 | |
| 				result[i] = Math.round(result[i]);
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		return result;
 | |
| 	};
 | |
| 
 | |
| 	// preserve .conversion property if there is one
 | |
| 	if ('conversion' in fn) {
 | |
| 		wrappedFn.conversion = fn.conversion;
 | |
| 	}
 | |
| 
 | |
| 	return wrappedFn;
 | |
| }
 | |
| 
 | |
| models.forEach(function (fromModel) {
 | |
| 	convert[fromModel] = {};
 | |
| 
 | |
| 	Object.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});
 | |
| 	Object.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});
 | |
| 
 | |
| 	var routes = route(fromModel);
 | |
| 	var routeModels = Object.keys(routes);
 | |
| 
 | |
| 	routeModels.forEach(function (toModel) {
 | |
| 		var fn = routes[toModel];
 | |
| 
 | |
| 		convert[fromModel][toModel] = wrapRounded(fn);
 | |
| 		convert[fromModel][toModel].raw = wrapRaw(fn);
 | |
| 	});
 | |
| });
 | |
| 
 | |
| module.exports = convert;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 10626:
 | |
| /***/ ((module) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| module.exports = {
 | |
| 	"aliceblue": [240, 248, 255],
 | |
| 	"antiquewhite": [250, 235, 215],
 | |
| 	"aqua": [0, 255, 255],
 | |
| 	"aquamarine": [127, 255, 212],
 | |
| 	"azure": [240, 255, 255],
 | |
| 	"beige": [245, 245, 220],
 | |
| 	"bisque": [255, 228, 196],
 | |
| 	"black": [0, 0, 0],
 | |
| 	"blanchedalmond": [255, 235, 205],
 | |
| 	"blue": [0, 0, 255],
 | |
| 	"blueviolet": [138, 43, 226],
 | |
| 	"brown": [165, 42, 42],
 | |
| 	"burlywood": [222, 184, 135],
 | |
| 	"cadetblue": [95, 158, 160],
 | |
| 	"chartreuse": [127, 255, 0],
 | |
| 	"chocolate": [210, 105, 30],
 | |
| 	"coral": [255, 127, 80],
 | |
| 	"cornflowerblue": [100, 149, 237],
 | |
| 	"cornsilk": [255, 248, 220],
 | |
| 	"crimson": [220, 20, 60],
 | |
| 	"cyan": [0, 255, 255],
 | |
| 	"darkblue": [0, 0, 139],
 | |
| 	"darkcyan": [0, 139, 139],
 | |
| 	"darkgoldenrod": [184, 134, 11],
 | |
| 	"darkgray": [169, 169, 169],
 | |
| 	"darkgreen": [0, 100, 0],
 | |
| 	"darkgrey": [169, 169, 169],
 | |
| 	"darkkhaki": [189, 183, 107],
 | |
| 	"darkmagenta": [139, 0, 139],
 | |
| 	"darkolivegreen": [85, 107, 47],
 | |
| 	"darkorange": [255, 140, 0],
 | |
| 	"darkorchid": [153, 50, 204],
 | |
| 	"darkred": [139, 0, 0],
 | |
| 	"darksalmon": [233, 150, 122],
 | |
| 	"darkseagreen": [143, 188, 143],
 | |
| 	"darkslateblue": [72, 61, 139],
 | |
| 	"darkslategray": [47, 79, 79],
 | |
| 	"darkslategrey": [47, 79, 79],
 | |
| 	"darkturquoise": [0, 206, 209],
 | |
| 	"darkviolet": [148, 0, 211],
 | |
| 	"deeppink": [255, 20, 147],
 | |
| 	"deepskyblue": [0, 191, 255],
 | |
| 	"dimgray": [105, 105, 105],
 | |
| 	"dimgrey": [105, 105, 105],
 | |
| 	"dodgerblue": [30, 144, 255],
 | |
| 	"firebrick": [178, 34, 34],
 | |
| 	"floralwhite": [255, 250, 240],
 | |
| 	"forestgreen": [34, 139, 34],
 | |
| 	"fuchsia": [255, 0, 255],
 | |
| 	"gainsboro": [220, 220, 220],
 | |
| 	"ghostwhite": [248, 248, 255],
 | |
| 	"gold": [255, 215, 0],
 | |
| 	"goldenrod": [218, 165, 32],
 | |
| 	"gray": [128, 128, 128],
 | |
| 	"green": [0, 128, 0],
 | |
| 	"greenyellow": [173, 255, 47],
 | |
| 	"grey": [128, 128, 128],
 | |
| 	"honeydew": [240, 255, 240],
 | |
| 	"hotpink": [255, 105, 180],
 | |
| 	"indianred": [205, 92, 92],
 | |
| 	"indigo": [75, 0, 130],
 | |
| 	"ivory": [255, 255, 240],
 | |
| 	"khaki": [240, 230, 140],
 | |
| 	"lavender": [230, 230, 250],
 | |
| 	"lavenderblush": [255, 240, 245],
 | |
| 	"lawngreen": [124, 252, 0],
 | |
| 	"lemonchiffon": [255, 250, 205],
 | |
| 	"lightblue": [173, 216, 230],
 | |
| 	"lightcoral": [240, 128, 128],
 | |
| 	"lightcyan": [224, 255, 255],
 | |
| 	"lightgoldenrodyellow": [250, 250, 210],
 | |
| 	"lightgray": [211, 211, 211],
 | |
| 	"lightgreen": [144, 238, 144],
 | |
| 	"lightgrey": [211, 211, 211],
 | |
| 	"lightpink": [255, 182, 193],
 | |
| 	"lightsalmon": [255, 160, 122],
 | |
| 	"lightseagreen": [32, 178, 170],
 | |
| 	"lightskyblue": [135, 206, 250],
 | |
| 	"lightslategray": [119, 136, 153],
 | |
| 	"lightslategrey": [119, 136, 153],
 | |
| 	"lightsteelblue": [176, 196, 222],
 | |
| 	"lightyellow": [255, 255, 224],
 | |
| 	"lime": [0, 255, 0],
 | |
| 	"limegreen": [50, 205, 50],
 | |
| 	"linen": [250, 240, 230],
 | |
| 	"magenta": [255, 0, 255],
 | |
| 	"maroon": [128, 0, 0],
 | |
| 	"mediumaquamarine": [102, 205, 170],
 | |
| 	"mediumblue": [0, 0, 205],
 | |
| 	"mediumorchid": [186, 85, 211],
 | |
| 	"mediumpurple": [147, 112, 219],
 | |
| 	"mediumseagreen": [60, 179, 113],
 | |
| 	"mediumslateblue": [123, 104, 238],
 | |
| 	"mediumspringgreen": [0, 250, 154],
 | |
| 	"mediumturquoise": [72, 209, 204],
 | |
| 	"mediumvioletred": [199, 21, 133],
 | |
| 	"midnightblue": [25, 25, 112],
 | |
| 	"mintcream": [245, 255, 250],
 | |
| 	"mistyrose": [255, 228, 225],
 | |
| 	"moccasin": [255, 228, 181],
 | |
| 	"navajowhite": [255, 222, 173],
 | |
| 	"navy": [0, 0, 128],
 | |
| 	"oldlace": [253, 245, 230],
 | |
| 	"olive": [128, 128, 0],
 | |
| 	"olivedrab": [107, 142, 35],
 | |
| 	"orange": [255, 165, 0],
 | |
| 	"orangered": [255, 69, 0],
 | |
| 	"orchid": [218, 112, 214],
 | |
| 	"palegoldenrod": [238, 232, 170],
 | |
| 	"palegreen": [152, 251, 152],
 | |
| 	"paleturquoise": [175, 238, 238],
 | |
| 	"palevioletred": [219, 112, 147],
 | |
| 	"papayawhip": [255, 239, 213],
 | |
| 	"peachpuff": [255, 218, 185],
 | |
| 	"peru": [205, 133, 63],
 | |
| 	"pink": [255, 192, 203],
 | |
| 	"plum": [221, 160, 221],
 | |
| 	"powderblue": [176, 224, 230],
 | |
| 	"purple": [128, 0, 128],
 | |
| 	"rebeccapurple": [102, 51, 153],
 | |
| 	"red": [255, 0, 0],
 | |
| 	"rosybrown": [188, 143, 143],
 | |
| 	"royalblue": [65, 105, 225],
 | |
| 	"saddlebrown": [139, 69, 19],
 | |
| 	"salmon": [250, 128, 114],
 | |
| 	"sandybrown": [244, 164, 96],
 | |
| 	"seagreen": [46, 139, 87],
 | |
| 	"seashell": [255, 245, 238],
 | |
| 	"sienna": [160, 82, 45],
 | |
| 	"silver": [192, 192, 192],
 | |
| 	"skyblue": [135, 206, 235],
 | |
| 	"slateblue": [106, 90, 205],
 | |
| 	"slategray": [112, 128, 144],
 | |
| 	"slategrey": [112, 128, 144],
 | |
| 	"snow": [255, 250, 250],
 | |
| 	"springgreen": [0, 255, 127],
 | |
| 	"steelblue": [70, 130, 180],
 | |
| 	"tan": [210, 180, 140],
 | |
| 	"teal": [0, 128, 128],
 | |
| 	"thistle": [216, 191, 216],
 | |
| 	"tomato": [255, 99, 71],
 | |
| 	"turquoise": [64, 224, 208],
 | |
| 	"violet": [238, 130, 238],
 | |
| 	"wheat": [245, 222, 179],
 | |
| 	"white": [255, 255, 255],
 | |
| 	"whitesmoke": [245, 245, 245],
 | |
| 	"yellow": [255, 255, 0],
 | |
| 	"yellowgreen": [154, 205, 50]
 | |
| };
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 77971:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var conversions = __webpack_require__(47297);
 | |
| 
 | |
| /*
 | |
| 	this function routes a model to all other models.
 | |
| 
 | |
| 	all functions that are routed have a property `.conversion` attached
 | |
| 	to the returned synthetic function. This property is an array
 | |
| 	of strings, each with the steps in between the 'from' and 'to'
 | |
| 	color models (inclusive).
 | |
| 
 | |
| 	conversions that are not possible simply are not included.
 | |
| */
 | |
| 
 | |
| function buildGraph() {
 | |
| 	var graph = {};
 | |
| 	// https://jsperf.com/object-keys-vs-for-in-with-closure/3
 | |
| 	var models = Object.keys(conversions);
 | |
| 
 | |
| 	for (var len = models.length, i = 0; i < len; i++) {
 | |
| 		graph[models[i]] = {
 | |
| 			// http://jsperf.com/1-vs-infinity
 | |
| 			// micro-opt, but this is simple.
 | |
| 			distance: -1,
 | |
| 			parent: null
 | |
| 		};
 | |
| 	}
 | |
| 
 | |
| 	return graph;
 | |
| }
 | |
| 
 | |
| // https://en.wikipedia.org/wiki/Breadth-first_search
 | |
| function deriveBFS(fromModel) {
 | |
| 	var graph = buildGraph();
 | |
| 	var queue = [fromModel]; // unshift -> queue -> pop
 | |
| 
 | |
| 	graph[fromModel].distance = 0;
 | |
| 
 | |
| 	while (queue.length) {
 | |
| 		var current = queue.pop();
 | |
| 		var adjacents = Object.keys(conversions[current]);
 | |
| 
 | |
| 		for (var len = adjacents.length, i = 0; i < len; i++) {
 | |
| 			var adjacent = adjacents[i];
 | |
| 			var node = graph[adjacent];
 | |
| 
 | |
| 			if (node.distance === -1) {
 | |
| 				node.distance = graph[current].distance + 1;
 | |
| 				node.parent = current;
 | |
| 				queue.unshift(adjacent);
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	return graph;
 | |
| }
 | |
| 
 | |
| function link(from, to) {
 | |
| 	return function (args) {
 | |
| 		return to(from(args));
 | |
| 	};
 | |
| }
 | |
| 
 | |
| function wrapConversion(toModel, graph) {
 | |
| 	var path = [graph[toModel].parent, toModel];
 | |
| 	var fn = conversions[graph[toModel].parent][toModel];
 | |
| 
 | |
| 	var cur = graph[toModel].parent;
 | |
| 	while (graph[cur].parent) {
 | |
| 		path.unshift(graph[cur].parent);
 | |
| 		fn = link(conversions[graph[cur].parent][cur], fn);
 | |
| 		cur = graph[cur].parent;
 | |
| 	}
 | |
| 
 | |
| 	fn.conversion = path;
 | |
| 	return fn;
 | |
| }
 | |
| 
 | |
| module.exports = function (fromModel) {
 | |
| 	var graph = deriveBFS(fromModel);
 | |
| 	var conversion = {};
 | |
| 
 | |
| 	var models = Object.keys(graph);
 | |
| 	for (var len = models.length, i = 0; i < len; i++) {
 | |
| 		var toModel = models[i];
 | |
| 		var node = graph[toModel];
 | |
| 
 | |
| 		if (node.parent === null) {
 | |
| 			// no possible conversion, or this node is the source model.
 | |
| 			continue;
 | |
| 		}
 | |
| 
 | |
| 		conversion[toModel] = wrapConversion(toModel, graph);
 | |
| 	}
 | |
| 
 | |
| 	return conversion;
 | |
| };
 | |
| 
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 49552:
 | |
| /***/ ((module) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| module.exports = {
 | |
| 	"aliceblue": [240, 248, 255],
 | |
| 	"antiquewhite": [250, 235, 215],
 | |
| 	"aqua": [0, 255, 255],
 | |
| 	"aquamarine": [127, 255, 212],
 | |
| 	"azure": [240, 255, 255],
 | |
| 	"beige": [245, 245, 220],
 | |
| 	"bisque": [255, 228, 196],
 | |
| 	"black": [0, 0, 0],
 | |
| 	"blanchedalmond": [255, 235, 205],
 | |
| 	"blue": [0, 0, 255],
 | |
| 	"blueviolet": [138, 43, 226],
 | |
| 	"brown": [165, 42, 42],
 | |
| 	"burlywood": [222, 184, 135],
 | |
| 	"cadetblue": [95, 158, 160],
 | |
| 	"chartreuse": [127, 255, 0],
 | |
| 	"chocolate": [210, 105, 30],
 | |
| 	"coral": [255, 127, 80],
 | |
| 	"cornflowerblue": [100, 149, 237],
 | |
| 	"cornsilk": [255, 248, 220],
 | |
| 	"crimson": [220, 20, 60],
 | |
| 	"cyan": [0, 255, 255],
 | |
| 	"darkblue": [0, 0, 139],
 | |
| 	"darkcyan": [0, 139, 139],
 | |
| 	"darkgoldenrod": [184, 134, 11],
 | |
| 	"darkgray": [169, 169, 169],
 | |
| 	"darkgreen": [0, 100, 0],
 | |
| 	"darkgrey": [169, 169, 169],
 | |
| 	"darkkhaki": [189, 183, 107],
 | |
| 	"darkmagenta": [139, 0, 139],
 | |
| 	"darkolivegreen": [85, 107, 47],
 | |
| 	"darkorange": [255, 140, 0],
 | |
| 	"darkorchid": [153, 50, 204],
 | |
| 	"darkred": [139, 0, 0],
 | |
| 	"darksalmon": [233, 150, 122],
 | |
| 	"darkseagreen": [143, 188, 143],
 | |
| 	"darkslateblue": [72, 61, 139],
 | |
| 	"darkslategray": [47, 79, 79],
 | |
| 	"darkslategrey": [47, 79, 79],
 | |
| 	"darkturquoise": [0, 206, 209],
 | |
| 	"darkviolet": [148, 0, 211],
 | |
| 	"deeppink": [255, 20, 147],
 | |
| 	"deepskyblue": [0, 191, 255],
 | |
| 	"dimgray": [105, 105, 105],
 | |
| 	"dimgrey": [105, 105, 105],
 | |
| 	"dodgerblue": [30, 144, 255],
 | |
| 	"firebrick": [178, 34, 34],
 | |
| 	"floralwhite": [255, 250, 240],
 | |
| 	"forestgreen": [34, 139, 34],
 | |
| 	"fuchsia": [255, 0, 255],
 | |
| 	"gainsboro": [220, 220, 220],
 | |
| 	"ghostwhite": [248, 248, 255],
 | |
| 	"gold": [255, 215, 0],
 | |
| 	"goldenrod": [218, 165, 32],
 | |
| 	"gray": [128, 128, 128],
 | |
| 	"green": [0, 128, 0],
 | |
| 	"greenyellow": [173, 255, 47],
 | |
| 	"grey": [128, 128, 128],
 | |
| 	"honeydew": [240, 255, 240],
 | |
| 	"hotpink": [255, 105, 180],
 | |
| 	"indianred": [205, 92, 92],
 | |
| 	"indigo": [75, 0, 130],
 | |
| 	"ivory": [255, 255, 240],
 | |
| 	"khaki": [240, 230, 140],
 | |
| 	"lavender": [230, 230, 250],
 | |
| 	"lavenderblush": [255, 240, 245],
 | |
| 	"lawngreen": [124, 252, 0],
 | |
| 	"lemonchiffon": [255, 250, 205],
 | |
| 	"lightblue": [173, 216, 230],
 | |
| 	"lightcoral": [240, 128, 128],
 | |
| 	"lightcyan": [224, 255, 255],
 | |
| 	"lightgoldenrodyellow": [250, 250, 210],
 | |
| 	"lightgray": [211, 211, 211],
 | |
| 	"lightgreen": [144, 238, 144],
 | |
| 	"lightgrey": [211, 211, 211],
 | |
| 	"lightpink": [255, 182, 193],
 | |
| 	"lightsalmon": [255, 160, 122],
 | |
| 	"lightseagreen": [32, 178, 170],
 | |
| 	"lightskyblue": [135, 206, 250],
 | |
| 	"lightslategray": [119, 136, 153],
 | |
| 	"lightslategrey": [119, 136, 153],
 | |
| 	"lightsteelblue": [176, 196, 222],
 | |
| 	"lightyellow": [255, 255, 224],
 | |
| 	"lime": [0, 255, 0],
 | |
| 	"limegreen": [50, 205, 50],
 | |
| 	"linen": [250, 240, 230],
 | |
| 	"magenta": [255, 0, 255],
 | |
| 	"maroon": [128, 0, 0],
 | |
| 	"mediumaquamarine": [102, 205, 170],
 | |
| 	"mediumblue": [0, 0, 205],
 | |
| 	"mediumorchid": [186, 85, 211],
 | |
| 	"mediumpurple": [147, 112, 219],
 | |
| 	"mediumseagreen": [60, 179, 113],
 | |
| 	"mediumslateblue": [123, 104, 238],
 | |
| 	"mediumspringgreen": [0, 250, 154],
 | |
| 	"mediumturquoise": [72, 209, 204],
 | |
| 	"mediumvioletred": [199, 21, 133],
 | |
| 	"midnightblue": [25, 25, 112],
 | |
| 	"mintcream": [245, 255, 250],
 | |
| 	"mistyrose": [255, 228, 225],
 | |
| 	"moccasin": [255, 228, 181],
 | |
| 	"navajowhite": [255, 222, 173],
 | |
| 	"navy": [0, 0, 128],
 | |
| 	"oldlace": [253, 245, 230],
 | |
| 	"olive": [128, 128, 0],
 | |
| 	"olivedrab": [107, 142, 35],
 | |
| 	"orange": [255, 165, 0],
 | |
| 	"orangered": [255, 69, 0],
 | |
| 	"orchid": [218, 112, 214],
 | |
| 	"palegoldenrod": [238, 232, 170],
 | |
| 	"palegreen": [152, 251, 152],
 | |
| 	"paleturquoise": [175, 238, 238],
 | |
| 	"palevioletred": [219, 112, 147],
 | |
| 	"papayawhip": [255, 239, 213],
 | |
| 	"peachpuff": [255, 218, 185],
 | |
| 	"peru": [205, 133, 63],
 | |
| 	"pink": [255, 192, 203],
 | |
| 	"plum": [221, 160, 221],
 | |
| 	"powderblue": [176, 224, 230],
 | |
| 	"purple": [128, 0, 128],
 | |
| 	"rebeccapurple": [102, 51, 153],
 | |
| 	"red": [255, 0, 0],
 | |
| 	"rosybrown": [188, 143, 143],
 | |
| 	"royalblue": [65, 105, 225],
 | |
| 	"saddlebrown": [139, 69, 19],
 | |
| 	"salmon": [250, 128, 114],
 | |
| 	"sandybrown": [244, 164, 96],
 | |
| 	"seagreen": [46, 139, 87],
 | |
| 	"seashell": [255, 245, 238],
 | |
| 	"sienna": [160, 82, 45],
 | |
| 	"silver": [192, 192, 192],
 | |
| 	"skyblue": [135, 206, 235],
 | |
| 	"slateblue": [106, 90, 205],
 | |
| 	"slategray": [112, 128, 144],
 | |
| 	"slategrey": [112, 128, 144],
 | |
| 	"snow": [255, 250, 250],
 | |
| 	"springgreen": [0, 255, 127],
 | |
| 	"steelblue": [70, 130, 180],
 | |
| 	"tan": [210, 180, 140],
 | |
| 	"teal": [0, 128, 128],
 | |
| 	"thistle": [216, 191, 216],
 | |
| 	"tomato": [255, 99, 71],
 | |
| 	"turquoise": [64, 224, 208],
 | |
| 	"violet": [238, 130, 238],
 | |
| 	"wheat": [245, 222, 179],
 | |
| 	"white": [255, 255, 255],
 | |
| 	"whitesmoke": [245, 245, 245],
 | |
| 	"yellow": [255, 255, 0],
 | |
| 	"yellowgreen": [154, 205, 50]
 | |
| };
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 96855:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| /* MIT license */
 | |
| var colorNames = __webpack_require__(49552);
 | |
| var swizzle = __webpack_require__(10521);
 | |
| var hasOwnProperty = Object.hasOwnProperty;
 | |
| 
 | |
| var reverseNames = Object.create(null);
 | |
| 
 | |
| // create a list of reverse color names
 | |
| for (var name in colorNames) {
 | |
| 	if (hasOwnProperty.call(colorNames, name)) {
 | |
| 		reverseNames[colorNames[name]] = name;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| var cs = module.exports = {
 | |
| 	to: {},
 | |
| 	get: {}
 | |
| };
 | |
| 
 | |
| cs.get = function (string) {
 | |
| 	var prefix = string.substring(0, 3).toLowerCase();
 | |
| 	var val;
 | |
| 	var model;
 | |
| 	switch (prefix) {
 | |
| 		case 'hsl':
 | |
| 			val = cs.get.hsl(string);
 | |
| 			model = 'hsl';
 | |
| 			break;
 | |
| 		case 'hwb':
 | |
| 			val = cs.get.hwb(string);
 | |
| 			model = 'hwb';
 | |
| 			break;
 | |
| 		default:
 | |
| 			val = cs.get.rgb(string);
 | |
| 			model = 'rgb';
 | |
| 			break;
 | |
| 	}
 | |
| 
 | |
| 	if (!val) {
 | |
| 		return null;
 | |
| 	}
 | |
| 
 | |
| 	return {model: model, value: val};
 | |
| };
 | |
| 
 | |
| cs.get.rgb = function (string) {
 | |
| 	if (!string) {
 | |
| 		return null;
 | |
| 	}
 | |
| 
 | |
| 	var abbr = /^#([a-f0-9]{3,4})$/i;
 | |
| 	var hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;
 | |
| 	var rgba = /^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/;
 | |
| 	var per = /^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/;
 | |
| 	var keyword = /^(\w+)$/;
 | |
| 
 | |
| 	var rgb = [0, 0, 0, 1];
 | |
| 	var match;
 | |
| 	var i;
 | |
| 	var hexAlpha;
 | |
| 
 | |
| 	if (match = string.match(hex)) {
 | |
| 		hexAlpha = match[2];
 | |
| 		match = match[1];
 | |
| 
 | |
| 		for (i = 0; i < 3; i++) {
 | |
| 			// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19
 | |
| 			var i2 = i * 2;
 | |
| 			rgb[i] = parseInt(match.slice(i2, i2 + 2), 16);
 | |
| 		}
 | |
| 
 | |
| 		if (hexAlpha) {
 | |
| 			rgb[3] = parseInt(hexAlpha, 16) / 255;
 | |
| 		}
 | |
| 	} else if (match = string.match(abbr)) {
 | |
| 		match = match[1];
 | |
| 		hexAlpha = match[3];
 | |
| 
 | |
| 		for (i = 0; i < 3; i++) {
 | |
| 			rgb[i] = parseInt(match[i] + match[i], 16);
 | |
| 		}
 | |
| 
 | |
| 		if (hexAlpha) {
 | |
| 			rgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;
 | |
| 		}
 | |
| 	} else if (match = string.match(rgba)) {
 | |
| 		for (i = 0; i < 3; i++) {
 | |
| 			rgb[i] = parseInt(match[i + 1], 0);
 | |
| 		}
 | |
| 
 | |
| 		if (match[4]) {
 | |
| 			if (match[5]) {
 | |
| 				rgb[3] = parseFloat(match[4]) * 0.01;
 | |
| 			} else {
 | |
| 				rgb[3] = parseFloat(match[4]);
 | |
| 			}
 | |
| 		}
 | |
| 	} else if (match = string.match(per)) {
 | |
| 		for (i = 0; i < 3; i++) {
 | |
| 			rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);
 | |
| 		}
 | |
| 
 | |
| 		if (match[4]) {
 | |
| 			if (match[5]) {
 | |
| 				rgb[3] = parseFloat(match[4]) * 0.01;
 | |
| 			} else {
 | |
| 				rgb[3] = parseFloat(match[4]);
 | |
| 			}
 | |
| 		}
 | |
| 	} else if (match = string.match(keyword)) {
 | |
| 		if (match[1] === 'transparent') {
 | |
| 			return [0, 0, 0, 0];
 | |
| 		}
 | |
| 
 | |
| 		if (!hasOwnProperty.call(colorNames, match[1])) {
 | |
| 			return null;
 | |
| 		}
 | |
| 
 | |
| 		rgb = colorNames[match[1]];
 | |
| 		rgb[3] = 1;
 | |
| 
 | |
| 		return rgb;
 | |
| 	} else {
 | |
| 		return null;
 | |
| 	}
 | |
| 
 | |
| 	for (i = 0; i < 3; i++) {
 | |
| 		rgb[i] = clamp(rgb[i], 0, 255);
 | |
| 	}
 | |
| 	rgb[3] = clamp(rgb[3], 0, 1);
 | |
| 
 | |
| 	return rgb;
 | |
| };
 | |
| 
 | |
| cs.get.hsl = function (string) {
 | |
| 	if (!string) {
 | |
| 		return null;
 | |
| 	}
 | |
| 
 | |
| 	var hsl = /^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/;
 | |
| 	var match = string.match(hsl);
 | |
| 
 | |
| 	if (match) {
 | |
| 		var alpha = parseFloat(match[4]);
 | |
| 		var h = ((parseFloat(match[1]) % 360) + 360) % 360;
 | |
| 		var s = clamp(parseFloat(match[2]), 0, 100);
 | |
| 		var l = clamp(parseFloat(match[3]), 0, 100);
 | |
| 		var a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);
 | |
| 
 | |
| 		return [h, s, l, a];
 | |
| 	}
 | |
| 
 | |
| 	return null;
 | |
| };
 | |
| 
 | |
| cs.get.hwb = function (string) {
 | |
| 	if (!string) {
 | |
| 		return null;
 | |
| 	}
 | |
| 
 | |
| 	var hwb = /^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/;
 | |
| 	var match = string.match(hwb);
 | |
| 
 | |
| 	if (match) {
 | |
| 		var alpha = parseFloat(match[4]);
 | |
| 		var h = ((parseFloat(match[1]) % 360) + 360) % 360;
 | |
| 		var w = clamp(parseFloat(match[2]), 0, 100);
 | |
| 		var b = clamp(parseFloat(match[3]), 0, 100);
 | |
| 		var a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);
 | |
| 		return [h, w, b, a];
 | |
| 	}
 | |
| 
 | |
| 	return null;
 | |
| };
 | |
| 
 | |
| cs.to.hex = function () {
 | |
| 	var rgba = swizzle(arguments);
 | |
| 
 | |
| 	return (
 | |
| 		'#' +
 | |
| 		hexDouble(rgba[0]) +
 | |
| 		hexDouble(rgba[1]) +
 | |
| 		hexDouble(rgba[2]) +
 | |
| 		(rgba[3] < 1
 | |
| 			? (hexDouble(Math.round(rgba[3] * 255)))
 | |
| 			: '')
 | |
| 	);
 | |
| };
 | |
| 
 | |
| cs.to.rgb = function () {
 | |
| 	var rgba = swizzle(arguments);
 | |
| 
 | |
| 	return rgba.length < 4 || rgba[3] === 1
 | |
| 		? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'
 | |
| 		: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';
 | |
| };
 | |
| 
 | |
| cs.to.rgb.percent = function () {
 | |
| 	var rgba = swizzle(arguments);
 | |
| 
 | |
| 	var r = Math.round(rgba[0] / 255 * 100);
 | |
| 	var g = Math.round(rgba[1] / 255 * 100);
 | |
| 	var b = Math.round(rgba[2] / 255 * 100);
 | |
| 
 | |
| 	return rgba.length < 4 || rgba[3] === 1
 | |
| 		? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'
 | |
| 		: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';
 | |
| };
 | |
| 
 | |
| cs.to.hsl = function () {
 | |
| 	var hsla = swizzle(arguments);
 | |
| 	return hsla.length < 4 || hsla[3] === 1
 | |
| 		? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'
 | |
| 		: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';
 | |
| };
 | |
| 
 | |
| // hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax
 | |
| // (hwb have alpha optional & 1 is default value)
 | |
| cs.to.hwb = function () {
 | |
| 	var hwba = swizzle(arguments);
 | |
| 
 | |
| 	var a = '';
 | |
| 	if (hwba.length >= 4 && hwba[3] !== 1) {
 | |
| 		a = ', ' + hwba[3];
 | |
| 	}
 | |
| 
 | |
| 	return 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';
 | |
| };
 | |
| 
 | |
| cs.to.keyword = function (rgb) {
 | |
| 	return reverseNames[rgb.slice(0, 3)];
 | |
| };
 | |
| 
 | |
| // helpers
 | |
| function clamp(num, min, max) {
 | |
| 	return Math.min(Math.max(min, num), max);
 | |
| }
 | |
| 
 | |
| function hexDouble(num) {
 | |
| 	var str = Math.round(num).toString(16).toUpperCase();
 | |
| 	return (str.length < 2) ? '0' + str : str;
 | |
| }
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 27124:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| var colorString = __webpack_require__(96855);
 | |
| var convert = __webpack_require__(31642);
 | |
| 
 | |
| var _slice = [].slice;
 | |
| 
 | |
| var skippedModels = [
 | |
| 	// to be honest, I don't really feel like keyword belongs in color convert, but eh.
 | |
| 	'keyword',
 | |
| 
 | |
| 	// gray conflicts with some method names, and has its own method defined.
 | |
| 	'gray',
 | |
| 
 | |
| 	// shouldn't really be in color-convert either...
 | |
| 	'hex'
 | |
| ];
 | |
| 
 | |
| var hashedModelKeys = {};
 | |
| Object.keys(convert).forEach(function (model) {
 | |
| 	hashedModelKeys[_slice.call(convert[model].labels).sort().join('')] = model;
 | |
| });
 | |
| 
 | |
| var limiters = {};
 | |
| 
 | |
| function Color(obj, model) {
 | |
| 	if (!(this instanceof Color)) {
 | |
| 		return new Color(obj, model);
 | |
| 	}
 | |
| 
 | |
| 	if (model && model in skippedModels) {
 | |
| 		model = null;
 | |
| 	}
 | |
| 
 | |
| 	if (model && !(model in convert)) {
 | |
| 		throw new Error('Unknown model: ' + model);
 | |
| 	}
 | |
| 
 | |
| 	var i;
 | |
| 	var channels;
 | |
| 
 | |
| 	if (obj == null) { // eslint-disable-line no-eq-null,eqeqeq
 | |
| 		this.model = 'rgb';
 | |
| 		this.color = [0, 0, 0];
 | |
| 		this.valpha = 1;
 | |
| 	} else if (obj instanceof Color) {
 | |
| 		this.model = obj.model;
 | |
| 		this.color = obj.color.slice();
 | |
| 		this.valpha = obj.valpha;
 | |
| 	} else if (typeof obj === 'string') {
 | |
| 		var result = colorString.get(obj);
 | |
| 		if (result === null) {
 | |
| 			throw new Error('Unable to parse color from string: ' + obj);
 | |
| 		}
 | |
| 
 | |
| 		this.model = result.model;
 | |
| 		channels = convert[this.model].channels;
 | |
| 		this.color = result.value.slice(0, channels);
 | |
| 		this.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;
 | |
| 	} else if (obj.length) {
 | |
| 		this.model = model || 'rgb';
 | |
| 		channels = convert[this.model].channels;
 | |
| 		var newArr = _slice.call(obj, 0, channels);
 | |
| 		this.color = zeroArray(newArr, channels);
 | |
| 		this.valpha = typeof obj[channels] === 'number' ? obj[channels] : 1;
 | |
| 	} else if (typeof obj === 'number') {
 | |
| 		// this is always RGB - can be converted later on.
 | |
| 		obj &= 0xFFFFFF;
 | |
| 		this.model = 'rgb';
 | |
| 		this.color = [
 | |
| 			(obj >> 16) & 0xFF,
 | |
| 			(obj >> 8) & 0xFF,
 | |
| 			obj & 0xFF
 | |
| 		];
 | |
| 		this.valpha = 1;
 | |
| 	} else {
 | |
| 		this.valpha = 1;
 | |
| 
 | |
| 		var keys = Object.keys(obj);
 | |
| 		if ('alpha' in obj) {
 | |
| 			keys.splice(keys.indexOf('alpha'), 1);
 | |
| 			this.valpha = typeof obj.alpha === 'number' ? obj.alpha : 0;
 | |
| 		}
 | |
| 
 | |
| 		var hashedKeys = keys.sort().join('');
 | |
| 		if (!(hashedKeys in hashedModelKeys)) {
 | |
| 			throw new Error('Unable to parse color from object: ' + JSON.stringify(obj));
 | |
| 		}
 | |
| 
 | |
| 		this.model = hashedModelKeys[hashedKeys];
 | |
| 
 | |
| 		var labels = convert[this.model].labels;
 | |
| 		var color = [];
 | |
| 		for (i = 0; i < labels.length; i++) {
 | |
| 			color.push(obj[labels[i]]);
 | |
| 		}
 | |
| 
 | |
| 		this.color = zeroArray(color);
 | |
| 	}
 | |
| 
 | |
| 	// perform limitations (clamping, etc.)
 | |
| 	if (limiters[this.model]) {
 | |
| 		channels = convert[this.model].channels;
 | |
| 		for (i = 0; i < channels; i++) {
 | |
| 			var limit = limiters[this.model][i];
 | |
| 			if (limit) {
 | |
| 				this.color[i] = limit(this.color[i]);
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	this.valpha = Math.max(0, Math.min(1, this.valpha));
 | |
| 
 | |
| 	if (Object.freeze) {
 | |
| 		Object.freeze(this);
 | |
| 	}
 | |
| }
 | |
| 
 | |
| Color.prototype = {
 | |
| 	toString: function () {
 | |
| 		return this.string();
 | |
| 	},
 | |
| 
 | |
| 	toJSON: function () {
 | |
| 		return this[this.model]();
 | |
| 	},
 | |
| 
 | |
| 	string: function (places) {
 | |
| 		var self = this.model in colorString.to ? this : this.rgb();
 | |
| 		self = self.round(typeof places === 'number' ? places : 1);
 | |
| 		var args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);
 | |
| 		return colorString.to[self.model](args);
 | |
| 	},
 | |
| 
 | |
| 	percentString: function (places) {
 | |
| 		var self = this.rgb().round(typeof places === 'number' ? places : 1);
 | |
| 		var args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);
 | |
| 		return colorString.to.rgb.percent(args);
 | |
| 	},
 | |
| 
 | |
| 	array: function () {
 | |
| 		return this.valpha === 1 ? this.color.slice() : this.color.concat(this.valpha);
 | |
| 	},
 | |
| 
 | |
| 	object: function () {
 | |
| 		var result = {};
 | |
| 		var channels = convert[this.model].channels;
 | |
| 		var labels = convert[this.model].labels;
 | |
| 
 | |
| 		for (var i = 0; i < channels; i++) {
 | |
| 			result[labels[i]] = this.color[i];
 | |
| 		}
 | |
| 
 | |
| 		if (this.valpha !== 1) {
 | |
| 			result.alpha = this.valpha;
 | |
| 		}
 | |
| 
 | |
| 		return result;
 | |
| 	},
 | |
| 
 | |
| 	unitArray: function () {
 | |
| 		var rgb = this.rgb().color;
 | |
| 		rgb[0] /= 255;
 | |
| 		rgb[1] /= 255;
 | |
| 		rgb[2] /= 255;
 | |
| 
 | |
| 		if (this.valpha !== 1) {
 | |
| 			rgb.push(this.valpha);
 | |
| 		}
 | |
| 
 | |
| 		return rgb;
 | |
| 	},
 | |
| 
 | |
| 	unitObject: function () {
 | |
| 		var rgb = this.rgb().object();
 | |
| 		rgb.r /= 255;
 | |
| 		rgb.g /= 255;
 | |
| 		rgb.b /= 255;
 | |
| 
 | |
| 		if (this.valpha !== 1) {
 | |
| 			rgb.alpha = this.valpha;
 | |
| 		}
 | |
| 
 | |
| 		return rgb;
 | |
| 	},
 | |
| 
 | |
| 	round: function (places) {
 | |
| 		places = Math.max(places || 0, 0);
 | |
| 		return new Color(this.color.map(roundToPlace(places)).concat(this.valpha), this.model);
 | |
| 	},
 | |
| 
 | |
| 	alpha: function (val) {
 | |
| 		if (arguments.length) {
 | |
| 			return new Color(this.color.concat(Math.max(0, Math.min(1, val))), this.model);
 | |
| 		}
 | |
| 
 | |
| 		return this.valpha;
 | |
| 	},
 | |
| 
 | |
| 	// rgb
 | |
| 	red: getset('rgb', 0, maxfn(255)),
 | |
| 	green: getset('rgb', 1, maxfn(255)),
 | |
| 	blue: getset('rgb', 2, maxfn(255)),
 | |
| 
 | |
| 	hue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, function (val) { return ((val % 360) + 360) % 360; }), // eslint-disable-line brace-style
 | |
| 
 | |
| 	saturationl: getset('hsl', 1, maxfn(100)),
 | |
| 	lightness: getset('hsl', 2, maxfn(100)),
 | |
| 
 | |
| 	saturationv: getset('hsv', 1, maxfn(100)),
 | |
| 	value: getset('hsv', 2, maxfn(100)),
 | |
| 
 | |
| 	chroma: getset('hcg', 1, maxfn(100)),
 | |
| 	gray: getset('hcg', 2, maxfn(100)),
 | |
| 
 | |
| 	white: getset('hwb', 1, maxfn(100)),
 | |
| 	wblack: getset('hwb', 2, maxfn(100)),
 | |
| 
 | |
| 	cyan: getset('cmyk', 0, maxfn(100)),
 | |
| 	magenta: getset('cmyk', 1, maxfn(100)),
 | |
| 	yellow: getset('cmyk', 2, maxfn(100)),
 | |
| 	black: getset('cmyk', 3, maxfn(100)),
 | |
| 
 | |
| 	x: getset('xyz', 0, maxfn(100)),
 | |
| 	y: getset('xyz', 1, maxfn(100)),
 | |
| 	z: getset('xyz', 2, maxfn(100)),
 | |
| 
 | |
| 	l: getset('lab', 0, maxfn(100)),
 | |
| 	a: getset('lab', 1),
 | |
| 	b: getset('lab', 2),
 | |
| 
 | |
| 	keyword: function (val) {
 | |
| 		if (arguments.length) {
 | |
| 			return new Color(val);
 | |
| 		}
 | |
| 
 | |
| 		return convert[this.model].keyword(this.color);
 | |
| 	},
 | |
| 
 | |
| 	hex: function (val) {
 | |
| 		if (arguments.length) {
 | |
| 			return new Color(val);
 | |
| 		}
 | |
| 
 | |
| 		return colorString.to.hex(this.rgb().round().color);
 | |
| 	},
 | |
| 
 | |
| 	rgbNumber: function () {
 | |
| 		var rgb = this.rgb().color;
 | |
| 		return ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);
 | |
| 	},
 | |
| 
 | |
| 	luminosity: function () {
 | |
| 		// http://www.w3.org/TR/WCAG20/#relativeluminancedef
 | |
| 		var rgb = this.rgb().color;
 | |
| 
 | |
| 		var lum = [];
 | |
| 		for (var i = 0; i < rgb.length; i++) {
 | |
| 			var chan = rgb[i] / 255;
 | |
| 			lum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);
 | |
| 		}
 | |
| 
 | |
| 		return 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];
 | |
| 	},
 | |
| 
 | |
| 	contrast: function (color2) {
 | |
| 		// http://www.w3.org/TR/WCAG20/#contrast-ratiodef
 | |
| 		var lum1 = this.luminosity();
 | |
| 		var lum2 = color2.luminosity();
 | |
| 
 | |
| 		if (lum1 > lum2) {
 | |
| 			return (lum1 + 0.05) / (lum2 + 0.05);
 | |
| 		}
 | |
| 
 | |
| 		return (lum2 + 0.05) / (lum1 + 0.05);
 | |
| 	},
 | |
| 
 | |
| 	level: function (color2) {
 | |
| 		var contrastRatio = this.contrast(color2);
 | |
| 		if (contrastRatio >= 7.1) {
 | |
| 			return 'AAA';
 | |
| 		}
 | |
| 
 | |
| 		return (contrastRatio >= 4.5) ? 'AA' : '';
 | |
| 	},
 | |
| 
 | |
| 	isDark: function () {
 | |
| 		// YIQ equation from http://24ways.org/2010/calculating-color-contrast
 | |
| 		var rgb = this.rgb().color;
 | |
| 		var yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;
 | |
| 		return yiq < 128;
 | |
| 	},
 | |
| 
 | |
| 	isLight: function () {
 | |
| 		return !this.isDark();
 | |
| 	},
 | |
| 
 | |
| 	negate: function () {
 | |
| 		var rgb = this.rgb();
 | |
| 		for (var i = 0; i < 3; i++) {
 | |
| 			rgb.color[i] = 255 - rgb.color[i];
 | |
| 		}
 | |
| 		return rgb;
 | |
| 	},
 | |
| 
 | |
| 	lighten: function (ratio) {
 | |
| 		var hsl = this.hsl();
 | |
| 		hsl.color[2] += hsl.color[2] * ratio;
 | |
| 		return hsl;
 | |
| 	},
 | |
| 
 | |
| 	darken: function (ratio) {
 | |
| 		var hsl = this.hsl();
 | |
| 		hsl.color[2] -= hsl.color[2] * ratio;
 | |
| 		return hsl;
 | |
| 	},
 | |
| 
 | |
| 	saturate: function (ratio) {
 | |
| 		var hsl = this.hsl();
 | |
| 		hsl.color[1] += hsl.color[1] * ratio;
 | |
| 		return hsl;
 | |
| 	},
 | |
| 
 | |
| 	desaturate: function (ratio) {
 | |
| 		var hsl = this.hsl();
 | |
| 		hsl.color[1] -= hsl.color[1] * ratio;
 | |
| 		return hsl;
 | |
| 	},
 | |
| 
 | |
| 	whiten: function (ratio) {
 | |
| 		var hwb = this.hwb();
 | |
| 		hwb.color[1] += hwb.color[1] * ratio;
 | |
| 		return hwb;
 | |
| 	},
 | |
| 
 | |
| 	blacken: function (ratio) {
 | |
| 		var hwb = this.hwb();
 | |
| 		hwb.color[2] += hwb.color[2] * ratio;
 | |
| 		return hwb;
 | |
| 	},
 | |
| 
 | |
| 	grayscale: function () {
 | |
| 		// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale
 | |
| 		var rgb = this.rgb().color;
 | |
| 		var val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;
 | |
| 		return Color.rgb(val, val, val);
 | |
| 	},
 | |
| 
 | |
| 	fade: function (ratio) {
 | |
| 		return this.alpha(this.valpha - (this.valpha * ratio));
 | |
| 	},
 | |
| 
 | |
| 	opaquer: function (ratio) {
 | |
| 		return this.alpha(this.valpha + (this.valpha * ratio));
 | |
| 	},
 | |
| 
 | |
| 	rotate: function (degrees) {
 | |
| 		var hsl = this.hsl();
 | |
| 		var hue = hsl.color[0];
 | |
| 		hue = (hue + degrees) % 360;
 | |
| 		hue = hue < 0 ? 360 + hue : hue;
 | |
| 		hsl.color[0] = hue;
 | |
| 		return hsl;
 | |
| 	},
 | |
| 
 | |
| 	mix: function (mixinColor, weight) {
 | |
| 		// ported from sass implementation in C
 | |
| 		// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209
 | |
| 		if (!mixinColor || !mixinColor.rgb) {
 | |
| 			throw new Error('Argument to "mix" was not a Color instance, but rather an instance of ' + typeof mixinColor);
 | |
| 		}
 | |
| 		var color1 = mixinColor.rgb();
 | |
| 		var color2 = this.rgb();
 | |
| 		var p = weight === undefined ? 0.5 : weight;
 | |
| 
 | |
| 		var w = 2 * p - 1;
 | |
| 		var a = color1.alpha() - color2.alpha();
 | |
| 
 | |
| 		var w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;
 | |
| 		var w2 = 1 - w1;
 | |
| 
 | |
| 		return Color.rgb(
 | |
| 				w1 * color1.red() + w2 * color2.red(),
 | |
| 				w1 * color1.green() + w2 * color2.green(),
 | |
| 				w1 * color1.blue() + w2 * color2.blue(),
 | |
| 				color1.alpha() * p + color2.alpha() * (1 - p));
 | |
| 	}
 | |
| };
 | |
| 
 | |
| // model conversion methods and static constructors
 | |
| Object.keys(convert).forEach(function (model) {
 | |
| 	if (skippedModels.indexOf(model) !== -1) {
 | |
| 		return;
 | |
| 	}
 | |
| 
 | |
| 	var channels = convert[model].channels;
 | |
| 
 | |
| 	// conversion methods
 | |
| 	Color.prototype[model] = function () {
 | |
| 		if (this.model === model) {
 | |
| 			return new Color(this);
 | |
| 		}
 | |
| 
 | |
| 		if (arguments.length) {
 | |
| 			return new Color(arguments, model);
 | |
| 		}
 | |
| 
 | |
| 		var newAlpha = typeof arguments[channels] === 'number' ? channels : this.valpha;
 | |
| 		return new Color(assertArray(convert[this.model][model].raw(this.color)).concat(newAlpha), model);
 | |
| 	};
 | |
| 
 | |
| 	// 'static' construction methods
 | |
| 	Color[model] = function (color) {
 | |
| 		if (typeof color === 'number') {
 | |
| 			color = zeroArray(_slice.call(arguments), channels);
 | |
| 		}
 | |
| 		return new Color(color, model);
 | |
| 	};
 | |
| });
 | |
| 
 | |
| function roundTo(num, places) {
 | |
| 	return Number(num.toFixed(places));
 | |
| }
 | |
| 
 | |
| function roundToPlace(places) {
 | |
| 	return function (num) {
 | |
| 		return roundTo(num, places);
 | |
| 	};
 | |
| }
 | |
| 
 | |
| function getset(model, channel, modifier) {
 | |
| 	model = Array.isArray(model) ? model : [model];
 | |
| 
 | |
| 	model.forEach(function (m) {
 | |
| 		(limiters[m] || (limiters[m] = []))[channel] = modifier;
 | |
| 	});
 | |
| 
 | |
| 	model = model[0];
 | |
| 
 | |
| 	return function (val) {
 | |
| 		var result;
 | |
| 
 | |
| 		if (arguments.length) {
 | |
| 			if (modifier) {
 | |
| 				val = modifier(val);
 | |
| 			}
 | |
| 
 | |
| 			result = this[model]();
 | |
| 			result.color[channel] = val;
 | |
| 			return result;
 | |
| 		}
 | |
| 
 | |
| 		result = this[model]().color[channel];
 | |
| 		if (modifier) {
 | |
| 			result = modifier(result);
 | |
| 		}
 | |
| 
 | |
| 		return result;
 | |
| 	};
 | |
| }
 | |
| 
 | |
| function maxfn(max) {
 | |
| 	return function (v) {
 | |
| 		return Math.max(0, Math.min(max, v));
 | |
| 	};
 | |
| }
 | |
| 
 | |
| function assertArray(val) {
 | |
| 	return Array.isArray(val) ? val : [val];
 | |
| }
 | |
| 
 | |
| function zeroArray(arr, length) {
 | |
| 	for (var i = 0; i < length; i++) {
 | |
| 		if (typeof arr[i] !== 'number') {
 | |
| 			arr[i] = 0;
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	return arr;
 | |
| }
 | |
| 
 | |
| module.exports = Color;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 28401:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| /**
 | |
|  * lodash (Custom Build) <https://lodash.com/>
 | |
|  * Build: `lodash modularize exports="npm" -o ./`
 | |
|  * Copyright jQuery Foundation and other contributors <https://jquery.org/>
 | |
|  * Released under MIT license <https://lodash.com/license>
 | |
|  * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
 | |
|  * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
 | |
|  */
 | |
| 
 | |
| /** Used as the `TypeError` message for "Functions" methods. */
 | |
| var FUNC_ERROR_TEXT = 'Expected a function';
 | |
| 
 | |
| /** Used as the internal argument placeholder. */
 | |
| var PLACEHOLDER = '__lodash_placeholder__';
 | |
| 
 | |
| /** Used to compose bitmasks for function metadata. */
 | |
| var BIND_FLAG = 1,
 | |
|     BIND_KEY_FLAG = 2,
 | |
|     CURRY_BOUND_FLAG = 4,
 | |
|     CURRY_FLAG = 8,
 | |
|     CURRY_RIGHT_FLAG = 16,
 | |
|     PARTIAL_FLAG = 32,
 | |
|     PARTIAL_RIGHT_FLAG = 64,
 | |
|     ARY_FLAG = 128,
 | |
|     REARG_FLAG = 256,
 | |
|     FLIP_FLAG = 512;
 | |
| 
 | |
| /** Used as references for various `Number` constants. */
 | |
| var INFINITY = 1 / 0,
 | |
|     MAX_SAFE_INTEGER = 9007199254740991,
 | |
|     MAX_INTEGER = 1.7976931348623157e+308,
 | |
|     NAN = 0 / 0;
 | |
| 
 | |
| /** Used to associate wrap methods with their bit flags. */
 | |
| var wrapFlags = [
 | |
|   ['ary', ARY_FLAG],
 | |
|   ['bind', BIND_FLAG],
 | |
|   ['bindKey', BIND_KEY_FLAG],
 | |
|   ['curry', CURRY_FLAG],
 | |
|   ['curryRight', CURRY_RIGHT_FLAG],
 | |
|   ['flip', FLIP_FLAG],
 | |
|   ['partial', PARTIAL_FLAG],
 | |
|   ['partialRight', PARTIAL_RIGHT_FLAG],
 | |
|   ['rearg', REARG_FLAG]
 | |
| ];
 | |
| 
 | |
| /** `Object#toString` result references. */
 | |
| var funcTag = '[object Function]',
 | |
|     genTag = '[object GeneratorFunction]',
 | |
|     symbolTag = '[object Symbol]';
 | |
| 
 | |
| /**
 | |
|  * Used to match `RegExp`
 | |
|  * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
 | |
|  */
 | |
| var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
 | |
| 
 | |
| /** Used to match leading and trailing whitespace. */
 | |
| var reTrim = /^\s+|\s+$/g;
 | |
| 
 | |
| /** Used to match wrap detail comments. */
 | |
| var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,
 | |
|     reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/,
 | |
|     reSplitDetails = /,? & /;
 | |
| 
 | |
| /** Used to detect bad signed hexadecimal string values. */
 | |
| var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
 | |
| 
 | |
| /** Used to detect binary string values. */
 | |
| var reIsBinary = /^0b[01]+$/i;
 | |
| 
 | |
| /** Used to detect host constructors (Safari). */
 | |
| var reIsHostCtor = /^\[object .+?Constructor\]$/;
 | |
| 
 | |
| /** Used to detect octal string values. */
 | |
| var reIsOctal = /^0o[0-7]+$/i;
 | |
| 
 | |
| /** Used to detect unsigned integer values. */
 | |
| var reIsUint = /^(?:0|[1-9]\d*)$/;
 | |
| 
 | |
| /** Built-in method references without a dependency on `root`. */
 | |
| var freeParseInt = parseInt;
 | |
| 
 | |
| /** Detect free variable `global` from Node.js. */
 | |
| var freeGlobal = typeof __webpack_require__.g == 'object' && __webpack_require__.g && __webpack_require__.g.Object === Object && __webpack_require__.g;
 | |
| 
 | |
| /** Detect free variable `self`. */
 | |
| var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
 | |
| 
 | |
| /** Used as a reference to the global object. */
 | |
| var root = freeGlobal || freeSelf || Function('return this')();
 | |
| 
 | |
| /**
 | |
|  * A faster alternative to `Function#apply`, this function invokes `func`
 | |
|  * with the `this` binding of `thisArg` and the arguments of `args`.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Function} func The function to invoke.
 | |
|  * @param {*} thisArg The `this` binding of `func`.
 | |
|  * @param {Array} args The arguments to invoke `func` with.
 | |
|  * @returns {*} Returns the result of `func`.
 | |
|  */
 | |
| function apply(func, thisArg, args) {
 | |
|   switch (args.length) {
 | |
|     case 0: return func.call(thisArg);
 | |
|     case 1: return func.call(thisArg, args[0]);
 | |
|     case 2: return func.call(thisArg, args[0], args[1]);
 | |
|     case 3: return func.call(thisArg, args[0], args[1], args[2]);
 | |
|   }
 | |
|   return func.apply(thisArg, args);
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * A specialized version of `_.forEach` for arrays without support for
 | |
|  * iteratee shorthands.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Array} [array] The array to iterate over.
 | |
|  * @param {Function} iteratee The function invoked per iteration.
 | |
|  * @returns {Array} Returns `array`.
 | |
|  */
 | |
| function arrayEach(array, iteratee) {
 | |
|   var index = -1,
 | |
|       length = array ? array.length : 0;
 | |
| 
 | |
|   while (++index < length) {
 | |
|     if (iteratee(array[index], index, array) === false) {
 | |
|       break;
 | |
|     }
 | |
|   }
 | |
|   return array;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * A specialized version of `_.includes` for arrays without support for
 | |
|  * specifying an index to search from.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Array} [array] The array to inspect.
 | |
|  * @param {*} target The value to search for.
 | |
|  * @returns {boolean} Returns `true` if `target` is found, else `false`.
 | |
|  */
 | |
| function arrayIncludes(array, value) {
 | |
|   var length = array ? array.length : 0;
 | |
|   return !!length && baseIndexOf(array, value, 0) > -1;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * The base implementation of `_.findIndex` and `_.findLastIndex` without
 | |
|  * support for iteratee shorthands.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Array} array The array to inspect.
 | |
|  * @param {Function} predicate The function invoked per iteration.
 | |
|  * @param {number} fromIndex The index to search from.
 | |
|  * @param {boolean} [fromRight] Specify iterating from right to left.
 | |
|  * @returns {number} Returns the index of the matched value, else `-1`.
 | |
|  */
 | |
| function baseFindIndex(array, predicate, fromIndex, fromRight) {
 | |
|   var length = array.length,
 | |
|       index = fromIndex + (fromRight ? 1 : -1);
 | |
| 
 | |
|   while ((fromRight ? index-- : ++index < length)) {
 | |
|     if (predicate(array[index], index, array)) {
 | |
|       return index;
 | |
|     }
 | |
|   }
 | |
|   return -1;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Array} array The array to inspect.
 | |
|  * @param {*} value The value to search for.
 | |
|  * @param {number} fromIndex The index to search from.
 | |
|  * @returns {number} Returns the index of the matched value, else `-1`.
 | |
|  */
 | |
| function baseIndexOf(array, value, fromIndex) {
 | |
|   if (value !== value) {
 | |
|     return baseFindIndex(array, baseIsNaN, fromIndex);
 | |
|   }
 | |
|   var index = fromIndex - 1,
 | |
|       length = array.length;
 | |
| 
 | |
|   while (++index < length) {
 | |
|     if (array[index] === value) {
 | |
|       return index;
 | |
|     }
 | |
|   }
 | |
|   return -1;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * The base implementation of `_.isNaN` without support for number objects.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {*} value The value to check.
 | |
|  * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
 | |
|  */
 | |
| function baseIsNaN(value) {
 | |
|   return value !== value;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Gets the number of `placeholder` occurrences in `array`.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Array} array The array to inspect.
 | |
|  * @param {*} placeholder The placeholder to search for.
 | |
|  * @returns {number} Returns the placeholder count.
 | |
|  */
 | |
| function countHolders(array, placeholder) {
 | |
|   var length = array.length,
 | |
|       result = 0;
 | |
| 
 | |
|   while (length--) {
 | |
|     if (array[length] === placeholder) {
 | |
|       result++;
 | |
|     }
 | |
|   }
 | |
|   return result;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Gets the value at `key` of `object`.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Object} [object] The object to query.
 | |
|  * @param {string} key The key of the property to get.
 | |
|  * @returns {*} Returns the property value.
 | |
|  */
 | |
| function getValue(object, key) {
 | |
|   return object == null ? undefined : object[key];
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Checks if `value` is a host object in IE < 9.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {*} value The value to check.
 | |
|  * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
 | |
|  */
 | |
| function isHostObject(value) {
 | |
|   // Many host objects are `Object` objects that can coerce to strings
 | |
|   // despite having improperly defined `toString` methods.
 | |
|   var result = false;
 | |
|   if (value != null && typeof value.toString != 'function') {
 | |
|     try {
 | |
|       result = !!(value + '');
 | |
|     } catch (e) {}
 | |
|   }
 | |
|   return result;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Replaces all `placeholder` elements in `array` with an internal placeholder
 | |
|  * and returns an array of their indexes.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Array} array The array to modify.
 | |
|  * @param {*} placeholder The placeholder to replace.
 | |
|  * @returns {Array} Returns the new array of placeholder indexes.
 | |
|  */
 | |
| function replaceHolders(array, placeholder) {
 | |
|   var index = -1,
 | |
|       length = array.length,
 | |
|       resIndex = 0,
 | |
|       result = [];
 | |
| 
 | |
|   while (++index < length) {
 | |
|     var value = array[index];
 | |
|     if (value === placeholder || value === PLACEHOLDER) {
 | |
|       array[index] = PLACEHOLDER;
 | |
|       result[resIndex++] = index;
 | |
|     }
 | |
|   }
 | |
|   return result;
 | |
| }
 | |
| 
 | |
| /** Used for built-in method references. */
 | |
| var funcProto = Function.prototype,
 | |
|     objectProto = Object.prototype;
 | |
| 
 | |
| /** Used to detect overreaching core-js shims. */
 | |
| var coreJsData = root['__core-js_shared__'];
 | |
| 
 | |
| /** Used to detect methods masquerading as native. */
 | |
| var maskSrcKey = (function() {
 | |
|   var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
 | |
|   return uid ? ('Symbol(src)_1.' + uid) : '';
 | |
| }());
 | |
| 
 | |
| /** Used to resolve the decompiled source of functions. */
 | |
| var funcToString = funcProto.toString;
 | |
| 
 | |
| /** Used to check objects for own properties. */
 | |
| var hasOwnProperty = objectProto.hasOwnProperty;
 | |
| 
 | |
| /**
 | |
|  * Used to resolve the
 | |
|  * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
 | |
|  * of values.
 | |
|  */
 | |
| var objectToString = objectProto.toString;
 | |
| 
 | |
| /** Used to detect if a method is native. */
 | |
| var reIsNative = RegExp('^' +
 | |
|   funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
 | |
|   .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
 | |
| );
 | |
| 
 | |
| /** Built-in value references. */
 | |
| var objectCreate = Object.create;
 | |
| 
 | |
| /* Built-in method references for those with the same name as other `lodash` methods. */
 | |
| var nativeMax = Math.max,
 | |
|     nativeMin = Math.min;
 | |
| 
 | |
| /* Used to set `toString` methods. */
 | |
| var defineProperty = (function() {
 | |
|   var func = getNative(Object, 'defineProperty'),
 | |
|       name = getNative.name;
 | |
| 
 | |
|   return (name && name.length > 2) ? func : undefined;
 | |
| }());
 | |
| 
 | |
| /**
 | |
|  * The base implementation of `_.create` without support for assigning
 | |
|  * properties to the created object.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Object} prototype The object to inherit from.
 | |
|  * @returns {Object} Returns the new object.
 | |
|  */
 | |
| function baseCreate(proto) {
 | |
|   return isObject(proto) ? objectCreate(proto) : {};
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * The base implementation of `_.isNative` without bad shim checks.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {*} value The value to check.
 | |
|  * @returns {boolean} Returns `true` if `value` is a native function,
 | |
|  *  else `false`.
 | |
|  */
 | |
| function baseIsNative(value) {
 | |
|   if (!isObject(value) || isMasked(value)) {
 | |
|     return false;
 | |
|   }
 | |
|   var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
 | |
|   return pattern.test(toSource(value));
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Creates an array that is the composition of partially applied arguments,
 | |
|  * placeholders, and provided arguments into a single array of arguments.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Array} args The provided arguments.
 | |
|  * @param {Array} partials The arguments to prepend to those provided.
 | |
|  * @param {Array} holders The `partials` placeholder indexes.
 | |
|  * @params {boolean} [isCurried] Specify composing for a curried function.
 | |
|  * @returns {Array} Returns the new array of composed arguments.
 | |
|  */
 | |
| function composeArgs(args, partials, holders, isCurried) {
 | |
|   var argsIndex = -1,
 | |
|       argsLength = args.length,
 | |
|       holdersLength = holders.length,
 | |
|       leftIndex = -1,
 | |
|       leftLength = partials.length,
 | |
|       rangeLength = nativeMax(argsLength - holdersLength, 0),
 | |
|       result = Array(leftLength + rangeLength),
 | |
|       isUncurried = !isCurried;
 | |
| 
 | |
|   while (++leftIndex < leftLength) {
 | |
|     result[leftIndex] = partials[leftIndex];
 | |
|   }
 | |
|   while (++argsIndex < holdersLength) {
 | |
|     if (isUncurried || argsIndex < argsLength) {
 | |
|       result[holders[argsIndex]] = args[argsIndex];
 | |
|     }
 | |
|   }
 | |
|   while (rangeLength--) {
 | |
|     result[leftIndex++] = args[argsIndex++];
 | |
|   }
 | |
|   return result;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * This function is like `composeArgs` except that the arguments composition
 | |
|  * is tailored for `_.partialRight`.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Array} args The provided arguments.
 | |
|  * @param {Array} partials The arguments to append to those provided.
 | |
|  * @param {Array} holders The `partials` placeholder indexes.
 | |
|  * @params {boolean} [isCurried] Specify composing for a curried function.
 | |
|  * @returns {Array} Returns the new array of composed arguments.
 | |
|  */
 | |
| function composeArgsRight(args, partials, holders, isCurried) {
 | |
|   var argsIndex = -1,
 | |
|       argsLength = args.length,
 | |
|       holdersIndex = -1,
 | |
|       holdersLength = holders.length,
 | |
|       rightIndex = -1,
 | |
|       rightLength = partials.length,
 | |
|       rangeLength = nativeMax(argsLength - holdersLength, 0),
 | |
|       result = Array(rangeLength + rightLength),
 | |
|       isUncurried = !isCurried;
 | |
| 
 | |
|   while (++argsIndex < rangeLength) {
 | |
|     result[argsIndex] = args[argsIndex];
 | |
|   }
 | |
|   var offset = argsIndex;
 | |
|   while (++rightIndex < rightLength) {
 | |
|     result[offset + rightIndex] = partials[rightIndex];
 | |
|   }
 | |
|   while (++holdersIndex < holdersLength) {
 | |
|     if (isUncurried || argsIndex < argsLength) {
 | |
|       result[offset + holders[holdersIndex]] = args[argsIndex++];
 | |
|     }
 | |
|   }
 | |
|   return result;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Copies the values of `source` to `array`.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Array} source The array to copy values from.
 | |
|  * @param {Array} [array=[]] The array to copy values to.
 | |
|  * @returns {Array} Returns `array`.
 | |
|  */
 | |
| function copyArray(source, array) {
 | |
|   var index = -1,
 | |
|       length = source.length;
 | |
| 
 | |
|   array || (array = Array(length));
 | |
|   while (++index < length) {
 | |
|     array[index] = source[index];
 | |
|   }
 | |
|   return array;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Creates a function that wraps `func` to invoke it with the optional `this`
 | |
|  * binding of `thisArg`.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Function} func The function to wrap.
 | |
|  * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
 | |
|  * @param {*} [thisArg] The `this` binding of `func`.
 | |
|  * @returns {Function} Returns the new wrapped function.
 | |
|  */
 | |
| function createBind(func, bitmask, thisArg) {
 | |
|   var isBind = bitmask & BIND_FLAG,
 | |
|       Ctor = createCtor(func);
 | |
| 
 | |
|   function wrapper() {
 | |
|     var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
 | |
|     return fn.apply(isBind ? thisArg : this, arguments);
 | |
|   }
 | |
|   return wrapper;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Creates a function that produces an instance of `Ctor` regardless of
 | |
|  * whether it was invoked as part of a `new` expression or by `call` or `apply`.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Function} Ctor The constructor to wrap.
 | |
|  * @returns {Function} Returns the new wrapped function.
 | |
|  */
 | |
| function createCtor(Ctor) {
 | |
|   return function() {
 | |
|     // Use a `switch` statement to work with class constructors. See
 | |
|     // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
 | |
|     // for more details.
 | |
|     var args = arguments;
 | |
|     switch (args.length) {
 | |
|       case 0: return new Ctor;
 | |
|       case 1: return new Ctor(args[0]);
 | |
|       case 2: return new Ctor(args[0], args[1]);
 | |
|       case 3: return new Ctor(args[0], args[1], args[2]);
 | |
|       case 4: return new Ctor(args[0], args[1], args[2], args[3]);
 | |
|       case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);
 | |
|       case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);
 | |
|       case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
 | |
|     }
 | |
|     var thisBinding = baseCreate(Ctor.prototype),
 | |
|         result = Ctor.apply(thisBinding, args);
 | |
| 
 | |
|     // Mimic the constructor's `return` behavior.
 | |
|     // See https://es5.github.io/#x13.2.2 for more details.
 | |
|     return isObject(result) ? result : thisBinding;
 | |
|   };
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Creates a function that wraps `func` to enable currying.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Function} func The function to wrap.
 | |
|  * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
 | |
|  * @param {number} arity The arity of `func`.
 | |
|  * @returns {Function} Returns the new wrapped function.
 | |
|  */
 | |
| function createCurry(func, bitmask, arity) {
 | |
|   var Ctor = createCtor(func);
 | |
| 
 | |
|   function wrapper() {
 | |
|     var length = arguments.length,
 | |
|         args = Array(length),
 | |
|         index = length,
 | |
|         placeholder = getHolder(wrapper);
 | |
| 
 | |
|     while (index--) {
 | |
|       args[index] = arguments[index];
 | |
|     }
 | |
|     var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)
 | |
|       ? []
 | |
|       : replaceHolders(args, placeholder);
 | |
| 
 | |
|     length -= holders.length;
 | |
|     if (length < arity) {
 | |
|       return createRecurry(
 | |
|         func, bitmask, createHybrid, wrapper.placeholder, undefined,
 | |
|         args, holders, undefined, undefined, arity - length);
 | |
|     }
 | |
|     var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
 | |
|     return apply(fn, this, args);
 | |
|   }
 | |
|   return wrapper;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Creates a function that wraps `func` to invoke it with optional `this`
 | |
|  * binding of `thisArg`, partial application, and currying.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Function|string} func The function or method name to wrap.
 | |
|  * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
 | |
|  * @param {*} [thisArg] The `this` binding of `func`.
 | |
|  * @param {Array} [partials] The arguments to prepend to those provided to
 | |
|  *  the new function.
 | |
|  * @param {Array} [holders] The `partials` placeholder indexes.
 | |
|  * @param {Array} [partialsRight] The arguments to append to those provided
 | |
|  *  to the new function.
 | |
|  * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.
 | |
|  * @param {Array} [argPos] The argument positions of the new function.
 | |
|  * @param {number} [ary] The arity cap of `func`.
 | |
|  * @param {number} [arity] The arity of `func`.
 | |
|  * @returns {Function} Returns the new wrapped function.
 | |
|  */
 | |
| function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {
 | |
|   var isAry = bitmask & ARY_FLAG,
 | |
|       isBind = bitmask & BIND_FLAG,
 | |
|       isBindKey = bitmask & BIND_KEY_FLAG,
 | |
|       isCurried = bitmask & (CURRY_FLAG | CURRY_RIGHT_FLAG),
 | |
|       isFlip = bitmask & FLIP_FLAG,
 | |
|       Ctor = isBindKey ? undefined : createCtor(func);
 | |
| 
 | |
|   function wrapper() {
 | |
|     var length = arguments.length,
 | |
|         args = Array(length),
 | |
|         index = length;
 | |
| 
 | |
|     while (index--) {
 | |
|       args[index] = arguments[index];
 | |
|     }
 | |
|     if (isCurried) {
 | |
|       var placeholder = getHolder(wrapper),
 | |
|           holdersCount = countHolders(args, placeholder);
 | |
|     }
 | |
|     if (partials) {
 | |
|       args = composeArgs(args, partials, holders, isCurried);
 | |
|     }
 | |
|     if (partialsRight) {
 | |
|       args = composeArgsRight(args, partialsRight, holdersRight, isCurried);
 | |
|     }
 | |
|     length -= holdersCount;
 | |
|     if (isCurried && length < arity) {
 | |
|       var newHolders = replaceHolders(args, placeholder);
 | |
|       return createRecurry(
 | |
|         func, bitmask, createHybrid, wrapper.placeholder, thisArg,
 | |
|         args, newHolders, argPos, ary, arity - length
 | |
|       );
 | |
|     }
 | |
|     var thisBinding = isBind ? thisArg : this,
 | |
|         fn = isBindKey ? thisBinding[func] : func;
 | |
| 
 | |
|     length = args.length;
 | |
|     if (argPos) {
 | |
|       args = reorder(args, argPos);
 | |
|     } else if (isFlip && length > 1) {
 | |
|       args.reverse();
 | |
|     }
 | |
|     if (isAry && ary < length) {
 | |
|       args.length = ary;
 | |
|     }
 | |
|     if (this && this !== root && this instanceof wrapper) {
 | |
|       fn = Ctor || createCtor(fn);
 | |
|     }
 | |
|     return fn.apply(thisBinding, args);
 | |
|   }
 | |
|   return wrapper;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Creates a function that wraps `func` to invoke it with the `this` binding
 | |
|  * of `thisArg` and `partials` prepended to the arguments it receives.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Function} func The function to wrap.
 | |
|  * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
 | |
|  * @param {*} thisArg The `this` binding of `func`.
 | |
|  * @param {Array} partials The arguments to prepend to those provided to
 | |
|  *  the new function.
 | |
|  * @returns {Function} Returns the new wrapped function.
 | |
|  */
 | |
| function createPartial(func, bitmask, thisArg, partials) {
 | |
|   var isBind = bitmask & BIND_FLAG,
 | |
|       Ctor = createCtor(func);
 | |
| 
 | |
|   function wrapper() {
 | |
|     var argsIndex = -1,
 | |
|         argsLength = arguments.length,
 | |
|         leftIndex = -1,
 | |
|         leftLength = partials.length,
 | |
|         args = Array(leftLength + argsLength),
 | |
|         fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
 | |
| 
 | |
|     while (++leftIndex < leftLength) {
 | |
|       args[leftIndex] = partials[leftIndex];
 | |
|     }
 | |
|     while (argsLength--) {
 | |
|       args[leftIndex++] = arguments[++argsIndex];
 | |
|     }
 | |
|     return apply(fn, isBind ? thisArg : this, args);
 | |
|   }
 | |
|   return wrapper;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Creates a function that wraps `func` to continue currying.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Function} func The function to wrap.
 | |
|  * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
 | |
|  * @param {Function} wrapFunc The function to create the `func` wrapper.
 | |
|  * @param {*} placeholder The placeholder value.
 | |
|  * @param {*} [thisArg] The `this` binding of `func`.
 | |
|  * @param {Array} [partials] The arguments to prepend to those provided to
 | |
|  *  the new function.
 | |
|  * @param {Array} [holders] The `partials` placeholder indexes.
 | |
|  * @param {Array} [argPos] The argument positions of the new function.
 | |
|  * @param {number} [ary] The arity cap of `func`.
 | |
|  * @param {number} [arity] The arity of `func`.
 | |
|  * @returns {Function} Returns the new wrapped function.
 | |
|  */
 | |
| function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {
 | |
|   var isCurry = bitmask & CURRY_FLAG,
 | |
|       newHolders = isCurry ? holders : undefined,
 | |
|       newHoldersRight = isCurry ? undefined : holders,
 | |
|       newPartials = isCurry ? partials : undefined,
 | |
|       newPartialsRight = isCurry ? undefined : partials;
 | |
| 
 | |
|   bitmask |= (isCurry ? PARTIAL_FLAG : PARTIAL_RIGHT_FLAG);
 | |
|   bitmask &= ~(isCurry ? PARTIAL_RIGHT_FLAG : PARTIAL_FLAG);
 | |
| 
 | |
|   if (!(bitmask & CURRY_BOUND_FLAG)) {
 | |
|     bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG);
 | |
|   }
 | |
| 
 | |
|   var result = wrapFunc(func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, newHoldersRight, argPos, ary, arity);
 | |
|   result.placeholder = placeholder;
 | |
|   return setWrapToString(result, func, bitmask);
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Creates a function that either curries or invokes `func` with optional
 | |
|  * `this` binding and partially applied arguments.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Function|string} func The function or method name to wrap.
 | |
|  * @param {number} bitmask The bitmask flags.
 | |
|  *  The bitmask may be composed of the following flags:
 | |
|  *     1 - `_.bind`
 | |
|  *     2 - `_.bindKey`
 | |
|  *     4 - `_.curry` or `_.curryRight` of a bound function
 | |
|  *     8 - `_.curry`
 | |
|  *    16 - `_.curryRight`
 | |
|  *    32 - `_.partial`
 | |
|  *    64 - `_.partialRight`
 | |
|  *   128 - `_.rearg`
 | |
|  *   256 - `_.ary`
 | |
|  *   512 - `_.flip`
 | |
|  * @param {*} [thisArg] The `this` binding of `func`.
 | |
|  * @param {Array} [partials] The arguments to be partially applied.
 | |
|  * @param {Array} [holders] The `partials` placeholder indexes.
 | |
|  * @param {Array} [argPos] The argument positions of the new function.
 | |
|  * @param {number} [ary] The arity cap of `func`.
 | |
|  * @param {number} [arity] The arity of `func`.
 | |
|  * @returns {Function} Returns the new wrapped function.
 | |
|  */
 | |
| function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {
 | |
|   var isBindKey = bitmask & BIND_KEY_FLAG;
 | |
|   if (!isBindKey && typeof func != 'function') {
 | |
|     throw new TypeError(FUNC_ERROR_TEXT);
 | |
|   }
 | |
|   var length = partials ? partials.length : 0;
 | |
|   if (!length) {
 | |
|     bitmask &= ~(PARTIAL_FLAG | PARTIAL_RIGHT_FLAG);
 | |
|     partials = holders = undefined;
 | |
|   }
 | |
|   ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);
 | |
|   arity = arity === undefined ? arity : toInteger(arity);
 | |
|   length -= holders ? holders.length : 0;
 | |
| 
 | |
|   if (bitmask & PARTIAL_RIGHT_FLAG) {
 | |
|     var partialsRight = partials,
 | |
|         holdersRight = holders;
 | |
| 
 | |
|     partials = holders = undefined;
 | |
|   }
 | |
| 
 | |
|   var newData = [
 | |
|     func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,
 | |
|     argPos, ary, arity
 | |
|   ];
 | |
| 
 | |
|   func = newData[0];
 | |
|   bitmask = newData[1];
 | |
|   thisArg = newData[2];
 | |
|   partials = newData[3];
 | |
|   holders = newData[4];
 | |
|   arity = newData[9] = newData[9] == null
 | |
|     ? (isBindKey ? 0 : func.length)
 | |
|     : nativeMax(newData[9] - length, 0);
 | |
| 
 | |
|   if (!arity && bitmask & (CURRY_FLAG | CURRY_RIGHT_FLAG)) {
 | |
|     bitmask &= ~(CURRY_FLAG | CURRY_RIGHT_FLAG);
 | |
|   }
 | |
|   if (!bitmask || bitmask == BIND_FLAG) {
 | |
|     var result = createBind(func, bitmask, thisArg);
 | |
|   } else if (bitmask == CURRY_FLAG || bitmask == CURRY_RIGHT_FLAG) {
 | |
|     result = createCurry(func, bitmask, arity);
 | |
|   } else if ((bitmask == PARTIAL_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) && !holders.length) {
 | |
|     result = createPartial(func, bitmask, thisArg, partials);
 | |
|   } else {
 | |
|     result = createHybrid.apply(undefined, newData);
 | |
|   }
 | |
|   return setWrapToString(result, func, bitmask);
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Gets the argument placeholder value for `func`.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Function} func The function to inspect.
 | |
|  * @returns {*} Returns the placeholder value.
 | |
|  */
 | |
| function getHolder(func) {
 | |
|   var object = func;
 | |
|   return object.placeholder;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Gets the native function at `key` of `object`.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Object} object The object to query.
 | |
|  * @param {string} key The key of the method to get.
 | |
|  * @returns {*} Returns the function if it's native, else `undefined`.
 | |
|  */
 | |
| function getNative(object, key) {
 | |
|   var value = getValue(object, key);
 | |
|   return baseIsNative(value) ? value : undefined;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Extracts wrapper details from the `source` body comment.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {string} source The source to inspect.
 | |
|  * @returns {Array} Returns the wrapper details.
 | |
|  */
 | |
| function getWrapDetails(source) {
 | |
|   var match = source.match(reWrapDetails);
 | |
|   return match ? match[1].split(reSplitDetails) : [];
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Inserts wrapper `details` in a comment at the top of the `source` body.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {string} source The source to modify.
 | |
|  * @returns {Array} details The details to insert.
 | |
|  * @returns {string} Returns the modified source.
 | |
|  */
 | |
| function insertWrapDetails(source, details) {
 | |
|   var length = details.length,
 | |
|       lastIndex = length - 1;
 | |
| 
 | |
|   details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];
 | |
|   details = details.join(length > 2 ? ', ' : ' ');
 | |
|   return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n');
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Checks if `value` is a valid array-like index.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {*} value The value to check.
 | |
|  * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
 | |
|  * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
 | |
|  */
 | |
| function isIndex(value, length) {
 | |
|   length = length == null ? MAX_SAFE_INTEGER : length;
 | |
|   return !!length &&
 | |
|     (typeof value == 'number' || reIsUint.test(value)) &&
 | |
|     (value > -1 && value % 1 == 0 && value < length);
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Checks if `func` has its source masked.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Function} func The function to check.
 | |
|  * @returns {boolean} Returns `true` if `func` is masked, else `false`.
 | |
|  */
 | |
| function isMasked(func) {
 | |
|   return !!maskSrcKey && (maskSrcKey in func);
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Reorder `array` according to the specified indexes where the element at
 | |
|  * the first index is assigned as the first element, the element at
 | |
|  * the second index is assigned as the second element, and so on.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Array} array The array to reorder.
 | |
|  * @param {Array} indexes The arranged array indexes.
 | |
|  * @returns {Array} Returns `array`.
 | |
|  */
 | |
| function reorder(array, indexes) {
 | |
|   var arrLength = array.length,
 | |
|       length = nativeMin(indexes.length, arrLength),
 | |
|       oldArray = copyArray(array);
 | |
| 
 | |
|   while (length--) {
 | |
|     var index = indexes[length];
 | |
|     array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;
 | |
|   }
 | |
|   return array;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Sets the `toString` method of `wrapper` to mimic the source of `reference`
 | |
|  * with wrapper details in a comment at the top of the source body.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Function} wrapper The function to modify.
 | |
|  * @param {Function} reference The reference function.
 | |
|  * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
 | |
|  * @returns {Function} Returns `wrapper`.
 | |
|  */
 | |
| var setWrapToString = !defineProperty ? identity : function(wrapper, reference, bitmask) {
 | |
|   var source = (reference + '');
 | |
|   return defineProperty(wrapper, 'toString', {
 | |
|     'configurable': true,
 | |
|     'enumerable': false,
 | |
|     'value': constant(insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)))
 | |
|   });
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Converts `func` to its source code.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Function} func The function to process.
 | |
|  * @returns {string} Returns the source code.
 | |
|  */
 | |
| function toSource(func) {
 | |
|   if (func != null) {
 | |
|     try {
 | |
|       return funcToString.call(func);
 | |
|     } catch (e) {}
 | |
|     try {
 | |
|       return (func + '');
 | |
|     } catch (e) {}
 | |
|   }
 | |
|   return '';
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Updates wrapper `details` based on `bitmask` flags.
 | |
|  *
 | |
|  * @private
 | |
|  * @returns {Array} details The details to modify.
 | |
|  * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
 | |
|  * @returns {Array} Returns `details`.
 | |
|  */
 | |
| function updateWrapDetails(details, bitmask) {
 | |
|   arrayEach(wrapFlags, function(pair) {
 | |
|     var value = '_.' + pair[0];
 | |
|     if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {
 | |
|       details.push(value);
 | |
|     }
 | |
|   });
 | |
|   return details.sort();
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Creates a function that accepts arguments of `func` and either invokes
 | |
|  * `func` returning its result, if at least `arity` number of arguments have
 | |
|  * been provided, or returns a function that accepts the remaining `func`
 | |
|  * arguments, and so on. The arity of `func` may be specified if `func.length`
 | |
|  * is not sufficient.
 | |
|  *
 | |
|  * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,
 | |
|  * may be used as a placeholder for provided arguments.
 | |
|  *
 | |
|  * **Note:** This method doesn't set the "length" property of curried functions.
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 2.0.0
 | |
|  * @category Function
 | |
|  * @param {Function} func The function to curry.
 | |
|  * @param {number} [arity=func.length] The arity of `func`.
 | |
|  * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
 | |
|  * @returns {Function} Returns the new curried function.
 | |
|  * @example
 | |
|  *
 | |
|  * var abc = function(a, b, c) {
 | |
|  *   return [a, b, c];
 | |
|  * };
 | |
|  *
 | |
|  * var curried = _.curry(abc);
 | |
|  *
 | |
|  * curried(1)(2)(3);
 | |
|  * // => [1, 2, 3]
 | |
|  *
 | |
|  * curried(1, 2)(3);
 | |
|  * // => [1, 2, 3]
 | |
|  *
 | |
|  * curried(1, 2, 3);
 | |
|  * // => [1, 2, 3]
 | |
|  *
 | |
|  * // Curried with placeholders.
 | |
|  * curried(1)(_, 3)(2);
 | |
|  * // => [1, 2, 3]
 | |
|  */
 | |
| function curry(func, arity, guard) {
 | |
|   arity = guard ? undefined : arity;
 | |
|   var result = createWrap(func, CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
 | |
|   result.placeholder = curry.placeholder;
 | |
|   return result;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Checks if `value` is classified as a `Function` object.
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 0.1.0
 | |
|  * @category Lang
 | |
|  * @param {*} value The value to check.
 | |
|  * @returns {boolean} Returns `true` if `value` is a function, else `false`.
 | |
|  * @example
 | |
|  *
 | |
|  * _.isFunction(_);
 | |
|  * // => true
 | |
|  *
 | |
|  * _.isFunction(/abc/);
 | |
|  * // => false
 | |
|  */
 | |
| function isFunction(value) {
 | |
|   // The use of `Object#toString` avoids issues with the `typeof` operator
 | |
|   // in Safari 8-9 which returns 'object' for typed array and other constructors.
 | |
|   var tag = isObject(value) ? objectToString.call(value) : '';
 | |
|   return tag == funcTag || tag == genTag;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Checks if `value` is the
 | |
|  * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
 | |
|  * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 0.1.0
 | |
|  * @category Lang
 | |
|  * @param {*} value The value to check.
 | |
|  * @returns {boolean} Returns `true` if `value` is an object, else `false`.
 | |
|  * @example
 | |
|  *
 | |
|  * _.isObject({});
 | |
|  * // => true
 | |
|  *
 | |
|  * _.isObject([1, 2, 3]);
 | |
|  * // => true
 | |
|  *
 | |
|  * _.isObject(_.noop);
 | |
|  * // => true
 | |
|  *
 | |
|  * _.isObject(null);
 | |
|  * // => false
 | |
|  */
 | |
| function isObject(value) {
 | |
|   var type = typeof value;
 | |
|   return !!value && (type == 'object' || type == 'function');
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Checks if `value` is object-like. A value is object-like if it's not `null`
 | |
|  * and has a `typeof` result of "object".
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 4.0.0
 | |
|  * @category Lang
 | |
|  * @param {*} value The value to check.
 | |
|  * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
 | |
|  * @example
 | |
|  *
 | |
|  * _.isObjectLike({});
 | |
|  * // => true
 | |
|  *
 | |
|  * _.isObjectLike([1, 2, 3]);
 | |
|  * // => true
 | |
|  *
 | |
|  * _.isObjectLike(_.noop);
 | |
|  * // => false
 | |
|  *
 | |
|  * _.isObjectLike(null);
 | |
|  * // => false
 | |
|  */
 | |
| function isObjectLike(value) {
 | |
|   return !!value && typeof value == 'object';
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Checks if `value` is classified as a `Symbol` primitive or object.
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 4.0.0
 | |
|  * @category Lang
 | |
|  * @param {*} value The value to check.
 | |
|  * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
 | |
|  * @example
 | |
|  *
 | |
|  * _.isSymbol(Symbol.iterator);
 | |
|  * // => true
 | |
|  *
 | |
|  * _.isSymbol('abc');
 | |
|  * // => false
 | |
|  */
 | |
| function isSymbol(value) {
 | |
|   return typeof value == 'symbol' ||
 | |
|     (isObjectLike(value) && objectToString.call(value) == symbolTag);
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Converts `value` to a finite number.
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 4.12.0
 | |
|  * @category Lang
 | |
|  * @param {*} value The value to convert.
 | |
|  * @returns {number} Returns the converted number.
 | |
|  * @example
 | |
|  *
 | |
|  * _.toFinite(3.2);
 | |
|  * // => 3.2
 | |
|  *
 | |
|  * _.toFinite(Number.MIN_VALUE);
 | |
|  * // => 5e-324
 | |
|  *
 | |
|  * _.toFinite(Infinity);
 | |
|  * // => 1.7976931348623157e+308
 | |
|  *
 | |
|  * _.toFinite('3.2');
 | |
|  * // => 3.2
 | |
|  */
 | |
| function toFinite(value) {
 | |
|   if (!value) {
 | |
|     return value === 0 ? value : 0;
 | |
|   }
 | |
|   value = toNumber(value);
 | |
|   if (value === INFINITY || value === -INFINITY) {
 | |
|     var sign = (value < 0 ? -1 : 1);
 | |
|     return sign * MAX_INTEGER;
 | |
|   }
 | |
|   return value === value ? value : 0;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Converts `value` to an integer.
 | |
|  *
 | |
|  * **Note:** This method is loosely based on
 | |
|  * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 4.0.0
 | |
|  * @category Lang
 | |
|  * @param {*} value The value to convert.
 | |
|  * @returns {number} Returns the converted integer.
 | |
|  * @example
 | |
|  *
 | |
|  * _.toInteger(3.2);
 | |
|  * // => 3
 | |
|  *
 | |
|  * _.toInteger(Number.MIN_VALUE);
 | |
|  * // => 0
 | |
|  *
 | |
|  * _.toInteger(Infinity);
 | |
|  * // => 1.7976931348623157e+308
 | |
|  *
 | |
|  * _.toInteger('3.2');
 | |
|  * // => 3
 | |
|  */
 | |
| function toInteger(value) {
 | |
|   var result = toFinite(value),
 | |
|       remainder = result % 1;
 | |
| 
 | |
|   return result === result ? (remainder ? result - remainder : result) : 0;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Converts `value` to a number.
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 4.0.0
 | |
|  * @category Lang
 | |
|  * @param {*} value The value to process.
 | |
|  * @returns {number} Returns the number.
 | |
|  * @example
 | |
|  *
 | |
|  * _.toNumber(3.2);
 | |
|  * // => 3.2
 | |
|  *
 | |
|  * _.toNumber(Number.MIN_VALUE);
 | |
|  * // => 5e-324
 | |
|  *
 | |
|  * _.toNumber(Infinity);
 | |
|  * // => Infinity
 | |
|  *
 | |
|  * _.toNumber('3.2');
 | |
|  * // => 3.2
 | |
|  */
 | |
| function toNumber(value) {
 | |
|   if (typeof value == 'number') {
 | |
|     return value;
 | |
|   }
 | |
|   if (isSymbol(value)) {
 | |
|     return NAN;
 | |
|   }
 | |
|   if (isObject(value)) {
 | |
|     var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
 | |
|     value = isObject(other) ? (other + '') : other;
 | |
|   }
 | |
|   if (typeof value != 'string') {
 | |
|     return value === 0 ? value : +value;
 | |
|   }
 | |
|   value = value.replace(reTrim, '');
 | |
|   var isBinary = reIsBinary.test(value);
 | |
|   return (isBinary || reIsOctal.test(value))
 | |
|     ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
 | |
|     : (reIsBadHex.test(value) ? NAN : +value);
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Creates a function that returns `value`.
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 2.4.0
 | |
|  * @category Util
 | |
|  * @param {*} value The value to return from the new function.
 | |
|  * @returns {Function} Returns the new constant function.
 | |
|  * @example
 | |
|  *
 | |
|  * var objects = _.times(2, _.constant({ 'a': 1 }));
 | |
|  *
 | |
|  * console.log(objects);
 | |
|  * // => [{ 'a': 1 }, { 'a': 1 }]
 | |
|  *
 | |
|  * console.log(objects[0] === objects[1]);
 | |
|  * // => true
 | |
|  */
 | |
| function constant(value) {
 | |
|   return function() {
 | |
|     return value;
 | |
|   };
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * This method returns the first argument it receives.
 | |
|  *
 | |
|  * @static
 | |
|  * @since 0.1.0
 | |
|  * @memberOf _
 | |
|  * @category Util
 | |
|  * @param {*} value Any value.
 | |
|  * @returns {*} Returns `value`.
 | |
|  * @example
 | |
|  *
 | |
|  * var object = { 'a': 1 };
 | |
|  *
 | |
|  * console.log(_.identity(object) === object);
 | |
|  * // => true
 | |
|  */
 | |
| function identity(value) {
 | |
|   return value;
 | |
| }
 | |
| 
 | |
| // Assign default placeholders.
 | |
| curry.placeholder = {};
 | |
| 
 | |
| module.exports = curry;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 5464:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| module.exports =
 | |
| /******/ (function(modules) { // webpackBootstrap
 | |
| /******/ 	// The module cache
 | |
| /******/ 	var installedModules = {};
 | |
| /******/
 | |
| /******/ 	// The require function
 | |
| /******/ 	function __nested_webpack_require_187__(moduleId) {
 | |
| /******/
 | |
| /******/ 		// Check if module is in cache
 | |
| /******/ 		if(installedModules[moduleId])
 | |
| /******/ 			return installedModules[moduleId].exports;
 | |
| /******/
 | |
| /******/ 		// Create a new module (and put it into the cache)
 | |
| /******/ 		var module = installedModules[moduleId] = {
 | |
| /******/ 			exports: {},
 | |
| /******/ 			id: moduleId,
 | |
| /******/ 			loaded: false
 | |
| /******/ 		};
 | |
| /******/
 | |
| /******/ 		// Execute the module function
 | |
| /******/ 		modules[moduleId].call(module.exports, module, module.exports, __nested_webpack_require_187__);
 | |
| /******/
 | |
| /******/ 		// Flag the module as loaded
 | |
| /******/ 		module.loaded = true;
 | |
| /******/
 | |
| /******/ 		// Return the exports of the module
 | |
| /******/ 		return module.exports;
 | |
| /******/ 	}
 | |
| /******/
 | |
| /******/
 | |
| /******/ 	// expose the modules object (__webpack_modules__)
 | |
| /******/ 	__nested_webpack_require_187__.m = modules;
 | |
| /******/
 | |
| /******/ 	// expose the module cache
 | |
| /******/ 	__nested_webpack_require_187__.c = installedModules;
 | |
| /******/
 | |
| /******/ 	// __webpack_public_path__
 | |
| /******/ 	__nested_webpack_require_187__.p = "";
 | |
| /******/
 | |
| /******/ 	// Load entry module and return exports
 | |
| /******/ 	return __nested_webpack_require_187__(0);
 | |
| /******/ })
 | |
| /************************************************************************/
 | |
| /******/ ([
 | |
| /* 0 */
 | |
| /***/ (function(module, exports, __nested_webpack_require_1468__) {
 | |
| 
 | |
| 	module.exports = __nested_webpack_require_1468__(1);
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| /* 1 */
 | |
| /***/ (function(module, exports, __nested_webpack_require_1587__) {
 | |
| 
 | |
| 	'use strict';
 | |
| 	
 | |
| 	Object.defineProperty(exports, '__esModule', {
 | |
| 	  value: true
 | |
| 	});
 | |
| 	
 | |
| 	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
 | |
| 	
 | |
| 	var _Highlighter = __nested_webpack_require_1587__(2);
 | |
| 	
 | |
| 	var _Highlighter2 = _interopRequireDefault(_Highlighter);
 | |
| 
 | |
| 	exports['default'] = _Highlighter2['default'];
 | |
| 	module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| /* 2 */
 | |
| /***/ (function(module, exports, __nested_webpack_require_2043__) {
 | |
| 
 | |
| 	'use strict';
 | |
| 	
 | |
| 	Object.defineProperty(exports, '__esModule', {
 | |
| 	  value: true
 | |
| 	});
 | |
| 	
 | |
| 	var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
 | |
| 	
 | |
| 	exports['default'] = Highlighter;
 | |
| 	
 | |
| 	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
 | |
| 	
 | |
| 	function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
 | |
| 	
 | |
| 	var _highlightWordsCore = __nested_webpack_require_2043__(3);
 | |
| 	
 | |
| 	var _propTypes = __nested_webpack_require_2043__(4);
 | |
| 	
 | |
| 	var _propTypes2 = _interopRequireDefault(_propTypes);
 | |
| 	
 | |
| 	var _react = __nested_webpack_require_2043__(14);
 | |
| 	
 | |
| 	var _memoizeOne = __nested_webpack_require_2043__(15);
 | |
| 	
 | |
| 	var _memoizeOne2 = _interopRequireDefault(_memoizeOne);
 | |
| 	
 | |
| 	Highlighter.propTypes = {
 | |
| 	  activeClassName: _propTypes2['default'].string,
 | |
| 	  activeIndex: _propTypes2['default'].number,
 | |
| 	  activeStyle: _propTypes2['default'].object,
 | |
| 	  autoEscape: _propTypes2['default'].bool,
 | |
| 	  className: _propTypes2['default'].string,
 | |
| 	  findChunks: _propTypes2['default'].func,
 | |
| 	  highlightClassName: _propTypes2['default'].oneOfType([_propTypes2['default'].object, _propTypes2['default'].string]),
 | |
| 	  highlightStyle: _propTypes2['default'].object,
 | |
| 	  highlightTag: _propTypes2['default'].oneOfType([_propTypes2['default'].node, _propTypes2['default'].func, _propTypes2['default'].string]),
 | |
| 	  sanitize: _propTypes2['default'].func,
 | |
| 	  searchWords: _propTypes2['default'].arrayOf(_propTypes2['default'].oneOfType([_propTypes2['default'].string, _propTypes2['default'].instanceOf(RegExp)])).isRequired,
 | |
| 	  textToHighlight: _propTypes2['default'].string.isRequired,
 | |
| 	  unhighlightTag: _propTypes2['default'].oneOfType([_propTypes2['default'].node, _propTypes2['default'].func, _propTypes2['default'].string]),
 | |
| 	  unhighlightClassName: _propTypes2['default'].string,
 | |
| 	  unhighlightStyle: _propTypes2['default'].object
 | |
| 	};
 | |
| 	
 | |
| 	/**
 | |
| 	 * Highlights all occurrences of search terms (searchText) within a string (textToHighlight).
 | |
| 	 * This function returns an array of strings and <span>s (wrapping highlighted words).
 | |
| 	 */
 | |
| 	
 | |
| 	function Highlighter(_ref) {
 | |
| 	  var _ref$activeClassName = _ref.activeClassName;
 | |
| 	  var activeClassName = _ref$activeClassName === undefined ? '' : _ref$activeClassName;
 | |
| 	  var _ref$activeIndex = _ref.activeIndex;
 | |
| 	  var activeIndex = _ref$activeIndex === undefined ? -1 : _ref$activeIndex;
 | |
| 	  var activeStyle = _ref.activeStyle;
 | |
| 	  var autoEscape = _ref.autoEscape;
 | |
| 	  var _ref$caseSensitive = _ref.caseSensitive;
 | |
| 	  var caseSensitive = _ref$caseSensitive === undefined ? false : _ref$caseSensitive;
 | |
| 	  var className = _ref.className;
 | |
| 	  var findChunks = _ref.findChunks;
 | |
| 	  var _ref$highlightClassName = _ref.highlightClassName;
 | |
| 	  var highlightClassName = _ref$highlightClassName === undefined ? '' : _ref$highlightClassName;
 | |
| 	  var _ref$highlightStyle = _ref.highlightStyle;
 | |
| 	  var highlightStyle = _ref$highlightStyle === undefined ? {} : _ref$highlightStyle;
 | |
| 	  var _ref$highlightTag = _ref.highlightTag;
 | |
| 	  var highlightTag = _ref$highlightTag === undefined ? 'mark' : _ref$highlightTag;
 | |
| 	  var sanitize = _ref.sanitize;
 | |
| 	  var searchWords = _ref.searchWords;
 | |
| 	  var textToHighlight = _ref.textToHighlight;
 | |
| 	  var _ref$unhighlightTag = _ref.unhighlightTag;
 | |
| 	  var unhighlightTag = _ref$unhighlightTag === undefined ? 'span' : _ref$unhighlightTag;
 | |
| 	  var _ref$unhighlightClassName = _ref.unhighlightClassName;
 | |
| 	  var unhighlightClassName = _ref$unhighlightClassName === undefined ? '' : _ref$unhighlightClassName;
 | |
| 	  var unhighlightStyle = _ref.unhighlightStyle;
 | |
| 	
 | |
| 	  var rest = _objectWithoutProperties(_ref, ['activeClassName', 'activeIndex', 'activeStyle', 'autoEscape', 'caseSensitive', 'className', 'findChunks', 'highlightClassName', 'highlightStyle', 'highlightTag', 'sanitize', 'searchWords', 'textToHighlight', 'unhighlightTag', 'unhighlightClassName', 'unhighlightStyle']);
 | |
| 	
 | |
| 	  var chunks = (0, _highlightWordsCore.findAll)({
 | |
| 	    autoEscape: autoEscape,
 | |
| 	    caseSensitive: caseSensitive,
 | |
| 	    findChunks: findChunks,
 | |
| 	    sanitize: sanitize,
 | |
| 	    searchWords: searchWords,
 | |
| 	    textToHighlight: textToHighlight
 | |
| 	  });
 | |
| 	  var HighlightTag = highlightTag;
 | |
| 	  var highlightIndex = -1;
 | |
| 	  var highlightClassNames = '';
 | |
| 	  var highlightStyles = undefined;
 | |
| 	
 | |
| 	  var lowercaseProps = function lowercaseProps(object) {
 | |
| 	    var mapped = {};
 | |
| 	    for (var key in object) {
 | |
| 	      mapped[key.toLowerCase()] = object[key];
 | |
| 	    }
 | |
| 	    return mapped;
 | |
| 	  };
 | |
| 	  var memoizedLowercaseProps = (0, _memoizeOne2['default'])(lowercaseProps);
 | |
| 	
 | |
| 	  return (0, _react.createElement)('span', _extends({
 | |
| 	    className: className
 | |
| 	  }, rest, {
 | |
| 	    children: chunks.map(function (chunk, index) {
 | |
| 	      var text = textToHighlight.substr(chunk.start, chunk.end - chunk.start);
 | |
| 	
 | |
| 	      if (chunk.highlight) {
 | |
| 	        highlightIndex++;
 | |
| 	
 | |
| 	        var highlightClass = undefined;
 | |
| 	        if (typeof highlightClassName === 'object') {
 | |
| 	          if (!caseSensitive) {
 | |
| 	            highlightClassName = memoizedLowercaseProps(highlightClassName);
 | |
| 	            highlightClass = highlightClassName[text.toLowerCase()];
 | |
| 	          } else {
 | |
| 	            highlightClass = highlightClassName[text];
 | |
| 	          }
 | |
| 	        } else {
 | |
| 	          highlightClass = highlightClassName;
 | |
| 	        }
 | |
| 	
 | |
| 	        var isActive = highlightIndex === +activeIndex;
 | |
| 	
 | |
| 	        highlightClassNames = highlightClass + ' ' + (isActive ? activeClassName : '');
 | |
| 	        highlightStyles = isActive === true && activeStyle != null ? Object.assign({}, highlightStyle, activeStyle) : highlightStyle;
 | |
| 	
 | |
| 	        var props = {
 | |
| 	          children: text,
 | |
| 	          className: highlightClassNames,
 | |
| 	          key: index,
 | |
| 	          style: highlightStyles
 | |
| 	        };
 | |
| 	
 | |
| 	        // Don't attach arbitrary props to DOM elements; this triggers React DEV warnings (https://fb.me/react-unknown-prop)
 | |
| 	        // Only pass through the highlightIndex attribute for custom components.
 | |
| 	        if (typeof HighlightTag !== 'string') {
 | |
| 	          props.highlightIndex = highlightIndex;
 | |
| 	        }
 | |
| 	
 | |
| 	        return (0, _react.createElement)(HighlightTag, props);
 | |
| 	      } else {
 | |
| 	        return (0, _react.createElement)(unhighlightTag, {
 | |
| 	          children: text,
 | |
| 	          className: unhighlightClassName,
 | |
| 	          key: index,
 | |
| 	          style: unhighlightStyle
 | |
| 	        });
 | |
| 	      }
 | |
| 	    })
 | |
| 	  }));
 | |
| 	}
 | |
| 	
 | |
| 	module.exports = exports['default'];
 | |
| 
 | |
| /***/ }),
 | |
| /* 3 */
 | |
| /***/ (function(module, exports) {
 | |
| 
 | |
| 	module.exports =
 | |
| 	/******/ (function(modules) { // webpackBootstrap
 | |
| 	/******/ 	// The module cache
 | |
| 	/******/ 	var installedModules = {};
 | |
| 	/******/
 | |
| 	/******/ 	// The require function
 | |
| 	/******/ 	function __nested_webpack_require_8969__(moduleId) {
 | |
| 	/******/
 | |
| 	/******/ 		// Check if module is in cache
 | |
| 	/******/ 		if(installedModules[moduleId])
 | |
| 	/******/ 			return installedModules[moduleId].exports;
 | |
| 	/******/
 | |
| 	/******/ 		// Create a new module (and put it into the cache)
 | |
| 	/******/ 		var module = installedModules[moduleId] = {
 | |
| 	/******/ 			exports: {},
 | |
| 	/******/ 			id: moduleId,
 | |
| 	/******/ 			loaded: false
 | |
| 	/******/ 		};
 | |
| 	/******/
 | |
| 	/******/ 		// Execute the module function
 | |
| 	/******/ 		modules[moduleId].call(module.exports, module, module.exports, __nested_webpack_require_8969__);
 | |
| 	/******/
 | |
| 	/******/ 		// Flag the module as loaded
 | |
| 	/******/ 		module.loaded = true;
 | |
| 	/******/
 | |
| 	/******/ 		// Return the exports of the module
 | |
| 	/******/ 		return module.exports;
 | |
| 	/******/ 	}
 | |
| 	/******/
 | |
| 	/******/
 | |
| 	/******/ 	// expose the modules object (__webpack_modules__)
 | |
| 	/******/ 	__nested_webpack_require_8969__.m = modules;
 | |
| 	/******/
 | |
| 	/******/ 	// expose the module cache
 | |
| 	/******/ 	__nested_webpack_require_8969__.c = installedModules;
 | |
| 	/******/
 | |
| 	/******/ 	// __webpack_public_path__
 | |
| 	/******/ 	__nested_webpack_require_8969__.p = "";
 | |
| 	/******/
 | |
| 	/******/ 	// Load entry module and return exports
 | |
| 	/******/ 	return __nested_webpack_require_8969__(0);
 | |
| 	/******/ })
 | |
| 	/************************************************************************/
 | |
| 	/******/ ([
 | |
| 	/* 0 */
 | |
| 	/***/ (function(module, exports, __nested_webpack_require_10289__) {
 | |
| 	
 | |
| 		module.exports = __nested_webpack_require_10289__(1);
 | |
| 	
 | |
| 	
 | |
| 	/***/ }),
 | |
| 	/* 1 */
 | |
| 	/***/ (function(module, exports, __nested_webpack_require_10415__) {
 | |
| 	
 | |
| 		'use strict';
 | |
| 		
 | |
| 		Object.defineProperty(exports, "__esModule", {
 | |
| 		  value: true
 | |
| 		});
 | |
| 		
 | |
| 		var _utils = __nested_webpack_require_10415__(2);
 | |
| 		
 | |
| 		Object.defineProperty(exports, 'combineChunks', {
 | |
| 		  enumerable: true,
 | |
| 		  get: function get() {
 | |
| 		    return _utils.combineChunks;
 | |
| 		  }
 | |
| 		});
 | |
| 		Object.defineProperty(exports, 'fillInChunks', {
 | |
| 		  enumerable: true,
 | |
| 		  get: function get() {
 | |
| 		    return _utils.fillInChunks;
 | |
| 		  }
 | |
| 		});
 | |
| 		Object.defineProperty(exports, 'findAll', {
 | |
| 		  enumerable: true,
 | |
| 		  get: function get() {
 | |
| 		    return _utils.findAll;
 | |
| 		  }
 | |
| 		});
 | |
| 		Object.defineProperty(exports, 'findChunks', {
 | |
| 		  enumerable: true,
 | |
| 		  get: function get() {
 | |
| 		    return _utils.findChunks;
 | |
| 		  }
 | |
| 		});
 | |
| 	
 | |
| 	/***/ }),
 | |
| 	/* 2 */
 | |
| 	/***/ (function(module, exports) {
 | |
| 	
 | |
| 		'use strict';
 | |
| 		
 | |
| 		Object.defineProperty(exports, "__esModule", {
 | |
| 		  value: true
 | |
| 		});
 | |
| 		/**
 | |
| 		 * Creates an array of chunk objects representing both higlightable and non highlightable pieces of text that match each search word.
 | |
| 		 * @return Array of "chunks" (where a Chunk is { start:number, end:number, highlight:boolean })
 | |
| 		 */
 | |
| 		var findAll = exports.findAll = function findAll(_ref) {
 | |
| 		  var autoEscape = _ref.autoEscape,
 | |
| 		      _ref$caseSensitive = _ref.caseSensitive,
 | |
| 		      caseSensitive = _ref$caseSensitive === undefined ? false : _ref$caseSensitive,
 | |
| 		      _ref$findChunks = _ref.findChunks,
 | |
| 		      findChunks = _ref$findChunks === undefined ? defaultFindChunks : _ref$findChunks,
 | |
| 		      sanitize = _ref.sanitize,
 | |
| 		      searchWords = _ref.searchWords,
 | |
| 		      textToHighlight = _ref.textToHighlight;
 | |
| 		  return fillInChunks({
 | |
| 		    chunksToHighlight: combineChunks({
 | |
| 		      chunks: findChunks({
 | |
| 		        autoEscape: autoEscape,
 | |
| 		        caseSensitive: caseSensitive,
 | |
| 		        sanitize: sanitize,
 | |
| 		        searchWords: searchWords,
 | |
| 		        textToHighlight: textToHighlight
 | |
| 		      })
 | |
| 		    }),
 | |
| 		    totalLength: textToHighlight ? textToHighlight.length : 0
 | |
| 		  });
 | |
| 		};
 | |
| 		
 | |
| 		/**
 | |
| 		 * Takes an array of {start:number, end:number} objects and combines chunks that overlap into single chunks.
 | |
| 		 * @return {start:number, end:number}[]
 | |
| 		 */
 | |
| 		var combineChunks = exports.combineChunks = function combineChunks(_ref2) {
 | |
| 		  var chunks = _ref2.chunks;
 | |
| 		
 | |
| 		  chunks = chunks.sort(function (first, second) {
 | |
| 		    return first.start - second.start;
 | |
| 		  }).reduce(function (processedChunks, nextChunk) {
 | |
| 		    // First chunk just goes straight in the array...
 | |
| 		    if (processedChunks.length === 0) {
 | |
| 		      return [nextChunk];
 | |
| 		    } else {
 | |
| 		      // ... subsequent chunks get checked to see if they overlap...
 | |
| 		      var prevChunk = processedChunks.pop();
 | |
| 		      if (nextChunk.start <= prevChunk.end) {
 | |
| 		        // It may be the case that prevChunk completely surrounds nextChunk, so take the
 | |
| 		        // largest of the end indeces.
 | |
| 		        var endIndex = Math.max(prevChunk.end, nextChunk.end);
 | |
| 		        processedChunks.push({ start: prevChunk.start, end: endIndex });
 | |
| 		      } else {
 | |
| 		        processedChunks.push(prevChunk, nextChunk);
 | |
| 		      }
 | |
| 		      return processedChunks;
 | |
| 		    }
 | |
| 		  }, []);
 | |
| 		
 | |
| 		  return chunks;
 | |
| 		};
 | |
| 		
 | |
| 		/**
 | |
| 		 * Examine text for any matches.
 | |
| 		 * If we find matches, add them to the returned array as a "chunk" object ({start:number, end:number}).
 | |
| 		 * @return {start:number, end:number}[]
 | |
| 		 */
 | |
| 		var defaultFindChunks = function defaultFindChunks(_ref3) {
 | |
| 		  var autoEscape = _ref3.autoEscape,
 | |
| 		      caseSensitive = _ref3.caseSensitive,
 | |
| 		      _ref3$sanitize = _ref3.sanitize,
 | |
| 		      sanitize = _ref3$sanitize === undefined ? identity : _ref3$sanitize,
 | |
| 		      searchWords = _ref3.searchWords,
 | |
| 		      textToHighlight = _ref3.textToHighlight;
 | |
| 		
 | |
| 		  textToHighlight = sanitize(textToHighlight);
 | |
| 		
 | |
| 		  return searchWords.filter(function (searchWord) {
 | |
| 		    return searchWord;
 | |
| 		  }) // Remove empty words
 | |
| 		  .reduce(function (chunks, searchWord) {
 | |
| 		    searchWord = sanitize(searchWord);
 | |
| 		
 | |
| 		    if (autoEscape) {
 | |
| 		      searchWord = escapeRegExpFn(searchWord);
 | |
| 		    }
 | |
| 		
 | |
| 		    var regex = new RegExp(searchWord, caseSensitive ? 'g' : 'gi');
 | |
| 		
 | |
| 		    var match = void 0;
 | |
| 		    while (match = regex.exec(textToHighlight)) {
 | |
| 		      var start = match.index;
 | |
| 		      var end = regex.lastIndex;
 | |
| 		      // We do not return zero-length matches
 | |
| 		      if (end > start) {
 | |
| 		        chunks.push({ start: start, end: end });
 | |
| 		      }
 | |
| 		
 | |
| 		      // Prevent browsers like Firefox from getting stuck in an infinite loop
 | |
| 		      // See http://www.regexguru.com/2008/04/watch-out-for-zero-length-matches/
 | |
| 		      if (match.index == regex.lastIndex) {
 | |
| 		        regex.lastIndex++;
 | |
| 		      }
 | |
| 		    }
 | |
| 		
 | |
| 		    return chunks;
 | |
| 		  }, []);
 | |
| 		};
 | |
| 		// Allow the findChunks to be overridden in findAll,
 | |
| 		// but for backwards compatibility we export as the old name
 | |
| 		exports.findChunks = defaultFindChunks;
 | |
| 		
 | |
| 		/**
 | |
| 		 * Given a set of chunks to highlight, create an additional set of chunks
 | |
| 		 * to represent the bits of text between the highlighted text.
 | |
| 		 * @param chunksToHighlight {start:number, end:number}[]
 | |
| 		 * @param totalLength number
 | |
| 		 * @return {start:number, end:number, highlight:boolean}[]
 | |
| 		 */
 | |
| 		
 | |
| 		var fillInChunks = exports.fillInChunks = function fillInChunks(_ref4) {
 | |
| 		  var chunksToHighlight = _ref4.chunksToHighlight,
 | |
| 		      totalLength = _ref4.totalLength;
 | |
| 		
 | |
| 		  var allChunks = [];
 | |
| 		  var append = function append(start, end, highlight) {
 | |
| 		    if (end - start > 0) {
 | |
| 		      allChunks.push({
 | |
| 		        start: start,
 | |
| 		        end: end,
 | |
| 		        highlight: highlight
 | |
| 		      });
 | |
| 		    }
 | |
| 		  };
 | |
| 		
 | |
| 		  if (chunksToHighlight.length === 0) {
 | |
| 		    append(0, totalLength, false);
 | |
| 		  } else {
 | |
| 		    var lastIndex = 0;
 | |
| 		    chunksToHighlight.forEach(function (chunk) {
 | |
| 		      append(lastIndex, chunk.start, false);
 | |
| 		      append(chunk.start, chunk.end, true);
 | |
| 		      lastIndex = chunk.end;
 | |
| 		    });
 | |
| 		    append(lastIndex, totalLength, false);
 | |
| 		  }
 | |
| 		  return allChunks;
 | |
| 		};
 | |
| 		
 | |
| 		function identity(value) {
 | |
| 		  return value;
 | |
| 		}
 | |
| 		
 | |
| 		function escapeRegExpFn(str) {
 | |
| 		  return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&');
 | |
| 		}
 | |
| 	
 | |
| 	/***/ })
 | |
| 	/******/ ]);
 | |
| 	//# sourceMappingURL=index.js.map
 | |
| 
 | |
| /***/ }),
 | |
| /* 4 */
 | |
| /***/ (function(module, exports, __nested_webpack_require_16653__) {
 | |
| 
 | |
| 	/* WEBPACK VAR INJECTION */(function(process) {/**
 | |
| 	 * Copyright (c) 2013-present, Facebook, Inc.
 | |
| 	 *
 | |
| 	 * This source code is licensed under the MIT license found in the
 | |
| 	 * LICENSE file in the root directory of this source tree.
 | |
| 	 */
 | |
| 	
 | |
| 	if (process.env.NODE_ENV !== 'production') {
 | |
| 	  var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&
 | |
| 	    Symbol.for &&
 | |
| 	    Symbol.for('react.element')) ||
 | |
| 	    0xeac7;
 | |
| 	
 | |
| 	  var isValidElement = function(object) {
 | |
| 	    return typeof object === 'object' &&
 | |
| 	      object !== null &&
 | |
| 	      object.$$typeof === REACT_ELEMENT_TYPE;
 | |
| 	  };
 | |
| 	
 | |
| 	  // By explicitly using `prop-types` you are opting into new development behavior.
 | |
| 	  // http://fb.me/prop-types-in-prod
 | |
| 	  var throwOnDirectAccess = true;
 | |
| 	  module.exports = __nested_webpack_require_16653__(6)(isValidElement, throwOnDirectAccess);
 | |
| 	} else {
 | |
| 	  // By explicitly using `prop-types` you are opting into new production behavior.
 | |
| 	  // http://fb.me/prop-types-in-prod
 | |
| 	  module.exports = __nested_webpack_require_16653__(13)();
 | |
| 	}
 | |
| 	
 | |
| 	/* WEBPACK VAR INJECTION */}.call(exports, __nested_webpack_require_16653__(5)))
 | |
| 
 | |
| /***/ }),
 | |
| /* 5 */
 | |
| /***/ (function(module, exports) {
 | |
| 
 | |
| 	// shim for using process in browser
 | |
| 	var process = module.exports = {};
 | |
| 	
 | |
| 	// cached from whatever global is present so that test runners that stub it
 | |
| 	// don't break things.  But we need to wrap it in a try catch in case it is
 | |
| 	// wrapped in strict mode code which doesn't define any globals.  It's inside a
 | |
| 	// function because try/catches deoptimize in certain engines.
 | |
| 	
 | |
| 	var cachedSetTimeout;
 | |
| 	var cachedClearTimeout;
 | |
| 	
 | |
| 	function defaultSetTimout() {
 | |
| 	    throw new Error('setTimeout has not been defined');
 | |
| 	}
 | |
| 	function defaultClearTimeout () {
 | |
| 	    throw new Error('clearTimeout has not been defined');
 | |
| 	}
 | |
| 	(function () {
 | |
| 	    try {
 | |
| 	        if (typeof setTimeout === 'function') {
 | |
| 	            cachedSetTimeout = setTimeout;
 | |
| 	        } else {
 | |
| 	            cachedSetTimeout = defaultSetTimout;
 | |
| 	        }
 | |
| 	    } catch (e) {
 | |
| 	        cachedSetTimeout = defaultSetTimout;
 | |
| 	    }
 | |
| 	    try {
 | |
| 	        if (typeof clearTimeout === 'function') {
 | |
| 	            cachedClearTimeout = clearTimeout;
 | |
| 	        } else {
 | |
| 	            cachedClearTimeout = defaultClearTimeout;
 | |
| 	        }
 | |
| 	    } catch (e) {
 | |
| 	        cachedClearTimeout = defaultClearTimeout;
 | |
| 	    }
 | |
| 	} ())
 | |
| 	function runTimeout(fun) {
 | |
| 	    if (cachedSetTimeout === setTimeout) {
 | |
| 	        //normal enviroments in sane situations
 | |
| 	        return setTimeout(fun, 0);
 | |
| 	    }
 | |
| 	    // if setTimeout wasn't available but was latter defined
 | |
| 	    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
 | |
| 	        cachedSetTimeout = setTimeout;
 | |
| 	        return setTimeout(fun, 0);
 | |
| 	    }
 | |
| 	    try {
 | |
| 	        // when when somebody has screwed with setTimeout but no I.E. maddness
 | |
| 	        return cachedSetTimeout(fun, 0);
 | |
| 	    } catch(e){
 | |
| 	        try {
 | |
| 	            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
 | |
| 	            return cachedSetTimeout.call(null, fun, 0);
 | |
| 	        } catch(e){
 | |
| 	            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
 | |
| 	            return cachedSetTimeout.call(this, fun, 0);
 | |
| 	        }
 | |
| 	    }
 | |
| 	
 | |
| 	
 | |
| 	}
 | |
| 	function runClearTimeout(marker) {
 | |
| 	    if (cachedClearTimeout === clearTimeout) {
 | |
| 	        //normal enviroments in sane situations
 | |
| 	        return clearTimeout(marker);
 | |
| 	    }
 | |
| 	    // if clearTimeout wasn't available but was latter defined
 | |
| 	    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
 | |
| 	        cachedClearTimeout = clearTimeout;
 | |
| 	        return clearTimeout(marker);
 | |
| 	    }
 | |
| 	    try {
 | |
| 	        // when when somebody has screwed with setTimeout but no I.E. maddness
 | |
| 	        return cachedClearTimeout(marker);
 | |
| 	    } catch (e){
 | |
| 	        try {
 | |
| 	            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally
 | |
| 	            return cachedClearTimeout.call(null, marker);
 | |
| 	        } catch (e){
 | |
| 	            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
 | |
| 	            // Some versions of I.E. have different rules for clearTimeout vs setTimeout
 | |
| 	            return cachedClearTimeout.call(this, marker);
 | |
| 	        }
 | |
| 	    }
 | |
| 	
 | |
| 	
 | |
| 	
 | |
| 	}
 | |
| 	var queue = [];
 | |
| 	var draining = false;
 | |
| 	var currentQueue;
 | |
| 	var queueIndex = -1;
 | |
| 	
 | |
| 	function cleanUpNextTick() {
 | |
| 	    if (!draining || !currentQueue) {
 | |
| 	        return;
 | |
| 	    }
 | |
| 	    draining = false;
 | |
| 	    if (currentQueue.length) {
 | |
| 	        queue = currentQueue.concat(queue);
 | |
| 	    } else {
 | |
| 	        queueIndex = -1;
 | |
| 	    }
 | |
| 	    if (queue.length) {
 | |
| 	        drainQueue();
 | |
| 	    }
 | |
| 	}
 | |
| 	
 | |
| 	function drainQueue() {
 | |
| 	    if (draining) {
 | |
| 	        return;
 | |
| 	    }
 | |
| 	    var timeout = runTimeout(cleanUpNextTick);
 | |
| 	    draining = true;
 | |
| 	
 | |
| 	    var len = queue.length;
 | |
| 	    while(len) {
 | |
| 	        currentQueue = queue;
 | |
| 	        queue = [];
 | |
| 	        while (++queueIndex < len) {
 | |
| 	            if (currentQueue) {
 | |
| 	                currentQueue[queueIndex].run();
 | |
| 	            }
 | |
| 	        }
 | |
| 	        queueIndex = -1;
 | |
| 	        len = queue.length;
 | |
| 	    }
 | |
| 	    currentQueue = null;
 | |
| 	    draining = false;
 | |
| 	    runClearTimeout(timeout);
 | |
| 	}
 | |
| 	
 | |
| 	process.nextTick = function (fun) {
 | |
| 	    var args = new Array(arguments.length - 1);
 | |
| 	    if (arguments.length > 1) {
 | |
| 	        for (var i = 1; i < arguments.length; i++) {
 | |
| 	            args[i - 1] = arguments[i];
 | |
| 	        }
 | |
| 	    }
 | |
| 	    queue.push(new Item(fun, args));
 | |
| 	    if (queue.length === 1 && !draining) {
 | |
| 	        runTimeout(drainQueue);
 | |
| 	    }
 | |
| 	};
 | |
| 	
 | |
| 	// v8 likes predictible objects
 | |
| 	function Item(fun, array) {
 | |
| 	    this.fun = fun;
 | |
| 	    this.array = array;
 | |
| 	}
 | |
| 	Item.prototype.run = function () {
 | |
| 	    this.fun.apply(null, this.array);
 | |
| 	};
 | |
| 	process.title = 'browser';
 | |
| 	process.browser = true;
 | |
| 	process.env = {};
 | |
| 	process.argv = [];
 | |
| 	process.version = ''; // empty string to avoid regexp issues
 | |
| 	process.versions = {};
 | |
| 	
 | |
| 	function noop() {}
 | |
| 	
 | |
| 	process.on = noop;
 | |
| 	process.addListener = noop;
 | |
| 	process.once = noop;
 | |
| 	process.off = noop;
 | |
| 	process.removeListener = noop;
 | |
| 	process.removeAllListeners = noop;
 | |
| 	process.emit = noop;
 | |
| 	process.prependListener = noop;
 | |
| 	process.prependOnceListener = noop;
 | |
| 	
 | |
| 	process.listeners = function (name) { return [] }
 | |
| 	
 | |
| 	process.binding = function (name) {
 | |
| 	    throw new Error('process.binding is not supported');
 | |
| 	};
 | |
| 	
 | |
| 	process.cwd = function () { return '/' };
 | |
| 	process.chdir = function (dir) {
 | |
| 	    throw new Error('process.chdir is not supported');
 | |
| 	};
 | |
| 	process.umask = function() { return 0; };
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| /* 6 */
 | |
| /***/ (function(module, exports, __nested_webpack_require_23461__) {
 | |
| 
 | |
| 	/* WEBPACK VAR INJECTION */(function(process) {/**
 | |
| 	 * Copyright (c) 2013-present, Facebook, Inc.
 | |
| 	 *
 | |
| 	 * This source code is licensed under the MIT license found in the
 | |
| 	 * LICENSE file in the root directory of this source tree.
 | |
| 	 */
 | |
| 	
 | |
| 	'use strict';
 | |
| 	
 | |
| 	var emptyFunction = __nested_webpack_require_23461__(7);
 | |
| 	var invariant = __nested_webpack_require_23461__(8);
 | |
| 	var warning = __nested_webpack_require_23461__(9);
 | |
| 	var assign = __nested_webpack_require_23461__(10);
 | |
| 	
 | |
| 	var ReactPropTypesSecret = __nested_webpack_require_23461__(11);
 | |
| 	var checkPropTypes = __nested_webpack_require_23461__(12);
 | |
| 	
 | |
| 	module.exports = function(isValidElement, throwOnDirectAccess) {
 | |
| 	  /* global Symbol */
 | |
| 	  var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
 | |
| 	  var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.
 | |
| 	
 | |
| 	  /**
 | |
| 	   * Returns the iterator method function contained on the iterable object.
 | |
| 	   *
 | |
| 	   * Be sure to invoke the function with the iterable as context:
 | |
| 	   *
 | |
| 	   *     var iteratorFn = getIteratorFn(myIterable);
 | |
| 	   *     if (iteratorFn) {
 | |
| 	   *       var iterator = iteratorFn.call(myIterable);
 | |
| 	   *       ...
 | |
| 	   *     }
 | |
| 	   *
 | |
| 	   * @param {?object} maybeIterable
 | |
| 	   * @return {?function}
 | |
| 	   */
 | |
| 	  function getIteratorFn(maybeIterable) {
 | |
| 	    var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);
 | |
| 	    if (typeof iteratorFn === 'function') {
 | |
| 	      return iteratorFn;
 | |
| 	    }
 | |
| 	  }
 | |
| 	
 | |
| 	  /**
 | |
| 	   * Collection of methods that allow declaration and validation of props that are
 | |
| 	   * supplied to React components. Example usage:
 | |
| 	   *
 | |
| 	   *   var Props = require('ReactPropTypes');
 | |
| 	   *   var MyArticle = React.createClass({
 | |
| 	   *     propTypes: {
 | |
| 	   *       // An optional string prop named "description".
 | |
| 	   *       description: Props.string,
 | |
| 	   *
 | |
| 	   *       // A required enum prop named "category".
 | |
| 	   *       category: Props.oneOf(['News','Photos']).isRequired,
 | |
| 	   *
 | |
| 	   *       // A prop named "dialog" that requires an instance of Dialog.
 | |
| 	   *       dialog: Props.instanceOf(Dialog).isRequired
 | |
| 	   *     },
 | |
| 	   *     render: function() { ... }
 | |
| 	   *   });
 | |
| 	   *
 | |
| 	   * A more formal specification of how these methods are used:
 | |
| 	   *
 | |
| 	   *   type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)
 | |
| 	   *   decl := ReactPropTypes.{type}(.isRequired)?
 | |
| 	   *
 | |
| 	   * Each and every declaration produces a function with the same signature. This
 | |
| 	   * allows the creation of custom validation functions. For example:
 | |
| 	   *
 | |
| 	   *  var MyLink = React.createClass({
 | |
| 	   *    propTypes: {
 | |
| 	   *      // An optional string or URI prop named "href".
 | |
| 	   *      href: function(props, propName, componentName) {
 | |
| 	   *        var propValue = props[propName];
 | |
| 	   *        if (propValue != null && typeof propValue !== 'string' &&
 | |
| 	   *            !(propValue instanceof URI)) {
 | |
| 	   *          return new Error(
 | |
| 	   *            'Expected a string or an URI for ' + propName + ' in ' +
 | |
| 	   *            componentName
 | |
| 	   *          );
 | |
| 	   *        }
 | |
| 	   *      }
 | |
| 	   *    },
 | |
| 	   *    render: function() {...}
 | |
| 	   *  });
 | |
| 	   *
 | |
| 	   * @internal
 | |
| 	   */
 | |
| 	
 | |
| 	  var ANONYMOUS = '<<anonymous>>';
 | |
| 	
 | |
| 	  // Important!
 | |
| 	  // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.
 | |
| 	  var ReactPropTypes = {
 | |
| 	    array: createPrimitiveTypeChecker('array'),
 | |
| 	    bool: createPrimitiveTypeChecker('boolean'),
 | |
| 	    func: createPrimitiveTypeChecker('function'),
 | |
| 	    number: createPrimitiveTypeChecker('number'),
 | |
| 	    object: createPrimitiveTypeChecker('object'),
 | |
| 	    string: createPrimitiveTypeChecker('string'),
 | |
| 	    symbol: createPrimitiveTypeChecker('symbol'),
 | |
| 	
 | |
| 	    any: createAnyTypeChecker(),
 | |
| 	    arrayOf: createArrayOfTypeChecker,
 | |
| 	    element: createElementTypeChecker(),
 | |
| 	    instanceOf: createInstanceTypeChecker,
 | |
| 	    node: createNodeChecker(),
 | |
| 	    objectOf: createObjectOfTypeChecker,
 | |
| 	    oneOf: createEnumTypeChecker,
 | |
| 	    oneOfType: createUnionTypeChecker,
 | |
| 	    shape: createShapeTypeChecker,
 | |
| 	    exact: createStrictShapeTypeChecker,
 | |
| 	  };
 | |
| 	
 | |
| 	  /**
 | |
| 	   * inlined Object.is polyfill to avoid requiring consumers ship their own
 | |
| 	   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
 | |
| 	   */
 | |
| 	  /*eslint-disable no-self-compare*/
 | |
| 	  function is(x, y) {
 | |
| 	    // SameValue algorithm
 | |
| 	    if (x === y) {
 | |
| 	      // Steps 1-5, 7-10
 | |
| 	      // Steps 6.b-6.e: +0 != -0
 | |
| 	      return x !== 0 || 1 / x === 1 / y;
 | |
| 	    } else {
 | |
| 	      // Step 6.a: NaN == NaN
 | |
| 	      return x !== x && y !== y;
 | |
| 	    }
 | |
| 	  }
 | |
| 	  /*eslint-enable no-self-compare*/
 | |
| 	
 | |
| 	  /**
 | |
| 	   * We use an Error-like object for backward compatibility as people may call
 | |
| 	   * PropTypes directly and inspect their output. However, we don't use real
 | |
| 	   * Errors anymore. We don't inspect their stack anyway, and creating them
 | |
| 	   * is prohibitively expensive if they are created too often, such as what
 | |
| 	   * happens in oneOfType() for any type before the one that matched.
 | |
| 	   */
 | |
| 	  function PropTypeError(message) {
 | |
| 	    this.message = message;
 | |
| 	    this.stack = '';
 | |
| 	  }
 | |
| 	  // Make `instanceof Error` still work for returned errors.
 | |
| 	  PropTypeError.prototype = Error.prototype;
 | |
| 	
 | |
| 	  function createChainableTypeChecker(validate) {
 | |
| 	    if (process.env.NODE_ENV !== 'production') {
 | |
| 	      var manualPropTypeCallCache = {};
 | |
| 	      var manualPropTypeWarningCount = 0;
 | |
| 	    }
 | |
| 	    function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {
 | |
| 	      componentName = componentName || ANONYMOUS;
 | |
| 	      propFullName = propFullName || propName;
 | |
| 	
 | |
| 	      if (secret !== ReactPropTypesSecret) {
 | |
| 	        if (throwOnDirectAccess) {
 | |
| 	          // New behavior only for users of `prop-types` package
 | |
| 	          invariant(
 | |
| 	            false,
 | |
| 	            'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
 | |
| 	            'Use `PropTypes.checkPropTypes()` to call them. ' +
 | |
| 	            'Read more at http://fb.me/use-check-prop-types'
 | |
| 	          );
 | |
| 	        } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {
 | |
| 	          // Old behavior for people using React.PropTypes
 | |
| 	          var cacheKey = componentName + ':' + propName;
 | |
| 	          if (
 | |
| 	            !manualPropTypeCallCache[cacheKey] &&
 | |
| 	            // Avoid spamming the console because they are often not actionable except for lib authors
 | |
| 	            manualPropTypeWarningCount < 3
 | |
| 	          ) {
 | |
| 	            warning(
 | |
| 	              false,
 | |
| 	              'You are manually calling a React.PropTypes validation ' +
 | |
| 	              'function for the `%s` prop on `%s`. This is deprecated ' +
 | |
| 	              'and will throw in the standalone `prop-types` package. ' +
 | |
| 	              'You may be seeing this warning due to a third-party PropTypes ' +
 | |
| 	              'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',
 | |
| 	              propFullName,
 | |
| 	              componentName
 | |
| 	            );
 | |
| 	            manualPropTypeCallCache[cacheKey] = true;
 | |
| 	            manualPropTypeWarningCount++;
 | |
| 	          }
 | |
| 	        }
 | |
| 	      }
 | |
| 	      if (props[propName] == null) {
 | |
| 	        if (isRequired) {
 | |
| 	          if (props[propName] === null) {
 | |
| 	            return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));
 | |
| 	          }
 | |
| 	          return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));
 | |
| 	        }
 | |
| 	        return null;
 | |
| 	      } else {
 | |
| 	        return validate(props, propName, componentName, location, propFullName);
 | |
| 	      }
 | |
| 	    }
 | |
| 	
 | |
| 	    var chainedCheckType = checkType.bind(null, false);
 | |
| 	    chainedCheckType.isRequired = checkType.bind(null, true);
 | |
| 	
 | |
| 	    return chainedCheckType;
 | |
| 	  }
 | |
| 	
 | |
| 	  function createPrimitiveTypeChecker(expectedType) {
 | |
| 	    function validate(props, propName, componentName, location, propFullName, secret) {
 | |
| 	      var propValue = props[propName];
 | |
| 	      var propType = getPropType(propValue);
 | |
| 	      if (propType !== expectedType) {
 | |
| 	        // `propValue` being instance of, say, date/regexp, pass the 'object'
 | |
| 	        // check, but we can offer a more precise error message here rather than
 | |
| 	        // 'of type `object`'.
 | |
| 	        var preciseType = getPreciseType(propValue);
 | |
| 	
 | |
| 	        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));
 | |
| 	      }
 | |
| 	      return null;
 | |
| 	    }
 | |
| 	    return createChainableTypeChecker(validate);
 | |
| 	  }
 | |
| 	
 | |
| 	  function createAnyTypeChecker() {
 | |
| 	    return createChainableTypeChecker(emptyFunction.thatReturnsNull);
 | |
| 	  }
 | |
| 	
 | |
| 	  function createArrayOfTypeChecker(typeChecker) {
 | |
| 	    function validate(props, propName, componentName, location, propFullName) {
 | |
| 	      if (typeof typeChecker !== 'function') {
 | |
| 	        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');
 | |
| 	      }
 | |
| 	      var propValue = props[propName];
 | |
| 	      if (!Array.isArray(propValue)) {
 | |
| 	        var propType = getPropType(propValue);
 | |
| 	        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));
 | |
| 	      }
 | |
| 	      for (var i = 0; i < propValue.length; i++) {
 | |
| 	        var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);
 | |
| 	        if (error instanceof Error) {
 | |
| 	          return error;
 | |
| 	        }
 | |
| 	      }
 | |
| 	      return null;
 | |
| 	    }
 | |
| 	    return createChainableTypeChecker(validate);
 | |
| 	  }
 | |
| 	
 | |
| 	  function createElementTypeChecker() {
 | |
| 	    function validate(props, propName, componentName, location, propFullName) {
 | |
| 	      var propValue = props[propName];
 | |
| 	      if (!isValidElement(propValue)) {
 | |
| 	        var propType = getPropType(propValue);
 | |
| 	        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));
 | |
| 	      }
 | |
| 	      return null;
 | |
| 	    }
 | |
| 	    return createChainableTypeChecker(validate);
 | |
| 	  }
 | |
| 	
 | |
| 	  function createInstanceTypeChecker(expectedClass) {
 | |
| 	    function validate(props, propName, componentName, location, propFullName) {
 | |
| 	      if (!(props[propName] instanceof expectedClass)) {
 | |
| 	        var expectedClassName = expectedClass.name || ANONYMOUS;
 | |
| 	        var actualClassName = getClassName(props[propName]);
 | |
| 	        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));
 | |
| 	      }
 | |
| 	      return null;
 | |
| 	    }
 | |
| 	    return createChainableTypeChecker(validate);
 | |
| 	  }
 | |
| 	
 | |
| 	  function createEnumTypeChecker(expectedValues) {
 | |
| 	    if (!Array.isArray(expectedValues)) {
 | |
| 	      process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;
 | |
| 	      return emptyFunction.thatReturnsNull;
 | |
| 	    }
 | |
| 	
 | |
| 	    function validate(props, propName, componentName, location, propFullName) {
 | |
| 	      var propValue = props[propName];
 | |
| 	      for (var i = 0; i < expectedValues.length; i++) {
 | |
| 	        if (is(propValue, expectedValues[i])) {
 | |
| 	          return null;
 | |
| 	        }
 | |
| 	      }
 | |
| 	
 | |
| 	      var valuesString = JSON.stringify(expectedValues);
 | |
| 	      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));
 | |
| 	    }
 | |
| 	    return createChainableTypeChecker(validate);
 | |
| 	  }
 | |
| 	
 | |
| 	  function createObjectOfTypeChecker(typeChecker) {
 | |
| 	    function validate(props, propName, componentName, location, propFullName) {
 | |
| 	      if (typeof typeChecker !== 'function') {
 | |
| 	        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');
 | |
| 	      }
 | |
| 	      var propValue = props[propName];
 | |
| 	      var propType = getPropType(propValue);
 | |
| 	      if (propType !== 'object') {
 | |
| 	        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));
 | |
| 	      }
 | |
| 	      for (var key in propValue) {
 | |
| 	        if (propValue.hasOwnProperty(key)) {
 | |
| 	          var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
 | |
| 	          if (error instanceof Error) {
 | |
| 	            return error;
 | |
| 	          }
 | |
| 	        }
 | |
| 	      }
 | |
| 	      return null;
 | |
| 	    }
 | |
| 	    return createChainableTypeChecker(validate);
 | |
| 	  }
 | |
| 	
 | |
| 	  function createUnionTypeChecker(arrayOfTypeCheckers) {
 | |
| 	    if (!Array.isArray(arrayOfTypeCheckers)) {
 | |
| 	      process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;
 | |
| 	      return emptyFunction.thatReturnsNull;
 | |
| 	    }
 | |
| 	
 | |
| 	    for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
 | |
| 	      var checker = arrayOfTypeCheckers[i];
 | |
| 	      if (typeof checker !== 'function') {
 | |
| 	        warning(
 | |
| 	          false,
 | |
| 	          'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +
 | |
| 	          'received %s at index %s.',
 | |
| 	          getPostfixForTypeWarning(checker),
 | |
| 	          i
 | |
| 	        );
 | |
| 	        return emptyFunction.thatReturnsNull;
 | |
| 	      }
 | |
| 	    }
 | |
| 	
 | |
| 	    function validate(props, propName, componentName, location, propFullName) {
 | |
| 	      for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
 | |
| 	        var checker = arrayOfTypeCheckers[i];
 | |
| 	        if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {
 | |
| 	          return null;
 | |
| 	        }
 | |
| 	      }
 | |
| 	
 | |
| 	      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));
 | |
| 	    }
 | |
| 	    return createChainableTypeChecker(validate);
 | |
| 	  }
 | |
| 	
 | |
| 	  function createNodeChecker() {
 | |
| 	    function validate(props, propName, componentName, location, propFullName) {
 | |
| 	      if (!isNode(props[propName])) {
 | |
| 	        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));
 | |
| 	      }
 | |
| 	      return null;
 | |
| 	    }
 | |
| 	    return createChainableTypeChecker(validate);
 | |
| 	  }
 | |
| 	
 | |
| 	  function createShapeTypeChecker(shapeTypes) {
 | |
| 	    function validate(props, propName, componentName, location, propFullName) {
 | |
| 	      var propValue = props[propName];
 | |
| 	      var propType = getPropType(propValue);
 | |
| 	      if (propType !== 'object') {
 | |
| 	        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
 | |
| 	      }
 | |
| 	      for (var key in shapeTypes) {
 | |
| 	        var checker = shapeTypes[key];
 | |
| 	        if (!checker) {
 | |
| 	          continue;
 | |
| 	        }
 | |
| 	        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
 | |
| 	        if (error) {
 | |
| 	          return error;
 | |
| 	        }
 | |
| 	      }
 | |
| 	      return null;
 | |
| 	    }
 | |
| 	    return createChainableTypeChecker(validate);
 | |
| 	  }
 | |
| 	
 | |
| 	  function createStrictShapeTypeChecker(shapeTypes) {
 | |
| 	    function validate(props, propName, componentName, location, propFullName) {
 | |
| 	      var propValue = props[propName];
 | |
| 	      var propType = getPropType(propValue);
 | |
| 	      if (propType !== 'object') {
 | |
| 	        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
 | |
| 	      }
 | |
| 	      // We need to check all keys in case some are required but missing from
 | |
| 	      // props.
 | |
| 	      var allKeys = assign({}, props[propName], shapeTypes);
 | |
| 	      for (var key in allKeys) {
 | |
| 	        var checker = shapeTypes[key];
 | |
| 	        if (!checker) {
 | |
| 	          return new PropTypeError(
 | |
| 	            'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +
 | |
| 	            '\nBad object: ' + JSON.stringify(props[propName], null, '  ') +
 | |
| 	            '\nValid keys: ' +  JSON.stringify(Object.keys(shapeTypes), null, '  ')
 | |
| 	          );
 | |
| 	        }
 | |
| 	        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
 | |
| 	        if (error) {
 | |
| 	          return error;
 | |
| 	        }
 | |
| 	      }
 | |
| 	      return null;
 | |
| 	    }
 | |
| 	
 | |
| 	    return createChainableTypeChecker(validate);
 | |
| 	  }
 | |
| 	
 | |
| 	  function isNode(propValue) {
 | |
| 	    switch (typeof propValue) {
 | |
| 	      case 'number':
 | |
| 	      case 'string':
 | |
| 	      case 'undefined':
 | |
| 	        return true;
 | |
| 	      case 'boolean':
 | |
| 	        return !propValue;
 | |
| 	      case 'object':
 | |
| 	        if (Array.isArray(propValue)) {
 | |
| 	          return propValue.every(isNode);
 | |
| 	        }
 | |
| 	        if (propValue === null || isValidElement(propValue)) {
 | |
| 	          return true;
 | |
| 	        }
 | |
| 	
 | |
| 	        var iteratorFn = getIteratorFn(propValue);
 | |
| 	        if (iteratorFn) {
 | |
| 	          var iterator = iteratorFn.call(propValue);
 | |
| 	          var step;
 | |
| 	          if (iteratorFn !== propValue.entries) {
 | |
| 	            while (!(step = iterator.next()).done) {
 | |
| 	              if (!isNode(step.value)) {
 | |
| 	                return false;
 | |
| 	              }
 | |
| 	            }
 | |
| 	          } else {
 | |
| 	            // Iterator will provide entry [k,v] tuples rather than values.
 | |
| 	            while (!(step = iterator.next()).done) {
 | |
| 	              var entry = step.value;
 | |
| 	              if (entry) {
 | |
| 	                if (!isNode(entry[1])) {
 | |
| 	                  return false;
 | |
| 	                }
 | |
| 	              }
 | |
| 	            }
 | |
| 	          }
 | |
| 	        } else {
 | |
| 	          return false;
 | |
| 	        }
 | |
| 	
 | |
| 	        return true;
 | |
| 	      default:
 | |
| 	        return false;
 | |
| 	    }
 | |
| 	  }
 | |
| 	
 | |
| 	  function isSymbol(propType, propValue) {
 | |
| 	    // Native Symbol.
 | |
| 	    if (propType === 'symbol') {
 | |
| 	      return true;
 | |
| 	    }
 | |
| 	
 | |
| 	    // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'
 | |
| 	    if (propValue['@@toStringTag'] === 'Symbol') {
 | |
| 	      return true;
 | |
| 	    }
 | |
| 	
 | |
| 	    // Fallback for non-spec compliant Symbols which are polyfilled.
 | |
| 	    if (typeof Symbol === 'function' && propValue instanceof Symbol) {
 | |
| 	      return true;
 | |
| 	    }
 | |
| 	
 | |
| 	    return false;
 | |
| 	  }
 | |
| 	
 | |
| 	  // Equivalent of `typeof` but with special handling for array and regexp.
 | |
| 	  function getPropType(propValue) {
 | |
| 	    var propType = typeof propValue;
 | |
| 	    if (Array.isArray(propValue)) {
 | |
| 	      return 'array';
 | |
| 	    }
 | |
| 	    if (propValue instanceof RegExp) {
 | |
| 	      // Old webkits (at least until Android 4.0) return 'function' rather than
 | |
| 	      // 'object' for typeof a RegExp. We'll normalize this here so that /bla/
 | |
| 	      // passes PropTypes.object.
 | |
| 	      return 'object';
 | |
| 	    }
 | |
| 	    if (isSymbol(propType, propValue)) {
 | |
| 	      return 'symbol';
 | |
| 	    }
 | |
| 	    return propType;
 | |
| 	  }
 | |
| 	
 | |
| 	  // This handles more types than `getPropType`. Only used for error messages.
 | |
| 	  // See `createPrimitiveTypeChecker`.
 | |
| 	  function getPreciseType(propValue) {
 | |
| 	    if (typeof propValue === 'undefined' || propValue === null) {
 | |
| 	      return '' + propValue;
 | |
| 	    }
 | |
| 	    var propType = getPropType(propValue);
 | |
| 	    if (propType === 'object') {
 | |
| 	      if (propValue instanceof Date) {
 | |
| 	        return 'date';
 | |
| 	      } else if (propValue instanceof RegExp) {
 | |
| 	        return 'regexp';
 | |
| 	      }
 | |
| 	    }
 | |
| 	    return propType;
 | |
| 	  }
 | |
| 	
 | |
| 	  // Returns a string that is postfixed to a warning about an invalid type.
 | |
| 	  // For example, "undefined" or "of type array"
 | |
| 	  function getPostfixForTypeWarning(value) {
 | |
| 	    var type = getPreciseType(value);
 | |
| 	    switch (type) {
 | |
| 	      case 'array':
 | |
| 	      case 'object':
 | |
| 	        return 'an ' + type;
 | |
| 	      case 'boolean':
 | |
| 	      case 'date':
 | |
| 	      case 'regexp':
 | |
| 	        return 'a ' + type;
 | |
| 	      default:
 | |
| 	        return type;
 | |
| 	    }
 | |
| 	  }
 | |
| 	
 | |
| 	  // Returns class name of the object, if any.
 | |
| 	  function getClassName(propValue) {
 | |
| 	    if (!propValue.constructor || !propValue.constructor.name) {
 | |
| 	      return ANONYMOUS;
 | |
| 	    }
 | |
| 	    return propValue.constructor.name;
 | |
| 	  }
 | |
| 	
 | |
| 	  ReactPropTypes.checkPropTypes = checkPropTypes;
 | |
| 	  ReactPropTypes.PropTypes = ReactPropTypes;
 | |
| 	
 | |
| 	  return ReactPropTypes;
 | |
| 	};
 | |
| 	
 | |
| 	/* WEBPACK VAR INJECTION */}.call(exports, __nested_webpack_require_23461__(5)))
 | |
| 
 | |
| /***/ }),
 | |
| /* 7 */
 | |
| /***/ (function(module, exports) {
 | |
| 
 | |
| 	"use strict";
 | |
| 	
 | |
| 	/**
 | |
| 	 * Copyright (c) 2013-present, Facebook, Inc.
 | |
| 	 *
 | |
| 	 * This source code is licensed under the MIT license found in the
 | |
| 	 * LICENSE file in the root directory of this source tree.
 | |
| 	 *
 | |
| 	 * 
 | |
| 	 */
 | |
| 	
 | |
| 	function makeEmptyFunction(arg) {
 | |
| 	  return function () {
 | |
| 	    return arg;
 | |
| 	  };
 | |
| 	}
 | |
| 	
 | |
| 	/**
 | |
| 	 * This function accepts and discards inputs; it has no side effects. This is
 | |
| 	 * primarily useful idiomatically for overridable function endpoints which
 | |
| 	 * always need to be callable, since JS lacks a null-call idiom ala Cocoa.
 | |
| 	 */
 | |
| 	var emptyFunction = function emptyFunction() {};
 | |
| 	
 | |
| 	emptyFunction.thatReturns = makeEmptyFunction;
 | |
| 	emptyFunction.thatReturnsFalse = makeEmptyFunction(false);
 | |
| 	emptyFunction.thatReturnsTrue = makeEmptyFunction(true);
 | |
| 	emptyFunction.thatReturnsNull = makeEmptyFunction(null);
 | |
| 	emptyFunction.thatReturnsThis = function () {
 | |
| 	  return this;
 | |
| 	};
 | |
| 	emptyFunction.thatReturnsArgument = function (arg) {
 | |
| 	  return arg;
 | |
| 	};
 | |
| 	
 | |
| 	module.exports = emptyFunction;
 | |
| 
 | |
| /***/ }),
 | |
| /* 8 */
 | |
| /***/ (function(module, exports, __nested_webpack_require_45053__) {
 | |
| 
 | |
| 	/* WEBPACK VAR INJECTION */(function(process) {/**
 | |
| 	 * Copyright (c) 2013-present, Facebook, Inc.
 | |
| 	 *
 | |
| 	 * This source code is licensed under the MIT license found in the
 | |
| 	 * LICENSE file in the root directory of this source tree.
 | |
| 	 *
 | |
| 	 */
 | |
| 	
 | |
| 	'use strict';
 | |
| 	
 | |
| 	/**
 | |
| 	 * Use invariant() to assert state which your program assumes to be true.
 | |
| 	 *
 | |
| 	 * Provide sprintf-style format (only %s is supported) and arguments
 | |
| 	 * to provide information about what broke and what you were
 | |
| 	 * expecting.
 | |
| 	 *
 | |
| 	 * The invariant message will be stripped in production, but the invariant
 | |
| 	 * will remain to ensure logic does not differ in production.
 | |
| 	 */
 | |
| 	
 | |
| 	var validateFormat = function validateFormat(format) {};
 | |
| 	
 | |
| 	if (process.env.NODE_ENV !== 'production') {
 | |
| 	  validateFormat = function validateFormat(format) {
 | |
| 	    if (format === undefined) {
 | |
| 	      throw new Error('invariant requires an error message argument');
 | |
| 	    }
 | |
| 	  };
 | |
| 	}
 | |
| 	
 | |
| 	function invariant(condition, format, a, b, c, d, e, f) {
 | |
| 	  validateFormat(format);
 | |
| 	
 | |
| 	  if (!condition) {
 | |
| 	    var error;
 | |
| 	    if (format === undefined) {
 | |
| 	      error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');
 | |
| 	    } else {
 | |
| 	      var args = [a, b, c, d, e, f];
 | |
| 	      var argIndex = 0;
 | |
| 	      error = new Error(format.replace(/%s/g, function () {
 | |
| 	        return args[argIndex++];
 | |
| 	      }));
 | |
| 	      error.name = 'Invariant Violation';
 | |
| 	    }
 | |
| 	
 | |
| 	    error.framesToPop = 1; // we don't care about invariant's own frame
 | |
| 	    throw error;
 | |
| 	  }
 | |
| 	}
 | |
| 	
 | |
| 	module.exports = invariant;
 | |
| 	/* WEBPACK VAR INJECTION */}.call(exports, __nested_webpack_require_45053__(5)))
 | |
| 
 | |
| /***/ }),
 | |
| /* 9 */
 | |
| /***/ (function(module, exports, __nested_webpack_require_46805__) {
 | |
| 
 | |
| 	/* WEBPACK VAR INJECTION */(function(process) {/**
 | |
| 	 * Copyright (c) 2014-present, Facebook, Inc.
 | |
| 	 *
 | |
| 	 * This source code is licensed under the MIT license found in the
 | |
| 	 * LICENSE file in the root directory of this source tree.
 | |
| 	 *
 | |
| 	 */
 | |
| 	
 | |
| 	'use strict';
 | |
| 	
 | |
| 	var emptyFunction = __nested_webpack_require_46805__(7);
 | |
| 	
 | |
| 	/**
 | |
| 	 * Similar to invariant but only logs a warning if the condition is not met.
 | |
| 	 * This can be used to log issues in development environments in critical
 | |
| 	 * paths. Removing the logging code for production environments will keep the
 | |
| 	 * same logic and follow the same code paths.
 | |
| 	 */
 | |
| 	
 | |
| 	var warning = emptyFunction;
 | |
| 	
 | |
| 	if (process.env.NODE_ENV !== 'production') {
 | |
| 	  var printWarning = function printWarning(format) {
 | |
| 	    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
 | |
| 	      args[_key - 1] = arguments[_key];
 | |
| 	    }
 | |
| 	
 | |
| 	    var argIndex = 0;
 | |
| 	    var message = 'Warning: ' + format.replace(/%s/g, function () {
 | |
| 	      return args[argIndex++];
 | |
| 	    });
 | |
| 	    if (typeof console !== 'undefined') {
 | |
| 	      console.error(message);
 | |
| 	    }
 | |
| 	    try {
 | |
| 	      // --- Welcome to debugging React ---
 | |
| 	      // This error was thrown as a convenience so that you can use this stack
 | |
| 	      // to find the callsite that caused this warning to fire.
 | |
| 	      throw new Error(message);
 | |
| 	    } catch (x) {}
 | |
| 	  };
 | |
| 	
 | |
| 	  warning = function warning(condition, format) {
 | |
| 	    if (format === undefined) {
 | |
| 	      throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');
 | |
| 	    }
 | |
| 	
 | |
| 	    if (format.indexOf('Failed Composite propType: ') === 0) {
 | |
| 	      return; // Ignore CompositeComponent proptype check.
 | |
| 	    }
 | |
| 	
 | |
| 	    if (!condition) {
 | |
| 	      for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
 | |
| 	        args[_key2 - 2] = arguments[_key2];
 | |
| 	      }
 | |
| 	
 | |
| 	      printWarning.apply(undefined, [format].concat(args));
 | |
| 	    }
 | |
| 	  };
 | |
| 	}
 | |
| 	
 | |
| 	module.exports = warning;
 | |
| 	/* WEBPACK VAR INJECTION */}.call(exports, __nested_webpack_require_46805__(5)))
 | |
| 
 | |
| /***/ }),
 | |
| /* 10 */
 | |
| /***/ (function(module, exports) {
 | |
| 
 | |
| 	/*
 | |
| 	object-assign
 | |
| 	(c) Sindre Sorhus
 | |
| 	@license MIT
 | |
| 	*/
 | |
| 	
 | |
| 	'use strict';
 | |
| 	/* eslint-disable no-unused-vars */
 | |
| 	var getOwnPropertySymbols = Object.getOwnPropertySymbols;
 | |
| 	var hasOwnProperty = Object.prototype.hasOwnProperty;
 | |
| 	var propIsEnumerable = Object.prototype.propertyIsEnumerable;
 | |
| 	
 | |
| 	function toObject(val) {
 | |
| 		if (val === null || val === undefined) {
 | |
| 			throw new TypeError('Object.assign cannot be called with null or undefined');
 | |
| 		}
 | |
| 	
 | |
| 		return Object(val);
 | |
| 	}
 | |
| 	
 | |
| 	function shouldUseNative() {
 | |
| 		try {
 | |
| 			if (!Object.assign) {
 | |
| 				return false;
 | |
| 			}
 | |
| 	
 | |
| 			// Detect buggy property enumeration order in older V8 versions.
 | |
| 	
 | |
| 			// https://bugs.chromium.org/p/v8/issues/detail?id=4118
 | |
| 			var test1 = new String('abc');  // eslint-disable-line no-new-wrappers
 | |
| 			test1[5] = 'de';
 | |
| 			if (Object.getOwnPropertyNames(test1)[0] === '5') {
 | |
| 				return false;
 | |
| 			}
 | |
| 	
 | |
| 			// https://bugs.chromium.org/p/v8/issues/detail?id=3056
 | |
| 			var test2 = {};
 | |
| 			for (var i = 0; i < 10; i++) {
 | |
| 				test2['_' + String.fromCharCode(i)] = i;
 | |
| 			}
 | |
| 			var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
 | |
| 				return test2[n];
 | |
| 			});
 | |
| 			if (order2.join('') !== '0123456789') {
 | |
| 				return false;
 | |
| 			}
 | |
| 	
 | |
| 			// https://bugs.chromium.org/p/v8/issues/detail?id=3056
 | |
| 			var test3 = {};
 | |
| 			'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
 | |
| 				test3[letter] = letter;
 | |
| 			});
 | |
| 			if (Object.keys(Object.assign({}, test3)).join('') !==
 | |
| 					'abcdefghijklmnopqrst') {
 | |
| 				return false;
 | |
| 			}
 | |
| 	
 | |
| 			return true;
 | |
| 		} catch (err) {
 | |
| 			// We don't expect any of the above to throw, but better to be safe.
 | |
| 			return false;
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	module.exports = shouldUseNative() ? Object.assign : function (target, source) {
 | |
| 		var from;
 | |
| 		var to = toObject(target);
 | |
| 		var symbols;
 | |
| 	
 | |
| 		for (var s = 1; s < arguments.length; s++) {
 | |
| 			from = Object(arguments[s]);
 | |
| 	
 | |
| 			for (var key in from) {
 | |
| 				if (hasOwnProperty.call(from, key)) {
 | |
| 					to[key] = from[key];
 | |
| 				}
 | |
| 			}
 | |
| 	
 | |
| 			if (getOwnPropertySymbols) {
 | |
| 				symbols = getOwnPropertySymbols(from);
 | |
| 				for (var i = 0; i < symbols.length; i++) {
 | |
| 					if (propIsEnumerable.call(from, symbols[i])) {
 | |
| 						to[symbols[i]] = from[symbols[i]];
 | |
| 					}
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 	
 | |
| 		return to;
 | |
| 	};
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| /* 11 */
 | |
| /***/ (function(module, exports) {
 | |
| 
 | |
| 	/**
 | |
| 	 * Copyright (c) 2013-present, Facebook, Inc.
 | |
| 	 *
 | |
| 	 * This source code is licensed under the MIT license found in the
 | |
| 	 * LICENSE file in the root directory of this source tree.
 | |
| 	 */
 | |
| 	
 | |
| 	'use strict';
 | |
| 	
 | |
| 	var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
 | |
| 	
 | |
| 	module.exports = ReactPropTypesSecret;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| /* 12 */
 | |
| /***/ (function(module, exports, __nested_webpack_require_51592__) {
 | |
| 
 | |
| 	/* WEBPACK VAR INJECTION */(function(process) {/**
 | |
| 	 * Copyright (c) 2013-present, Facebook, Inc.
 | |
| 	 *
 | |
| 	 * This source code is licensed under the MIT license found in the
 | |
| 	 * LICENSE file in the root directory of this source tree.
 | |
| 	 */
 | |
| 	
 | |
| 	'use strict';
 | |
| 	
 | |
| 	if (process.env.NODE_ENV !== 'production') {
 | |
| 	  var invariant = __nested_webpack_require_51592__(8);
 | |
| 	  var warning = __nested_webpack_require_51592__(9);
 | |
| 	  var ReactPropTypesSecret = __nested_webpack_require_51592__(11);
 | |
| 	  var loggedTypeFailures = {};
 | |
| 	}
 | |
| 	
 | |
| 	/**
 | |
| 	 * Assert that the values match with the type specs.
 | |
| 	 * Error messages are memorized and will only be shown once.
 | |
| 	 *
 | |
| 	 * @param {object} typeSpecs Map of name to a ReactPropType
 | |
| 	 * @param {object} values Runtime values that need to be type-checked
 | |
| 	 * @param {string} location e.g. "prop", "context", "child context"
 | |
| 	 * @param {string} componentName Name of the component for error messages.
 | |
| 	 * @param {?Function} getStack Returns the component stack.
 | |
| 	 * @private
 | |
| 	 */
 | |
| 	function checkPropTypes(typeSpecs, values, location, componentName, getStack) {
 | |
| 	  if (process.env.NODE_ENV !== 'production') {
 | |
| 	    for (var typeSpecName in typeSpecs) {
 | |
| 	      if (typeSpecs.hasOwnProperty(typeSpecName)) {
 | |
| 	        var error;
 | |
| 	        // Prop type validation may throw. In case they do, we don't want to
 | |
| 	        // fail the render phase where it didn't fail before. So we log it.
 | |
| 	        // After these have been cleaned up, we'll let them throw.
 | |
| 	        try {
 | |
| 	          // This is intentionally an invariant that gets caught. It's the same
 | |
| 	          // behavior as without this statement except with a better message.
 | |
| 	          invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'the `prop-types` package, but received `%s`.', componentName || 'React class', location, typeSpecName, typeof typeSpecs[typeSpecName]);
 | |
| 	          error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);
 | |
| 	        } catch (ex) {
 | |
| 	          error = ex;
 | |
| 	        }
 | |
| 	        warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);
 | |
| 	        if (error instanceof Error && !(error.message in loggedTypeFailures)) {
 | |
| 	          // Only monitor this failure once because there tends to be a lot of the
 | |
| 	          // same error.
 | |
| 	          loggedTypeFailures[error.message] = true;
 | |
| 	
 | |
| 	          var stack = getStack ? getStack() : '';
 | |
| 	
 | |
| 	          warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');
 | |
| 	        }
 | |
| 	      }
 | |
| 	    }
 | |
| 	  }
 | |
| 	}
 | |
| 	
 | |
| 	module.exports = checkPropTypes;
 | |
| 	
 | |
| 	/* WEBPACK VAR INJECTION */}.call(exports, __nested_webpack_require_51592__(5)))
 | |
| 
 | |
| /***/ }),
 | |
| /* 13 */
 | |
| /***/ (function(module, exports, __nested_webpack_require_54693__) {
 | |
| 
 | |
| 	/**
 | |
| 	 * Copyright (c) 2013-present, Facebook, Inc.
 | |
| 	 *
 | |
| 	 * This source code is licensed under the MIT license found in the
 | |
| 	 * LICENSE file in the root directory of this source tree.
 | |
| 	 */
 | |
| 	
 | |
| 	'use strict';
 | |
| 	
 | |
| 	var emptyFunction = __nested_webpack_require_54693__(7);
 | |
| 	var invariant = __nested_webpack_require_54693__(8);
 | |
| 	var ReactPropTypesSecret = __nested_webpack_require_54693__(11);
 | |
| 	
 | |
| 	module.exports = function() {
 | |
| 	  function shim(props, propName, componentName, location, propFullName, secret) {
 | |
| 	    if (secret === ReactPropTypesSecret) {
 | |
| 	      // It is still safe when called from React.
 | |
| 	      return;
 | |
| 	    }
 | |
| 	    invariant(
 | |
| 	      false,
 | |
| 	      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
 | |
| 	      'Use PropTypes.checkPropTypes() to call them. ' +
 | |
| 	      'Read more at http://fb.me/use-check-prop-types'
 | |
| 	    );
 | |
| 	  };
 | |
| 	  shim.isRequired = shim;
 | |
| 	  function getShim() {
 | |
| 	    return shim;
 | |
| 	  };
 | |
| 	  // Important!
 | |
| 	  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.
 | |
| 	  var ReactPropTypes = {
 | |
| 	    array: shim,
 | |
| 	    bool: shim,
 | |
| 	    func: shim,
 | |
| 	    number: shim,
 | |
| 	    object: shim,
 | |
| 	    string: shim,
 | |
| 	    symbol: shim,
 | |
| 	
 | |
| 	    any: shim,
 | |
| 	    arrayOf: getShim,
 | |
| 	    element: shim,
 | |
| 	    instanceOf: getShim,
 | |
| 	    node: shim,
 | |
| 	    objectOf: getShim,
 | |
| 	    oneOf: getShim,
 | |
| 	    oneOfType: getShim,
 | |
| 	    shape: getShim,
 | |
| 	    exact: getShim
 | |
| 	  };
 | |
| 	
 | |
| 	  ReactPropTypes.checkPropTypes = emptyFunction;
 | |
| 	  ReactPropTypes.PropTypes = ReactPropTypes;
 | |
| 	
 | |
| 	  return ReactPropTypes;
 | |
| 	};
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| /* 14 */
 | |
| /***/ (function(module, exports) {
 | |
| 
 | |
| 	module.exports = __webpack_require__(78156);
 | |
| 
 | |
| /***/ }),
 | |
| /* 15 */
 | |
| /***/ (function(module, exports) {
 | |
| 
 | |
| 	'use strict';
 | |
| 	
 | |
| 	var simpleIsEqual = function simpleIsEqual(a, b) {
 | |
| 	  return a === b;
 | |
| 	};
 | |
| 	
 | |
| 	function index (resultFn) {
 | |
| 	  var isEqual = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : simpleIsEqual;
 | |
| 	
 | |
| 	  var lastThis = void 0;
 | |
| 	  var lastArgs = [];
 | |
| 	  var lastResult = void 0;
 | |
| 	  var calledOnce = false;
 | |
| 	
 | |
| 	  var isNewArgEqualToLast = function isNewArgEqualToLast(newArg, index) {
 | |
| 	    return isEqual(newArg, lastArgs[index]);
 | |
| 	  };
 | |
| 	
 | |
| 	  var result = function result() {
 | |
| 	    for (var _len = arguments.length, newArgs = Array(_len), _key = 0; _key < _len; _key++) {
 | |
| 	      newArgs[_key] = arguments[_key];
 | |
| 	    }
 | |
| 	
 | |
| 	    if (calledOnce && lastThis === this && newArgs.length === lastArgs.length && newArgs.every(isNewArgEqualToLast)) {
 | |
| 	      return lastResult;
 | |
| 	    }
 | |
| 	
 | |
| 	    calledOnce = true;
 | |
| 	    lastThis = this;
 | |
| 	    lastArgs = newArgs;
 | |
| 	    lastResult = resultFn.apply(this, newArgs);
 | |
| 	    return lastResult;
 | |
| 	  };
 | |
| 	
 | |
| 	  return result;
 | |
| 	}
 | |
| 	
 | |
| 	module.exports = index;
 | |
| 
 | |
| 
 | |
| /***/ })
 | |
| /******/ ]);
 | |
| //# sourceMappingURL=main.js.map
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 94478:
 | |
| /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| // EXPORTS
 | |
| __webpack_require__.d(__webpack_exports__, {
 | |
|   L: () => (/* binding */ JSONTree)
 | |
| });
 | |
| 
 | |
| // EXTERNAL MODULE: consume shared module (default) react@~18.2.0 (singleton) (fallback: ../node_modules/react/index.js)
 | |
| var index_js_ = __webpack_require__(78156);
 | |
| var index_js_default = /*#__PURE__*/__webpack_require__.n(index_js_);
 | |
| ;// CONCATENATED MODULE: ../node_modules/@babel/runtime/helpers/esm/extends.js
 | |
| function _extends() {
 | |
|   return _extends = Object.assign ? Object.assign.bind() : function (n) {
 | |
|     for (var e = 1; e < arguments.length; e++) {
 | |
|       var t = arguments[e];
 | |
|       for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
 | |
|     }
 | |
|     return n;
 | |
|   }, _extends.apply(null, arguments);
 | |
| }
 | |
| 
 | |
| ;// CONCATENATED MODULE: ../node_modules/react-json-tree/lib/esm/objType.js
 | |
| function objType(obj) {
 | |
|   const type = Object.prototype.toString.call(obj).slice(8, -1);
 | |
|   if (type === 'Object' && typeof obj[Symbol.iterator] === 'function') {
 | |
|     return 'Iterable';
 | |
|   }
 | |
|   if (type === 'Custom' && obj.constructor !== Object && obj instanceof Object) {
 | |
|     // For projects implementing objects overriding `.prototype[Symbol.toStringTag]`
 | |
|     return 'Object';
 | |
|   }
 | |
|   return type;
 | |
| }
 | |
| ;// CONCATENATED MODULE: ../node_modules/react-json-tree/lib/esm/JSONArrow.js
 | |
| 
 | |
| 
 | |
| function JSONArrow(_ref) {
 | |
|   let {
 | |
|     styling,
 | |
|     arrowStyle = 'single',
 | |
|     expanded,
 | |
|     nodeType,
 | |
|     onClick
 | |
|   } = _ref;
 | |
|   return /*#__PURE__*/index_js_default().createElement("div", _extends({}, styling('arrowContainer', arrowStyle), {
 | |
|     onClick: onClick
 | |
|   }), /*#__PURE__*/index_js_default().createElement("div", styling(['arrow', 'arrowSign'], nodeType, expanded, arrowStyle), '\u25B6', arrowStyle === 'double' && /*#__PURE__*/index_js_default().createElement("div", styling(['arrowSign', 'arrowSignInner']), '\u25B6')));
 | |
| }
 | |
| ;// CONCATENATED MODULE: ../node_modules/react-json-tree/lib/esm/getCollectionEntries.js
 | |
| function getLength(type, collection) {
 | |
|   if (type === 'Object') {
 | |
|     // eslint-disable-next-line @typescript-eslint/ban-types
 | |
|     return Object.keys(collection).length;
 | |
|   } else if (type === 'Array') {
 | |
|     return collection.length;
 | |
|   }
 | |
|   return Infinity;
 | |
| }
 | |
| function isIterableMap(collection) {
 | |
|   return typeof collection.set === 'function';
 | |
| }
 | |
| function getEntries(type, collection, sortObjectKeys) {
 | |
|   let from = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
 | |
|   let to = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : Infinity;
 | |
|   let res;
 | |
|   if (type === 'Object') {
 | |
|     let keys = Object.getOwnPropertyNames(collection);
 | |
|     if (sortObjectKeys) {
 | |
|       keys.sort(sortObjectKeys === true ? undefined : sortObjectKeys);
 | |
|     }
 | |
|     keys = keys.slice(from, to + 1);
 | |
|     res = {
 | |
|       entries: keys.map(key => ({
 | |
|         key,
 | |
|         value: collection[key]
 | |
|       }))
 | |
|     };
 | |
|   } else if (type === 'Array') {
 | |
|     res = {
 | |
|       entries: collection.slice(from, to + 1).map((val, idx) => ({
 | |
|         key: idx + from,
 | |
|         value: val
 | |
|       }))
 | |
|     };
 | |
|   } else {
 | |
|     let idx = 0;
 | |
|     const entries = [];
 | |
|     let done = true;
 | |
|     const isMap = isIterableMap(collection);
 | |
|     for (const item of collection) {
 | |
|       if (idx > to) {
 | |
|         done = false;
 | |
|         break;
 | |
|       }
 | |
|       if (from <= idx) {
 | |
|         if (isMap && Array.isArray(item)) {
 | |
|           if (typeof item[0] === 'string' || typeof item[0] === 'number') {
 | |
|             entries.push({
 | |
|               key: item[0],
 | |
|               value: item[1]
 | |
|             });
 | |
|           } else {
 | |
|             entries.push({
 | |
|               key: `[entry ${idx}]`,
 | |
|               value: {
 | |
|                 '[key]': item[0],
 | |
|                 '[value]': item[1]
 | |
|               }
 | |
|             });
 | |
|           }
 | |
|         } else {
 | |
|           entries.push({
 | |
|             key: idx,
 | |
|             value: item
 | |
|           });
 | |
|         }
 | |
|       }
 | |
|       idx++;
 | |
|     }
 | |
|     res = {
 | |
|       hasMore: !done,
 | |
|       entries
 | |
|     };
 | |
|   }
 | |
|   return res;
 | |
| }
 | |
| function getRanges(from, to, limit) {
 | |
|   const ranges = [];
 | |
|   while (to - from > limit * limit) {
 | |
|     limit = limit * limit;
 | |
|   }
 | |
|   for (let i = from; i <= to; i += limit) {
 | |
|     ranges.push({
 | |
|       from: i,
 | |
|       to: Math.min(to, i + limit - 1)
 | |
|     });
 | |
|   }
 | |
|   return ranges;
 | |
| }
 | |
| function getCollectionEntries(type, collection, sortObjectKeys, limit) {
 | |
|   let from = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
 | |
|   let to = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : Infinity;
 | |
|   const getEntriesBound = getEntries.bind(null, type, collection, sortObjectKeys);
 | |
|   if (!limit) {
 | |
|     return getEntriesBound().entries;
 | |
|   }
 | |
|   const isSubset = to < Infinity;
 | |
|   const length = Math.min(to - from, getLength(type, collection));
 | |
|   if (type !== 'Iterable') {
 | |
|     if (length <= limit || limit < 7) {
 | |
|       return getEntriesBound(from, to).entries;
 | |
|     }
 | |
|   } else {
 | |
|     if (length <= limit && !isSubset) {
 | |
|       return getEntriesBound(from, to).entries;
 | |
|     }
 | |
|   }
 | |
|   let limitedEntries;
 | |
|   if (type === 'Iterable') {
 | |
|     const {
 | |
|       hasMore,
 | |
|       entries
 | |
|     } = getEntriesBound(from, from + limit - 1);
 | |
|     limitedEntries = hasMore ? [...entries, ...getRanges(from + limit, from + 2 * limit - 1, limit)] : entries;
 | |
|   } else {
 | |
|     limitedEntries = isSubset ? getRanges(from, to, limit) : [...getEntriesBound(0, limit - 5).entries, ...getRanges(limit - 4, length - 5, limit), ...getEntriesBound(length - 4, length - 1).entries];
 | |
|   }
 | |
|   return limitedEntries;
 | |
| }
 | |
| ;// CONCATENATED MODULE: ../node_modules/react-json-tree/lib/esm/ItemRange.js
 | |
| 
 | |
| 
 | |
| 
 | |
| function ItemRange(props) {
 | |
|   const {
 | |
|     styling,
 | |
|     from,
 | |
|     to,
 | |
|     renderChildNodes,
 | |
|     nodeType
 | |
|   } = props;
 | |
|   const [expanded, setExpanded] = (0,index_js_.useState)(false);
 | |
|   const handleClick = (0,index_js_.useCallback)(() => {
 | |
|     setExpanded(!expanded);
 | |
|   }, [expanded]);
 | |
|   return expanded ? /*#__PURE__*/index_js_default().createElement("div", styling('itemRange', expanded), renderChildNodes(props, from, to)) : /*#__PURE__*/index_js_default().createElement("div", _extends({}, styling('itemRange', expanded), {
 | |
|     onClick: handleClick
 | |
|   }), /*#__PURE__*/index_js_default().createElement(JSONArrow, {
 | |
|     nodeType: nodeType,
 | |
|     styling: styling,
 | |
|     expanded: false,
 | |
|     onClick: handleClick,
 | |
|     arrowStyle: "double"
 | |
|   }), `${from} ... ${to}`);
 | |
| }
 | |
| ;// CONCATENATED MODULE: ../node_modules/react-json-tree/lib/esm/JSONNestedNode.js
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| function isRange(rangeOrEntry) {
 | |
|   return rangeOrEntry.to !== undefined;
 | |
| }
 | |
| function renderChildNodes(props, from, to) {
 | |
|   const {
 | |
|     nodeType,
 | |
|     data,
 | |
|     collectionLimit,
 | |
|     circularCache,
 | |
|     keyPath,
 | |
|     postprocessValue,
 | |
|     sortObjectKeys
 | |
|   } = props;
 | |
|   const childNodes = [];
 | |
|   getCollectionEntries(nodeType, data, sortObjectKeys, collectionLimit, from, to).forEach(entry => {
 | |
|     if (isRange(entry)) {
 | |
|       childNodes.push( /*#__PURE__*/index_js_default().createElement(ItemRange, _extends({}, props, {
 | |
|         key: `ItemRange--${entry.from}-${entry.to}`,
 | |
|         from: entry.from,
 | |
|         to: entry.to,
 | |
|         renderChildNodes: renderChildNodes
 | |
|       })));
 | |
|     } else {
 | |
|       const {
 | |
|         key,
 | |
|         value
 | |
|       } = entry;
 | |
|       const isCircular = circularCache.indexOf(value) !== -1;
 | |
|       childNodes.push( /*#__PURE__*/index_js_default().createElement(JSONNode, _extends({}, props, {
 | |
|         postprocessValue,
 | |
|         collectionLimit,
 | |
|         key: `Node--${key}`,
 | |
|         keyPath: [key, ...keyPath],
 | |
|         value: postprocessValue(value),
 | |
|         circularCache: [...circularCache, value],
 | |
|         isCircular: isCircular,
 | |
|         hideRoot: false
 | |
|       })));
 | |
|     }
 | |
|   });
 | |
|   return childNodes;
 | |
| }
 | |
| function JSONNestedNode(props) {
 | |
|   const {
 | |
|     circularCache = [],
 | |
|     collectionLimit,
 | |
|     createItemString,
 | |
|     data,
 | |
|     expandable,
 | |
|     getItemString,
 | |
|     hideRoot,
 | |
|     isCircular,
 | |
|     keyPath,
 | |
|     labelRenderer,
 | |
|     level = 0,
 | |
|     nodeType,
 | |
|     nodeTypeIndicator,
 | |
|     shouldExpandNodeInitially,
 | |
|     styling
 | |
|   } = props;
 | |
|   const [expanded, setExpanded] = (0,index_js_.useState)(
 | |
|   // calculate individual node expansion if necessary
 | |
|   isCircular ? false : shouldExpandNodeInitially(keyPath, data, level));
 | |
|   const handleClick = (0,index_js_.useCallback)(() => {
 | |
|     if (expandable) setExpanded(!expanded);
 | |
|   }, [expandable, expanded]);
 | |
|   const renderedChildren = expanded || hideRoot && level === 0 ? renderChildNodes({
 | |
|     ...props,
 | |
|     circularCache,
 | |
|     level: level + 1
 | |
|   }) : null;
 | |
|   const itemType = /*#__PURE__*/index_js_default().createElement("span", styling('nestedNodeItemType', expanded), nodeTypeIndicator);
 | |
|   const renderedItemString = getItemString(nodeType, data, itemType, createItemString(data, collectionLimit), keyPath);
 | |
|   const stylingArgs = [keyPath, nodeType, expanded, expandable];
 | |
|   return hideRoot ? /*#__PURE__*/index_js_default().createElement("li", styling('rootNode', ...stylingArgs), /*#__PURE__*/index_js_default().createElement("ul", styling('rootNodeChildren', ...stylingArgs), renderedChildren)) : /*#__PURE__*/index_js_default().createElement("li", styling('nestedNode', ...stylingArgs), expandable && /*#__PURE__*/index_js_default().createElement(JSONArrow, {
 | |
|     styling: styling,
 | |
|     nodeType: nodeType,
 | |
|     expanded: expanded,
 | |
|     onClick: handleClick
 | |
|   }), /*#__PURE__*/index_js_default().createElement("label", _extends({}, styling(['label', 'nestedNodeLabel'], ...stylingArgs), {
 | |
|     onClick: handleClick
 | |
|   }), labelRenderer(...stylingArgs)), /*#__PURE__*/index_js_default().createElement("span", _extends({}, styling('nestedNodeItemString', ...stylingArgs), {
 | |
|     onClick: handleClick
 | |
|   }), renderedItemString), /*#__PURE__*/index_js_default().createElement("ul", styling('nestedNodeChildren', ...stylingArgs), renderedChildren));
 | |
| }
 | |
| ;// CONCATENATED MODULE: ../node_modules/react-json-tree/lib/esm/JSONObjectNode.js
 | |
| 
 | |
| 
 | |
| 
 | |
| // Returns the "n Items" string for this node,
 | |
| // generating and caching it if it hasn't been created yet.
 | |
| function createItemString(data) {
 | |
|   const len = Object.getOwnPropertyNames(data).length;
 | |
|   return `${len} ${len !== 1 ? 'keys' : 'key'}`;
 | |
| }
 | |
| // Configures <JSONNestedNode> to render an Object
 | |
| function JSONObjectNode(_ref) {
 | |
|   let {
 | |
|     data,
 | |
|     ...props
 | |
|   } = _ref;
 | |
|   return /*#__PURE__*/index_js_default().createElement(JSONNestedNode, _extends({}, props, {
 | |
|     data: data,
 | |
|     nodeType: "Object",
 | |
|     nodeTypeIndicator: props.nodeType === 'Error' ? 'Error()' : '{}',
 | |
|     createItemString: createItemString,
 | |
|     expandable: Object.getOwnPropertyNames(data).length > 0
 | |
|   }));
 | |
| }
 | |
| ;// CONCATENATED MODULE: ../node_modules/react-json-tree/lib/esm/JSONArrayNode.js
 | |
| 
 | |
| 
 | |
| 
 | |
| // Returns the "n Items" string for this node,
 | |
| // generating and caching it if it hasn't been created yet.
 | |
| function JSONArrayNode_createItemString(data) {
 | |
|   return `${data.length} ${data.length !== 1 ? 'items' : 'item'}`;
 | |
| }
 | |
| // Configures <JSONNestedNode> to render an Array
 | |
| function JSONArrayNode(_ref) {
 | |
|   let {
 | |
|     data,
 | |
|     ...props
 | |
|   } = _ref;
 | |
|   return /*#__PURE__*/index_js_default().createElement(JSONNestedNode, _extends({}, props, {
 | |
|     data: data,
 | |
|     nodeType: "Array",
 | |
|     nodeTypeIndicator: "[]",
 | |
|     createItemString: JSONArrayNode_createItemString,
 | |
|     expandable: data.length > 0
 | |
|   }));
 | |
| }
 | |
| ;// CONCATENATED MODULE: ../node_modules/react-json-tree/lib/esm/JSONIterableNode.js
 | |
| 
 | |
| 
 | |
| 
 | |
| // Returns the "n Items" string for this node,
 | |
| // generating and caching it if it hasn't been created yet.
 | |
| function JSONIterableNode_createItemString(data, limit) {
 | |
|   let count = 0;
 | |
|   let hasMore = false;
 | |
|   if (Number.isSafeInteger(data.size)) {
 | |
|     count = data.size;
 | |
|   } else {
 | |
|     // eslint-disable-next-line no-unused-vars
 | |
|     for (const entry of data) {
 | |
|       if (limit && count + 1 > limit) {
 | |
|         hasMore = true;
 | |
|         break;
 | |
|       }
 | |
|       count += 1;
 | |
|     }
 | |
|   }
 | |
|   return `${hasMore ? '>' : ''}${count} ${count !== 1 ? 'entries' : 'entry'}`;
 | |
| }
 | |
| // Configures <JSONNestedNode> to render an iterable
 | |
| function JSONIterableNode(props) {
 | |
|   return /*#__PURE__*/index_js_default().createElement(JSONNestedNode, _extends({}, props, {
 | |
|     nodeType: "Iterable",
 | |
|     nodeTypeIndicator: "()",
 | |
|     createItemString: JSONIterableNode_createItemString,
 | |
|     expandable: true
 | |
|   }));
 | |
| }
 | |
| ;// CONCATENATED MODULE: ../node_modules/react-json-tree/lib/esm/JSONValueNode.js
 | |
| 
 | |
| function JSONValueNode(_ref) {
 | |
|   let {
 | |
|     nodeType,
 | |
|     styling,
 | |
|     labelRenderer,
 | |
|     keyPath,
 | |
|     valueRenderer,
 | |
|     value,
 | |
|     valueGetter = value => value
 | |
|   } = _ref;
 | |
|   return /*#__PURE__*/index_js_default().createElement("li", styling('value', nodeType, keyPath), /*#__PURE__*/index_js_default().createElement("label", styling(['label', 'valueLabel'], nodeType, keyPath), labelRenderer(keyPath, nodeType, false, false)), /*#__PURE__*/index_js_default().createElement("span", styling('valueText', nodeType, keyPath), valueRenderer(valueGetter(value), value, ...keyPath)));
 | |
| }
 | |
| ;// CONCATENATED MODULE: ../node_modules/react-json-tree/lib/esm/JSONNode.js
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| function JSONNode(_ref) {
 | |
|   let {
 | |
|     getItemString,
 | |
|     keyPath,
 | |
|     labelRenderer,
 | |
|     styling,
 | |
|     value,
 | |
|     valueRenderer,
 | |
|     isCustomNode,
 | |
|     ...rest
 | |
|   } = _ref;
 | |
|   const nodeType = isCustomNode(value) ? 'Custom' : objType(value);
 | |
|   const simpleNodeProps = {
 | |
|     getItemString,
 | |
|     key: keyPath[0],
 | |
|     keyPath,
 | |
|     labelRenderer,
 | |
|     nodeType,
 | |
|     styling,
 | |
|     value,
 | |
|     valueRenderer
 | |
|   };
 | |
|   const nestedNodeProps = {
 | |
|     ...rest,
 | |
|     ...simpleNodeProps,
 | |
|     data: value,
 | |
|     isCustomNode
 | |
|   };
 | |
|   switch (nodeType) {
 | |
|     case 'Object':
 | |
|     case 'Error':
 | |
|     case 'WeakMap':
 | |
|     case 'WeakSet':
 | |
|       return /*#__PURE__*/index_js_default().createElement(JSONObjectNode, nestedNodeProps);
 | |
|     case 'Array':
 | |
|       return /*#__PURE__*/index_js_default().createElement(JSONArrayNode, nestedNodeProps);
 | |
|     case 'Iterable':
 | |
|     case 'Map':
 | |
|     case 'Set':
 | |
|       return /*#__PURE__*/index_js_default().createElement(JSONIterableNode, nestedNodeProps);
 | |
|     case 'String':
 | |
|       return /*#__PURE__*/index_js_default().createElement(JSONValueNode, _extends({}, simpleNodeProps, {
 | |
|         valueGetter: raw => `"${raw}"`
 | |
|       }));
 | |
|     case 'Number':
 | |
|       return /*#__PURE__*/index_js_default().createElement(JSONValueNode, simpleNodeProps);
 | |
|     case 'Boolean':
 | |
|       return /*#__PURE__*/index_js_default().createElement(JSONValueNode, _extends({}, simpleNodeProps, {
 | |
|         valueGetter: raw => raw ? 'true' : 'false'
 | |
|       }));
 | |
|     case 'Date':
 | |
|       return /*#__PURE__*/index_js_default().createElement(JSONValueNode, _extends({}, simpleNodeProps, {
 | |
|         valueGetter: raw => raw.toISOString()
 | |
|       }));
 | |
|     case 'Null':
 | |
|       return /*#__PURE__*/index_js_default().createElement(JSONValueNode, _extends({}, simpleNodeProps, {
 | |
|         valueGetter: () => 'null'
 | |
|       }));
 | |
|     case 'Undefined':
 | |
|       return /*#__PURE__*/index_js_default().createElement(JSONValueNode, _extends({}, simpleNodeProps, {
 | |
|         valueGetter: () => 'undefined'
 | |
|       }));
 | |
|     case 'Function':
 | |
|     case 'Symbol':
 | |
|       return /*#__PURE__*/index_js_default().createElement(JSONValueNode, _extends({}, simpleNodeProps, {
 | |
|         valueGetter: raw => raw.toString()
 | |
|       }));
 | |
|     case 'Custom':
 | |
|       return /*#__PURE__*/index_js_default().createElement(JSONValueNode, simpleNodeProps);
 | |
|     default:
 | |
|       return /*#__PURE__*/index_js_default().createElement(JSONValueNode, _extends({}, simpleNodeProps, {
 | |
|         valueGetter: () => `<${nodeType}>`
 | |
|       }));
 | |
|   }
 | |
| }
 | |
| ;// CONCATENATED MODULE: ../node_modules/@babel/runtime/helpers/esm/typeof.js
 | |
| function _typeof(o) {
 | |
|   "@babel/helpers - typeof";
 | |
| 
 | |
|   return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
 | |
|     return typeof o;
 | |
|   } : function (o) {
 | |
|     return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
 | |
|   }, _typeof(o);
 | |
| }
 | |
| 
 | |
| ;// CONCATENATED MODULE: ../node_modules/@babel/runtime/helpers/esm/toPrimitive.js
 | |
| 
 | |
| function toPrimitive(t, r) {
 | |
|   if ("object" != _typeof(t) || !t) return t;
 | |
|   var e = t[Symbol.toPrimitive];
 | |
|   if (void 0 !== e) {
 | |
|     var i = e.call(t, r || "default");
 | |
|     if ("object" != _typeof(i)) return i;
 | |
|     throw new TypeError("@@toPrimitive must return a primitive value.");
 | |
|   }
 | |
|   return ("string" === r ? String : Number)(t);
 | |
| }
 | |
| 
 | |
| ;// CONCATENATED MODULE: ../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js
 | |
| 
 | |
| 
 | |
| function toPropertyKey(t) {
 | |
|   var i = toPrimitive(t, "string");
 | |
|   return "symbol" == _typeof(i) ? i : i + "";
 | |
| }
 | |
| 
 | |
| ;// CONCATENATED MODULE: ../node_modules/@babel/runtime/helpers/esm/defineProperty.js
 | |
| 
 | |
| function _defineProperty(e, r, t) {
 | |
|   return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
 | |
|     value: t,
 | |
|     enumerable: !0,
 | |
|     configurable: !0,
 | |
|     writable: !0
 | |
|   }) : e[r] = t, e;
 | |
| }
 | |
| 
 | |
| ;// CONCATENATED MODULE: ../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js
 | |
| function _arrayWithHoles(r) {
 | |
|   if (Array.isArray(r)) return r;
 | |
| }
 | |
| 
 | |
| ;// CONCATENATED MODULE: ../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js
 | |
| function _iterableToArrayLimit(r, l) {
 | |
|   var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
 | |
|   if (null != t) {
 | |
|     var e,
 | |
|       n,
 | |
|       i,
 | |
|       u,
 | |
|       a = [],
 | |
|       f = !0,
 | |
|       o = !1;
 | |
|     try {
 | |
|       if (i = (t = t.call(r)).next, 0 === l) {
 | |
|         if (Object(t) !== t) return;
 | |
|         f = !1;
 | |
|       } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
 | |
|     } catch (r) {
 | |
|       o = !0, n = r;
 | |
|     } finally {
 | |
|       try {
 | |
|         if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
 | |
|       } finally {
 | |
|         if (o) throw n;
 | |
|       }
 | |
|     }
 | |
|     return a;
 | |
|   }
 | |
| }
 | |
| 
 | |
| ;// CONCATENATED MODULE: ../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js
 | |
| function _arrayLikeToArray(r, a) {
 | |
|   (null == a || a > r.length) && (a = r.length);
 | |
|   for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
 | |
|   return n;
 | |
| }
 | |
| 
 | |
| ;// CONCATENATED MODULE: ../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js
 | |
| 
 | |
| function _unsupportedIterableToArray(r, a) {
 | |
|   if (r) {
 | |
|     if ("string" == typeof r) return _arrayLikeToArray(r, a);
 | |
|     var t = {}.toString.call(r).slice(8, -1);
 | |
|     return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
 | |
|   }
 | |
| }
 | |
| 
 | |
| ;// CONCATENATED MODULE: ../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js
 | |
| function _nonIterableRest() {
 | |
|   throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
 | |
| }
 | |
| 
 | |
| ;// CONCATENATED MODULE: ../node_modules/@babel/runtime/helpers/esm/slicedToArray.js
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| function _slicedToArray(r, e) {
 | |
|   return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
 | |
| }
 | |
| 
 | |
| // EXTERNAL MODULE: ../node_modules/base16/lib/index.js
 | |
| var lib = __webpack_require__(78052);
 | |
| // EXTERNAL MODULE: ../node_modules/color/index.js
 | |
| var node_modules_color = __webpack_require__(27124);
 | |
| var color_default = /*#__PURE__*/__webpack_require__.n(node_modules_color);
 | |
| // EXTERNAL MODULE: ../node_modules/lodash.curry/index.js
 | |
| var lodash_curry = __webpack_require__(28401);
 | |
| var lodash_curry_default = /*#__PURE__*/__webpack_require__.n(lodash_curry);
 | |
| ;// CONCATENATED MODULE: ../node_modules/react-base16-styling/lib/esm/colorConverters.js
 | |
| function yuv2rgb(yuv) {
 | |
|   var y = yuv[0],
 | |
|       u = yuv[1],
 | |
|       v = yuv[2];
 | |
|   var r, g, b;
 | |
|   r = y * 1 + u * 0 + v * 1.13983;
 | |
|   g = y * 1 + u * -0.39465 + v * -0.5806;
 | |
|   b = y * 1 + u * 2.02311 + v * 0;
 | |
|   r = Math.min(Math.max(0, r), 1);
 | |
|   g = Math.min(Math.max(0, g), 1);
 | |
|   b = Math.min(Math.max(0, b), 1);
 | |
|   return [r * 255, g * 255, b * 255];
 | |
| }
 | |
| function rgb2yuv(rgb) {
 | |
|   var r = rgb[0] / 255,
 | |
|       g = rgb[1] / 255,
 | |
|       b = rgb[2] / 255;
 | |
|   var y = r * 0.299 + g * 0.587 + b * 0.114;
 | |
|   var u = r * -0.14713 + g * -0.28886 + b * 0.436;
 | |
|   var v = r * 0.615 + g * -0.51499 + b * -0.10001;
 | |
|   return [y, u, v];
 | |
| }
 | |
| ;// CONCATENATED MODULE: ../node_modules/react-base16-styling/lib/esm/index.js
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
 | |
| 
 | |
| function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| var DEFAULT_BASE16 = lib["default"];
 | |
| var BASE16_KEYS = Object.keys(DEFAULT_BASE16); // we need a correcting factor, so that a dark, but not black background color
 | |
| // converts to bright enough inversed color
 | |
| 
 | |
| var flip = function flip(x) {
 | |
|   return x < 0.25 ? 1 : x < 0.5 ? 0.9 - x : 1.1 - x;
 | |
| };
 | |
| 
 | |
| var invertColor = function invertColor(hexString) {
 | |
|   var color = color_default()(hexString);
 | |
| 
 | |
|   var _rgb2yuv = rgb2yuv(color.array()),
 | |
|       _rgb2yuv2 = _slicedToArray(_rgb2yuv, 3),
 | |
|       y = _rgb2yuv2[0],
 | |
|       u = _rgb2yuv2[1],
 | |
|       v = _rgb2yuv2[2];
 | |
| 
 | |
|   var flippedYuv = [flip(y), u, v];
 | |
|   var rgb = yuv2rgb(flippedYuv);
 | |
|   return color_default().rgb(rgb).hex();
 | |
| };
 | |
| 
 | |
| var merger = function merger(styling) {
 | |
|   return function (prevStyling) {
 | |
|     return {
 | |
|       className: [prevStyling.className, styling.className].filter(Boolean).join(' '),
 | |
|       style: _objectSpread(_objectSpread({}, prevStyling.style || {}), styling.style || {})
 | |
|     };
 | |
|   };
 | |
| };
 | |
| 
 | |
| var mergeStyling = function mergeStyling(customStyling, defaultStyling) {
 | |
|   if (customStyling === undefined) {
 | |
|     return defaultStyling;
 | |
|   }
 | |
| 
 | |
|   if (defaultStyling === undefined) {
 | |
|     return customStyling;
 | |
|   }
 | |
| 
 | |
|   var customType = _typeof(customStyling);
 | |
| 
 | |
|   var defaultType = _typeof(defaultStyling);
 | |
| 
 | |
|   switch (customType) {
 | |
|     case 'string':
 | |
|       switch (defaultType) {
 | |
|         case 'string':
 | |
|           return [defaultStyling, customStyling].filter(Boolean).join(' ');
 | |
| 
 | |
|         case 'object':
 | |
|           return merger({
 | |
|             className: customStyling,
 | |
|             style: defaultStyling
 | |
|           });
 | |
| 
 | |
|         case 'function':
 | |
|           return function (styling) {
 | |
|             for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
 | |
|               args[_key - 1] = arguments[_key];
 | |
|             }
 | |
| 
 | |
|             return merger({
 | |
|               className: customStyling
 | |
|             })(defaultStyling.apply(void 0, [styling].concat(args)));
 | |
|           };
 | |
|       }
 | |
| 
 | |
|       break;
 | |
| 
 | |
|     case 'object':
 | |
|       switch (defaultType) {
 | |
|         case 'string':
 | |
|           return merger({
 | |
|             className: defaultStyling,
 | |
|             style: customStyling
 | |
|           });
 | |
| 
 | |
|         case 'object':
 | |
|           return _objectSpread(_objectSpread({}, defaultStyling), customStyling);
 | |
| 
 | |
|         case 'function':
 | |
|           return function (styling) {
 | |
|             for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
 | |
|               args[_key2 - 1] = arguments[_key2];
 | |
|             }
 | |
| 
 | |
|             return merger({
 | |
|               style: customStyling
 | |
|             })(defaultStyling.apply(void 0, [styling].concat(args)));
 | |
|           };
 | |
|       }
 | |
| 
 | |
|       break;
 | |
| 
 | |
|     case 'function':
 | |
|       switch (defaultType) {
 | |
|         case 'string':
 | |
|           return function (styling) {
 | |
|             for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
 | |
|               args[_key3 - 1] = arguments[_key3];
 | |
|             }
 | |
| 
 | |
|             return customStyling.apply(void 0, [merger(styling)({
 | |
|               className: defaultStyling
 | |
|             })].concat(args));
 | |
|           };
 | |
| 
 | |
|         case 'object':
 | |
|           return function (styling) {
 | |
|             for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
 | |
|               args[_key4 - 1] = arguments[_key4];
 | |
|             }
 | |
| 
 | |
|             return customStyling.apply(void 0, [merger(styling)({
 | |
|               style: defaultStyling
 | |
|             })].concat(args));
 | |
|           };
 | |
| 
 | |
|         case 'function':
 | |
|           return function (styling) {
 | |
|             for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {
 | |
|               args[_key5 - 1] = arguments[_key5];
 | |
|             }
 | |
| 
 | |
|             return customStyling.apply(void 0, [defaultStyling.apply(void 0, [styling].concat(args))].concat(args));
 | |
|           };
 | |
|       }
 | |
| 
 | |
|   }
 | |
| };
 | |
| 
 | |
| var mergeStylings = function mergeStylings(customStylings, defaultStylings) {
 | |
|   var keys = Object.keys(defaultStylings);
 | |
| 
 | |
|   for (var key in customStylings) {
 | |
|     if (keys.indexOf(key) === -1) keys.push(key);
 | |
|   }
 | |
| 
 | |
|   return keys.reduce(function (mergedStyling, key) {
 | |
|     return mergedStyling[key] = mergeStyling(customStylings[key], defaultStylings[key]), mergedStyling;
 | |
|   }, {});
 | |
| };
 | |
| 
 | |
| var getStylingByKeys = function getStylingByKeys(mergedStyling, keys) {
 | |
|   for (var _len6 = arguments.length, args = new Array(_len6 > 2 ? _len6 - 2 : 0), _key6 = 2; _key6 < _len6; _key6++) {
 | |
|     args[_key6 - 2] = arguments[_key6];
 | |
|   }
 | |
| 
 | |
|   if (keys === null) {
 | |
|     return mergedStyling;
 | |
|   }
 | |
| 
 | |
|   if (!Array.isArray(keys)) {
 | |
|     keys = [keys];
 | |
|   }
 | |
| 
 | |
|   var styles = keys.map(function (key) {
 | |
|     return mergedStyling[key];
 | |
|   }).filter(Boolean);
 | |
|   var props = styles.reduce(function (obj, s) {
 | |
|     if (typeof s === 'string') {
 | |
|       obj.className = [obj.className, s].filter(Boolean).join(' ');
 | |
|     } else if (_typeof(s) === 'object') {
 | |
|       obj.style = _objectSpread(_objectSpread({}, obj.style), s);
 | |
|     } else if (typeof s === 'function') {
 | |
|       obj = _objectSpread(_objectSpread({}, obj), s.apply(void 0, [obj].concat(args)));
 | |
|     }
 | |
| 
 | |
|     return obj;
 | |
|   }, {
 | |
|     className: '',
 | |
|     style: {}
 | |
|   });
 | |
| 
 | |
|   if (!props.className) {
 | |
|     delete props.className;
 | |
|   }
 | |
| 
 | |
|   if (Object.keys(props.style).length === 0) {
 | |
|     delete props.style;
 | |
|   }
 | |
| 
 | |
|   return props;
 | |
| };
 | |
| 
 | |
| var invertBase16Theme = function invertBase16Theme(base16Theme) {
 | |
|   return Object.keys(base16Theme).reduce(function (t, key) {
 | |
|     return t[key] = /^base/.test(key) ? invertColor(base16Theme[key]) : key === 'scheme' ? base16Theme[key] + ':inverted' : base16Theme[key], t;
 | |
|   }, {});
 | |
| };
 | |
| var createStyling = lodash_curry_default()(function (getStylingFromBase16) {
 | |
|   var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
 | |
|   var themeOrStyling = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
 | |
|   var _options$defaultBase = options.defaultBase16,
 | |
|       defaultBase16 = _options$defaultBase === void 0 ? DEFAULT_BASE16 : _options$defaultBase,
 | |
|       _options$base16Themes = options.base16Themes,
 | |
|       base16Themes = _options$base16Themes === void 0 ? null : _options$base16Themes;
 | |
|   var base16Theme = getBase16Theme(themeOrStyling, base16Themes);
 | |
| 
 | |
|   if (base16Theme) {
 | |
|     themeOrStyling = _objectSpread(_objectSpread({}, base16Theme), themeOrStyling);
 | |
|   }
 | |
| 
 | |
|   var theme = BASE16_KEYS.reduce(function (t, key) {
 | |
|     return t[key] = themeOrStyling[key] || defaultBase16[key], t;
 | |
|   }, {});
 | |
|   var customStyling = Object.keys(themeOrStyling).reduce(function (s, key) {
 | |
|     return BASE16_KEYS.indexOf(key) === -1 ? (s[key] = themeOrStyling[key], s) : s;
 | |
|   }, {});
 | |
|   var defaultStyling = getStylingFromBase16(theme);
 | |
|   var mergedStyling = mergeStylings(customStyling, defaultStyling);
 | |
| 
 | |
|   for (var _len7 = arguments.length, args = new Array(_len7 > 3 ? _len7 - 3 : 0), _key7 = 3; _key7 < _len7; _key7++) {
 | |
|     args[_key7 - 3] = arguments[_key7];
 | |
|   }
 | |
| 
 | |
|   return lodash_curry_default()(getStylingByKeys, 2).apply(void 0, [mergedStyling].concat(args));
 | |
| }, 3);
 | |
| 
 | |
| var isStylingConfig = function isStylingConfig(theme) {
 | |
|   return !!theme.extend;
 | |
| };
 | |
| 
 | |
| var getBase16Theme = function getBase16Theme(theme, base16Themes) {
 | |
|   if (theme && isStylingConfig(theme) && theme.extend) {
 | |
|     theme = theme.extend;
 | |
|   }
 | |
| 
 | |
|   if (typeof theme === 'string') {
 | |
|     var _theme$split = theme.split(':'),
 | |
|         _theme$split2 = _slicedToArray(_theme$split, 2),
 | |
|         _themeName = _theme$split2[0],
 | |
|         modifier = _theme$split2[1];
 | |
| 
 | |
|     if (base16Themes) {
 | |
|       theme = base16Themes[_themeName];
 | |
|     } else {
 | |
|       theme = lib[_themeName];
 | |
|     }
 | |
| 
 | |
|     if (modifier === 'inverted') {
 | |
|       theme = invertBase16Theme(theme);
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   return theme && Object.prototype.hasOwnProperty.call(theme, 'base00') ? theme : undefined;
 | |
| };
 | |
| var invertTheme = function invertTheme(theme) {
 | |
|   if (typeof theme === 'string') {
 | |
|     return "".concat(theme, ":inverted");
 | |
|   }
 | |
| 
 | |
|   if (theme && isStylingConfig(theme) && theme.extend) {
 | |
|     if (typeof theme.extend === 'string') {
 | |
|       return _objectSpread(_objectSpread({}, theme), {}, {
 | |
|         extend: "".concat(theme.extend, ":inverted")
 | |
|       });
 | |
|     }
 | |
| 
 | |
|     return _objectSpread(_objectSpread({}, theme), {}, {
 | |
|       extend: invertBase16Theme(theme.extend)
 | |
|     });
 | |
|   }
 | |
| 
 | |
|   if (theme) {
 | |
|     return invertBase16Theme(theme);
 | |
|   }
 | |
| 
 | |
|   return theme;
 | |
| };
 | |
| 
 | |
| ;// CONCATENATED MODULE: ../node_modules/react-json-tree/lib/esm/themes/solarized.js
 | |
| /* harmony default export */ const solarized = ({
 | |
|   scheme: 'solarized',
 | |
|   author: 'ethan schoonover (http://ethanschoonover.com/solarized)',
 | |
|   base00: '#002b36',
 | |
|   base01: '#073642',
 | |
|   base02: '#586e75',
 | |
|   base03: '#657b83',
 | |
|   base04: '#839496',
 | |
|   base05: '#93a1a1',
 | |
|   base06: '#eee8d5',
 | |
|   base07: '#fdf6e3',
 | |
|   base08: '#dc322f',
 | |
|   base09: '#cb4b16',
 | |
|   base0A: '#b58900',
 | |
|   base0B: '#859900',
 | |
|   base0C: '#2aa198',
 | |
|   base0D: '#268bd2',
 | |
|   base0E: '#6c71c4',
 | |
|   base0F: '#d33682'
 | |
| });
 | |
| ;// CONCATENATED MODULE: ../node_modules/react-json-tree/lib/esm/createStylingFromTheme.js
 | |
| 
 | |
| 
 | |
| const colorMap = theme => ({
 | |
|   BACKGROUND_COLOR: theme.base00,
 | |
|   TEXT_COLOR: theme.base07,
 | |
|   STRING_COLOR: theme.base0B,
 | |
|   DATE_COLOR: theme.base0B,
 | |
|   NUMBER_COLOR: theme.base09,
 | |
|   BOOLEAN_COLOR: theme.base09,
 | |
|   NULL_COLOR: theme.base08,
 | |
|   UNDEFINED_COLOR: theme.base08,
 | |
|   FUNCTION_COLOR: theme.base08,
 | |
|   SYMBOL_COLOR: theme.base08,
 | |
|   LABEL_COLOR: theme.base0D,
 | |
|   ARROW_COLOR: theme.base0D,
 | |
|   ITEM_STRING_COLOR: theme.base0B,
 | |
|   ITEM_STRING_EXPANDED_COLOR: theme.base03
 | |
| });
 | |
| const valueColorMap = colors => ({
 | |
|   String: colors.STRING_COLOR,
 | |
|   Date: colors.DATE_COLOR,
 | |
|   Number: colors.NUMBER_COLOR,
 | |
|   Boolean: colors.BOOLEAN_COLOR,
 | |
|   Null: colors.NULL_COLOR,
 | |
|   Undefined: colors.UNDEFINED_COLOR,
 | |
|   Function: colors.FUNCTION_COLOR,
 | |
|   Symbol: colors.SYMBOL_COLOR
 | |
| });
 | |
| const getDefaultThemeStyling = theme => {
 | |
|   const colors = colorMap(theme);
 | |
|   return {
 | |
|     tree: {
 | |
|       border: 0,
 | |
|       padding: 0,
 | |
|       marginTop: '0.5em',
 | |
|       marginBottom: '0.5em',
 | |
|       marginLeft: '0.125em',
 | |
|       marginRight: 0,
 | |
|       listStyle: 'none',
 | |
|       MozUserSelect: 'none',
 | |
|       WebkitUserSelect: 'none',
 | |
|       backgroundColor: colors.BACKGROUND_COLOR
 | |
|     },
 | |
|     value: (_ref, nodeType, keyPath) => {
 | |
|       let {
 | |
|         style
 | |
|       } = _ref;
 | |
|       return {
 | |
|         style: {
 | |
|           ...style,
 | |
|           paddingTop: '0.25em',
 | |
|           paddingRight: 0,
 | |
|           marginLeft: '0.875em',
 | |
|           WebkitUserSelect: 'text',
 | |
|           MozUserSelect: 'text',
 | |
|           wordWrap: 'break-word',
 | |
|           paddingLeft: keyPath.length > 1 ? '2.125em' : '1.25em',
 | |
|           textIndent: '-0.5em',
 | |
|           wordBreak: 'break-all'
 | |
|         }
 | |
|       };
 | |
|     },
 | |
|     label: {
 | |
|       display: 'inline-block',
 | |
|       color: colors.LABEL_COLOR
 | |
|     },
 | |
|     valueLabel: {
 | |
|       margin: '0 0.5em 0 0'
 | |
|     },
 | |
|     valueText: (_ref2, nodeType) => {
 | |
|       let {
 | |
|         style
 | |
|       } = _ref2;
 | |
|       return {
 | |
|         style: {
 | |
|           ...style,
 | |
|           color: valueColorMap(colors)[nodeType]
 | |
|         }
 | |
|       };
 | |
|     },
 | |
|     itemRange: (styling, expanded) => ({
 | |
|       style: {
 | |
|         paddingTop: expanded ? 0 : '0.25em',
 | |
|         cursor: 'pointer',
 | |
|         color: colors.LABEL_COLOR
 | |
|       }
 | |
|     }),
 | |
|     arrow: (_ref3, nodeType, expanded) => {
 | |
|       let {
 | |
|         style
 | |
|       } = _ref3;
 | |
|       return {
 | |
|         style: {
 | |
|           ...style,
 | |
|           marginLeft: 0,
 | |
|           transition: '150ms',
 | |
|           WebkitTransition: '150ms',
 | |
|           MozTransition: '150ms',
 | |
|           WebkitTransform: expanded ? 'rotateZ(90deg)' : 'rotateZ(0deg)',
 | |
|           MozTransform: expanded ? 'rotateZ(90deg)' : 'rotateZ(0deg)',
 | |
|           transform: expanded ? 'rotateZ(90deg)' : 'rotateZ(0deg)',
 | |
|           transformOrigin: '45% 50%',
 | |
|           WebkitTransformOrigin: '45% 50%',
 | |
|           MozTransformOrigin: '45% 50%',
 | |
|           position: 'relative',
 | |
|           lineHeight: '1.1em',
 | |
|           fontSize: '0.75em'
 | |
|         }
 | |
|       };
 | |
|     },
 | |
|     arrowContainer: (_ref4, arrowStyle) => {
 | |
|       let {
 | |
|         style
 | |
|       } = _ref4;
 | |
|       return {
 | |
|         style: {
 | |
|           ...style,
 | |
|           display: 'inline-block',
 | |
|           paddingRight: '0.5em',
 | |
|           paddingLeft: arrowStyle === 'double' ? '1em' : 0,
 | |
|           cursor: 'pointer'
 | |
|         }
 | |
|       };
 | |
|     },
 | |
|     arrowSign: {
 | |
|       color: colors.ARROW_COLOR
 | |
|     },
 | |
|     arrowSignInner: {
 | |
|       position: 'absolute',
 | |
|       top: 0,
 | |
|       left: '-0.4em'
 | |
|     },
 | |
|     nestedNode: (_ref5, keyPath, nodeType, expanded, expandable) => {
 | |
|       let {
 | |
|         style
 | |
|       } = _ref5;
 | |
|       return {
 | |
|         style: {
 | |
|           ...style,
 | |
|           position: 'relative',
 | |
|           paddingTop: '0.25em',
 | |
|           marginLeft: keyPath.length > 1 ? '0.875em' : 0,
 | |
|           paddingLeft: !expandable ? '1.125em' : 0
 | |
|         }
 | |
|       };
 | |
|     },
 | |
|     rootNode: {
 | |
|       padding: 0,
 | |
|       margin: 0
 | |
|     },
 | |
|     nestedNodeLabel: (_ref6, keyPath, nodeType, expanded, expandable) => {
 | |
|       let {
 | |
|         style
 | |
|       } = _ref6;
 | |
|       return {
 | |
|         style: {
 | |
|           ...style,
 | |
|           margin: 0,
 | |
|           padding: 0,
 | |
|           WebkitUserSelect: expandable ? 'inherit' : 'text',
 | |
|           MozUserSelect: expandable ? 'inherit' : 'text',
 | |
|           cursor: expandable ? 'pointer' : 'default'
 | |
|         }
 | |
|       };
 | |
|     },
 | |
|     nestedNodeItemString: (_ref7, keyPath, nodeType, expanded) => {
 | |
|       let {
 | |
|         style
 | |
|       } = _ref7;
 | |
|       return {
 | |
|         style: {
 | |
|           ...style,
 | |
|           paddingLeft: '0.5em',
 | |
|           cursor: 'default',
 | |
|           color: expanded ? colors.ITEM_STRING_EXPANDED_COLOR : colors.ITEM_STRING_COLOR
 | |
|         }
 | |
|       };
 | |
|     },
 | |
|     nestedNodeItemType: {
 | |
|       marginLeft: '0.3em',
 | |
|       marginRight: '0.3em'
 | |
|     },
 | |
|     nestedNodeChildren: (_ref8, nodeType, expanded) => {
 | |
|       let {
 | |
|         style
 | |
|       } = _ref8;
 | |
|       return {
 | |
|         style: {
 | |
|           ...style,
 | |
|           padding: 0,
 | |
|           margin: 0,
 | |
|           listStyle: 'none',
 | |
|           display: expanded ? 'block' : 'none'
 | |
|         }
 | |
|       };
 | |
|     },
 | |
|     rootNodeChildren: {
 | |
|       padding: 0,
 | |
|       margin: 0,
 | |
|       listStyle: 'none'
 | |
|     }
 | |
|   };
 | |
| };
 | |
| const createStylingFromTheme = createStyling(getDefaultThemeStyling, {
 | |
|   defaultBase16: solarized
 | |
| });
 | |
| /* harmony default export */ const esm_createStylingFromTheme = (createStylingFromTheme);
 | |
| ;// CONCATENATED MODULE: ../node_modules/react-json-tree/lib/esm/index.js
 | |
| // ES6 + inline style port of JSONViewer https://bitbucket.org/davevedder/react-json-viewer/
 | |
| // all credits and original code to the author
 | |
| // Dave Vedder <veddermatic@gmail.com> http://www.eskimospy.com/
 | |
| // port by Daniele Zannotti http://www.github.com/dzannotti <dzannotti@me.com>
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| const identity = value => value;
 | |
| const expandRootNode = (keyPath, data, level) => level === 0;
 | |
| const defaultItemString = (type, data, itemType, itemString) => /*#__PURE__*/index_js_default().createElement("span", null, itemType, " ", itemString);
 | |
| const defaultLabelRenderer = _ref => {
 | |
|   let [label] = _ref;
 | |
|   return /*#__PURE__*/index_js_default().createElement("span", null, label, ":");
 | |
| };
 | |
| const noCustomNode = () => false;
 | |
| function JSONTree(_ref2) {
 | |
|   let {
 | |
|     data: value,
 | |
|     theme,
 | |
|     invertTheme: shouldInvertTheme,
 | |
|     keyPath = ['root'],
 | |
|     labelRenderer = defaultLabelRenderer,
 | |
|     valueRenderer = identity,
 | |
|     shouldExpandNodeInitially = expandRootNode,
 | |
|     hideRoot = false,
 | |
|     getItemString = defaultItemString,
 | |
|     postprocessValue = identity,
 | |
|     isCustomNode = noCustomNode,
 | |
|     collectionLimit = 50,
 | |
|     sortObjectKeys = false
 | |
|   } = _ref2;
 | |
|   const styling = (0,index_js_.useMemo)(() => esm_createStylingFromTheme(shouldInvertTheme ? invertTheme(theme) : theme), [theme, shouldInvertTheme]);
 | |
|   return /*#__PURE__*/index_js_default().createElement("ul", styling('tree'), /*#__PURE__*/index_js_default().createElement(JSONNode, {
 | |
|     keyPath: hideRoot ? [] : keyPath,
 | |
|     value: postprocessValue(value),
 | |
|     isCustomNode: isCustomNode,
 | |
|     styling: styling,
 | |
|     labelRenderer: labelRenderer,
 | |
|     valueRenderer: valueRenderer,
 | |
|     shouldExpandNodeInitially: shouldExpandNodeInitially,
 | |
|     hideRoot: hideRoot,
 | |
|     getItemString: getItemString,
 | |
|     postprocessValue: postprocessValue,
 | |
|     collectionLimit: collectionLimit,
 | |
|     sortObjectKeys: sortObjectKeys
 | |
|   }));
 | |
| }
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 10521:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| var isArrayish = __webpack_require__(31832);
 | |
| 
 | |
| var concat = Array.prototype.concat;
 | |
| var slice = Array.prototype.slice;
 | |
| 
 | |
| var swizzle = module.exports = function swizzle(args) {
 | |
| 	var results = [];
 | |
| 
 | |
| 	for (var i = 0, len = args.length; i < len; i++) {
 | |
| 		var arg = args[i];
 | |
| 
 | |
| 		if (isArrayish(arg)) {
 | |
| 			// http://jsperf.com/javascript-array-concat-vs-push/98
 | |
| 			results = concat.call(results, slice.call(arg));
 | |
| 		} else {
 | |
| 			results.push(arg);
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	return results;
 | |
| };
 | |
| 
 | |
| swizzle.wrap = function (fn) {
 | |
| 	return function () {
 | |
| 		return fn(swizzle(arguments));
 | |
| 	};
 | |
| };
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 31832:
 | |
| /***/ ((module) => {
 | |
| 
 | |
| module.exports = function isArrayish(obj) {
 | |
| 	if (!obj || typeof obj === 'string') {
 | |
| 		return false;
 | |
| 	}
 | |
| 
 | |
| 	return obj instanceof Array || Array.isArray(obj) ||
 | |
| 		(obj.length >= 0 && (obj.splice instanceof Function ||
 | |
| 			(Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String')));
 | |
| };
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 4434:
 | |
| /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
 | |
| 
 | |
| "use strict";
 | |
| /* harmony export */ __webpack_require__.d(__webpack_exports__, {
 | |
| /* harmony export */   V: () => (/* binding */ StyleModule)
 | |
| /* harmony export */ });
 | |
| const C = "\u037c"
 | |
| const COUNT = typeof Symbol == "undefined" ? "__" + C : Symbol.for(C)
 | |
| const SET = typeof Symbol == "undefined" ? "__styleSet" + Math.floor(Math.random() * 1e8) : Symbol("styleSet")
 | |
| const top = typeof globalThis != "undefined" ? globalThis : typeof window != "undefined" ? window : {}
 | |
| 
 | |
| // :: - Style modules encapsulate a set of CSS rules defined from
 | |
| // JavaScript. Their definitions are only available in a given DOM
 | |
| // root after it has been _mounted_ there with `StyleModule.mount`.
 | |
| //
 | |
| // Style modules should be created once and stored somewhere, as
 | |
| // opposed to re-creating them every time you need them. The amount of
 | |
| // CSS rules generated for a given DOM root is bounded by the amount
 | |
| // of style modules that were used. So to avoid leaking rules, don't
 | |
| // create these dynamically, but treat them as one-time allocations.
 | |
| class StyleModule {
 | |
|   // :: (Object<Style>, ?{finish: ?(string) → string})
 | |
|   // Create a style module from the given spec.
 | |
|   //
 | |
|   // When `finish` is given, it is called on regular (non-`@`)
 | |
|   // selectors (after `&` expansion) to compute the final selector.
 | |
|   constructor(spec, options) {
 | |
|     this.rules = []
 | |
|     let {finish} = options || {}
 | |
| 
 | |
|     function splitSelector(selector) {
 | |
|       return /^@/.test(selector) ? [selector] : selector.split(/,\s*/)
 | |
|     }
 | |
| 
 | |
|     function render(selectors, spec, target, isKeyframes) {
 | |
|       let local = [], isAt = /^@(\w+)\b/.exec(selectors[0]), keyframes = isAt && isAt[1] == "keyframes"
 | |
|       if (isAt && spec == null) return target.push(selectors[0] + ";")
 | |
|       for (let prop in spec) {
 | |
|         let value = spec[prop]
 | |
|         if (/&/.test(prop)) {
 | |
|           render(prop.split(/,\s*/).map(part => selectors.map(sel => part.replace(/&/, sel))).reduce((a, b) => a.concat(b)),
 | |
|                  value, target)
 | |
|         } else if (value && typeof value == "object") {
 | |
|           if (!isAt) throw new RangeError("The value of a property (" + prop + ") should be a primitive value.")
 | |
|           render(splitSelector(prop), value, local, keyframes)
 | |
|         } else if (value != null) {
 | |
|           local.push(prop.replace(/_.*/, "").replace(/[A-Z]/g, l => "-" + l.toLowerCase()) + ": " + value + ";")
 | |
|         }
 | |
|       }
 | |
|       if (local.length || keyframes) {
 | |
|         target.push((finish && !isAt && !isKeyframes ? selectors.map(finish) : selectors).join(", ") +
 | |
|                     " {" + local.join(" ") + "}")
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     for (let prop in spec) render(splitSelector(prop), spec[prop], this.rules)
 | |
|   }
 | |
| 
 | |
|   // :: () → string
 | |
|   // Returns a string containing the module's CSS rules.
 | |
|   getRules() { return this.rules.join("\n") }
 | |
| 
 | |
|   // :: () → string
 | |
|   // Generate a new unique CSS class name.
 | |
|   static newName() {
 | |
|     let id = top[COUNT] || 1
 | |
|     top[COUNT] = id + 1
 | |
|     return C + id.toString(36)
 | |
|   }
 | |
| 
 | |
|   // :: (union<Document, ShadowRoot>, union<[StyleModule], StyleModule>, ?{nonce: ?string})
 | |
|   //
 | |
|   // Mount the given set of modules in the given DOM root, which ensures
 | |
|   // that the CSS rules defined by the module are available in that
 | |
|   // context.
 | |
|   //
 | |
|   // Rules are only added to the document once per root.
 | |
|   //
 | |
|   // Rule order will follow the order of the modules, so that rules from
 | |
|   // modules later in the array take precedence of those from earlier
 | |
|   // modules. If you call this function multiple times for the same root
 | |
|   // in a way that changes the order of already mounted modules, the old
 | |
|   // order will be changed.
 | |
|   //
 | |
|   // If a Content Security Policy nonce is provided, it is added to
 | |
|   // the `<style>` tag generated by the library.
 | |
|   static mount(root, modules, options) {
 | |
|     let set = root[SET], nonce = options && options.nonce
 | |
|     if (!set) set = new StyleSet(root, nonce)
 | |
|     else if (nonce) set.setNonce(nonce)
 | |
|     set.mount(Array.isArray(modules) ? modules : [modules])
 | |
|   }
 | |
| }
 | |
| 
 | |
| let adoptedSet = new Map //<Document, StyleSet>
 | |
| 
 | |
| class StyleSet {
 | |
|   constructor(root, nonce) {
 | |
|     let doc = root.ownerDocument || root, win = doc.defaultView
 | |
|     if (!root.head && root.adoptedStyleSheets && win.CSSStyleSheet) {
 | |
|       let adopted = adoptedSet.get(doc)
 | |
|       if (adopted) {
 | |
|         root.adoptedStyleSheets = [adopted.sheet, ...root.adoptedStyleSheets]
 | |
|         return root[SET] = adopted
 | |
|       }
 | |
|       this.sheet = new win.CSSStyleSheet
 | |
|       root.adoptedStyleSheets = [this.sheet, ...root.adoptedStyleSheets]
 | |
|       adoptedSet.set(doc, this)
 | |
|     } else {
 | |
|       this.styleTag = doc.createElement("style")
 | |
|       if (nonce) this.styleTag.setAttribute("nonce", nonce)
 | |
|       let target = root.head || root
 | |
|       target.insertBefore(this.styleTag, target.firstChild)
 | |
|     }
 | |
|     this.modules = []
 | |
|     root[SET] = this
 | |
|   }
 | |
| 
 | |
|   mount(modules) {
 | |
|     let sheet = this.sheet
 | |
|     let pos = 0 /* Current rule offset */, j = 0 /* Index into this.modules */
 | |
|     for (let i = 0; i < modules.length; i++) {
 | |
|       let mod = modules[i], index = this.modules.indexOf(mod)
 | |
|       if (index < j && index > -1) { // Ordering conflict
 | |
|         this.modules.splice(index, 1)
 | |
|         j--
 | |
|         index = -1
 | |
|       }
 | |
|       if (index == -1) {
 | |
|         this.modules.splice(j++, 0, mod)
 | |
|         if (sheet) for (let k = 0; k < mod.rules.length; k++)
 | |
|           sheet.insertRule(mod.rules[k], pos++)
 | |
|       } else {
 | |
|         while (j < index) pos += this.modules[j++].rules.length
 | |
|         pos += mod.rules.length
 | |
|         j++
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     if (!sheet) {
 | |
|       let text = ""
 | |
|       for (let i = 0; i < this.modules.length; i++)
 | |
|         text += this.modules[i].getRules() + "\n"
 | |
|       this.styleTag.textContent = text
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   setNonce(nonce) {
 | |
|     if (this.styleTag && this.styleTag.getAttribute("nonce") != nonce)
 | |
|       this.styleTag.setAttribute("nonce", nonce)
 | |
|   }
 | |
| }
 | |
| 
 | |
| // Style::Object<union<Style,string>>
 | |
| //
 | |
| // A style is an object that, in the simple case, maps CSS property
 | |
| // names to strings holding their values, as in `{color: "red",
 | |
| // fontWeight: "bold"}`. The property names can be given in
 | |
| // camel-case—the library will insert a dash before capital letters
 | |
| // when converting them to CSS.
 | |
| //
 | |
| // If you include an underscore in a property name, it and everything
 | |
| // after it will be removed from the output, which can be useful when
 | |
| // providing a property multiple times, for browser compatibility
 | |
| // reasons.
 | |
| //
 | |
| // A property in a style object can also be a sub-selector, which
 | |
| // extends the current context to add a pseudo-selector or a child
 | |
| // selector. Such a property should contain a `&` character, which
 | |
| // will be replaced by the current selector. For example `{"&:before":
 | |
| // {content: '"hi"'}}`. Sub-selectors and regular properties can
 | |
| // freely be mixed in a given object. Any property containing a `&` is
 | |
| // assumed to be a sub-selector.
 | |
| //
 | |
| // Finally, a property can specify an @-block to be wrapped around the
 | |
| // styles defined inside the object that's the property's value. For
 | |
| // example to create a media query you can do `{"@media screen and
 | |
| // (min-width: 400px)": {...}}`.
 | |
| 
 | |
| 
 | |
| /***/ })
 | |
| 
 | |
| }]);
 | |
| //# sourceMappingURL=9619.72d0af35a1e6e3c624d7.js.map?v=72d0af35a1e6e3c624d7
 |