1654 lines
		
	
	
	
		
			52 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			1654 lines
		
	
	
	
		
			52 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|   | // copied from js-beautify/js/lib/beautify-css.js
 | ||
|  | // version: 1.14.7
 | ||
|  | /* AUTO-GENERATED. DO NOT MODIFY. */ | ||
|  | /* | ||
|  | 
 | ||
|  |   The MIT License (MIT) | ||
|  | 
 | ||
|  |   Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. | ||
|  | 
 | ||
|  |   Permission is hereby granted, free of charge, to any person | ||
|  |   obtaining a copy of this software and associated documentation files | ||
|  |   (the "Software"), to deal in the Software without restriction, | ||
|  |   including without limitation the rights to use, copy, modify, merge, | ||
|  |   publish, distribute, sublicense, and/or sell copies of the Software, | ||
|  |   and to permit persons to whom the Software is furnished to do so, | ||
|  |   subject to the following conditions: | ||
|  | 
 | ||
|  |   The above copyright notice and this permission notice shall be | ||
|  |   included in all copies or substantial portions of the Software. | ||
|  | 
 | ||
|  |   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
|  |   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||
|  |   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
|  |   NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS | ||
|  |   BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN | ||
|  |   ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | ||
|  |   CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
|  |   SOFTWARE. | ||
|  | 
 | ||
|  | 
 | ||
|  |  CSS Beautifier | ||
|  | --------------- | ||
|  | 
 | ||
|  |     Written by Harutyun Amirjanyan, (amirjanyan@gmail.com) | ||
|  | 
 | ||
|  |     Based on code initially developed by: Einar Lielmanis, <einar@beautifier.io> | ||
|  |         https://beautifier.io/
 | ||
|  | 
 | ||
|  |     Usage: | ||
|  |         css_beautify(source_text); | ||
|  |         css_beautify(source_text, options); | ||
|  | 
 | ||
|  |     The options are (default in brackets): | ||
|  |         indent_size (4)                         — indentation size, | ||
|  |         indent_char (space)                     — character to indent with, | ||
|  |         selector_separator_newline (true)       - separate selectors with newline or | ||
|  |                                                   not (e.g. "a,\nbr" or "a, br") | ||
|  |         end_with_newline (false)                - end with a newline | ||
|  |         newline_between_rules (true)            - add a new line after every css rule | ||
|  |         space_around_selector_separator (false) - ensure space around selector separators: | ||
|  |                                                   '>', '+', '~' (e.g. "a>b" -> "a > b") | ||
|  |     e.g | ||
|  | 
 | ||
|  |     css_beautify(css_source_text, { | ||
|  |       'indent_size': 1, | ||
|  |       'indent_char': '\t', | ||
|  |       'selector_separator': ' ', | ||
|  |       'end_with_newline': false, | ||
|  |       'newline_between_rules': true, | ||
|  |       'space_around_selector_separator': true | ||
|  |     }); | ||
|  | */ | ||
|  | 
 | ||
|  | // http://www.w3.org/TR/CSS21/syndata.html#tokenization
 | ||
|  | // http://www.w3.org/TR/css3-syntax/
 | ||
|  | 
 | ||
|  | var legacy_beautify_css; | ||
|  | /******/ (function() { // webpackBootstrap
 | ||
|  | /******/ 	"use strict"; | ||
|  | /******/ 	var __webpack_modules__ = ([ | ||
|  | /* 0 */, | ||
|  | /* 1 */, | ||
|  | /* 2 */ | ||
|  | /***/ (function(module) { | ||
|  | 
 | ||
|  | /*jshint node:true */ | ||
|  | /* | ||
|  |   The MIT License (MIT) | ||
|  | 
 | ||
|  |   Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. | ||
|  | 
 | ||
|  |   Permission is hereby granted, free of charge, to any person | ||
|  |   obtaining a copy of this software and associated documentation files | ||
|  |   (the "Software"), to deal in the Software without restriction, | ||
|  |   including without limitation the rights to use, copy, modify, merge, | ||
|  |   publish, distribute, sublicense, and/or sell copies of the Software, | ||
|  |   and to permit persons to whom the Software is furnished to do so, | ||
|  |   subject to the following conditions: | ||
|  | 
 | ||
|  |   The above copyright notice and this permission notice shall be | ||
|  |   included in all copies or substantial portions of the Software. | ||
|  | 
 | ||
|  |   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
|  |   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||
|  |   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
|  |   NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS | ||
|  |   BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN | ||
|  |   ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | ||
|  |   CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
|  |   SOFTWARE. | ||
|  | */ | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | function OutputLine(parent) { | ||
|  |   this.__parent = parent; | ||
|  |   this.__character_count = 0; | ||
|  |   // use indent_count as a marker for this.__lines that have preserved indentation
 | ||
|  |   this.__indent_count = -1; | ||
|  |   this.__alignment_count = 0; | ||
|  |   this.__wrap_point_index = 0; | ||
|  |   this.__wrap_point_character_count = 0; | ||
|  |   this.__wrap_point_indent_count = -1; | ||
|  |   this.__wrap_point_alignment_count = 0; | ||
|  | 
 | ||
|  |   this.__items = []; | ||
|  | } | ||
|  | 
 | ||
|  | OutputLine.prototype.clone_empty = function() { | ||
|  |   var line = new OutputLine(this.__parent); | ||
|  |   line.set_indent(this.__indent_count, this.__alignment_count); | ||
|  |   return line; | ||
|  | }; | ||
|  | 
 | ||
|  | OutputLine.prototype.item = function(index) { | ||
|  |   if (index < 0) { | ||
|  |     return this.__items[this.__items.length + index]; | ||
|  |   } else { | ||
|  |     return this.__items[index]; | ||
|  |   } | ||
|  | }; | ||
|  | 
 | ||
|  | OutputLine.prototype.has_match = function(pattern) { | ||
|  |   for (var lastCheckedOutput = this.__items.length - 1; lastCheckedOutput >= 0; lastCheckedOutput--) { | ||
|  |     if (this.__items[lastCheckedOutput].match(pattern)) { | ||
|  |       return true; | ||
|  |     } | ||
|  |   } | ||
|  |   return false; | ||
|  | }; | ||
|  | 
 | ||
|  | OutputLine.prototype.set_indent = function(indent, alignment) { | ||
|  |   if (this.is_empty()) { | ||
|  |     this.__indent_count = indent || 0; | ||
|  |     this.__alignment_count = alignment || 0; | ||
|  |     this.__character_count = this.__parent.get_indent_size(this.__indent_count, this.__alignment_count); | ||
|  |   } | ||
|  | }; | ||
|  | 
 | ||
|  | OutputLine.prototype._set_wrap_point = function() { | ||
|  |   if (this.__parent.wrap_line_length) { | ||
|  |     this.__wrap_point_index = this.__items.length; | ||
|  |     this.__wrap_point_character_count = this.__character_count; | ||
|  |     this.__wrap_point_indent_count = this.__parent.next_line.__indent_count; | ||
|  |     this.__wrap_point_alignment_count = this.__parent.next_line.__alignment_count; | ||
|  |   } | ||
|  | }; | ||
|  | 
 | ||
|  | OutputLine.prototype._should_wrap = function() { | ||
|  |   return this.__wrap_point_index && | ||
|  |     this.__character_count > this.__parent.wrap_line_length && | ||
|  |     this.__wrap_point_character_count > this.__parent.next_line.__character_count; | ||
|  | }; | ||
|  | 
 | ||
|  | OutputLine.prototype._allow_wrap = function() { | ||
|  |   if (this._should_wrap()) { | ||
|  |     this.__parent.add_new_line(); | ||
|  |     var next = this.__parent.current_line; | ||
|  |     next.set_indent(this.__wrap_point_indent_count, this.__wrap_point_alignment_count); | ||
|  |     next.__items = this.__items.slice(this.__wrap_point_index); | ||
|  |     this.__items = this.__items.slice(0, this.__wrap_point_index); | ||
|  | 
 | ||
|  |     next.__character_count += this.__character_count - this.__wrap_point_character_count; | ||
|  |     this.__character_count = this.__wrap_point_character_count; | ||
|  | 
 | ||
|  |     if (next.__items[0] === " ") { | ||
|  |       next.__items.splice(0, 1); | ||
|  |       next.__character_count -= 1; | ||
|  |     } | ||
|  |     return true; | ||
|  |   } | ||
|  |   return false; | ||
|  | }; | ||
|  | 
 | ||
|  | OutputLine.prototype.is_empty = function() { | ||
|  |   return this.__items.length === 0; | ||
|  | }; | ||
|  | 
 | ||
|  | OutputLine.prototype.last = function() { | ||
|  |   if (!this.is_empty()) { | ||
|  |     return this.__items[this.__items.length - 1]; | ||
|  |   } else { | ||
|  |     return null; | ||
|  |   } | ||
|  | }; | ||
|  | 
 | ||
|  | OutputLine.prototype.push = function(item) { | ||
|  |   this.__items.push(item); | ||
|  |   var last_newline_index = item.lastIndexOf('\n'); | ||
|  |   if (last_newline_index !== -1) { | ||
|  |     this.__character_count = item.length - last_newline_index; | ||
|  |   } else { | ||
|  |     this.__character_count += item.length; | ||
|  |   } | ||
|  | }; | ||
|  | 
 | ||
|  | OutputLine.prototype.pop = function() { | ||
|  |   var item = null; | ||
|  |   if (!this.is_empty()) { | ||
|  |     item = this.__items.pop(); | ||
|  |     this.__character_count -= item.length; | ||
|  |   } | ||
|  |   return item; | ||
|  | }; | ||
|  | 
 | ||
|  | 
 | ||
|  | OutputLine.prototype._remove_indent = function() { | ||
|  |   if (this.__indent_count > 0) { | ||
|  |     this.__indent_count -= 1; | ||
|  |     this.__character_count -= this.__parent.indent_size; | ||
|  |   } | ||
|  | }; | ||
|  | 
 | ||
|  | OutputLine.prototype._remove_wrap_indent = function() { | ||
|  |   if (this.__wrap_point_indent_count > 0) { | ||
|  |     this.__wrap_point_indent_count -= 1; | ||
|  |   } | ||
|  | }; | ||
|  | OutputLine.prototype.trim = function() { | ||
|  |   while (this.last() === ' ') { | ||
|  |     this.__items.pop(); | ||
|  |     this.__character_count -= 1; | ||
|  |   } | ||
|  | }; | ||
|  | 
 | ||
|  | OutputLine.prototype.toString = function() { | ||
|  |   var result = ''; | ||
|  |   if (this.is_empty()) { | ||
|  |     if (this.__parent.indent_empty_lines) { | ||
|  |       result = this.__parent.get_indent_string(this.__indent_count); | ||
|  |     } | ||
|  |   } else { | ||
|  |     result = this.__parent.get_indent_string(this.__indent_count, this.__alignment_count); | ||
|  |     result += this.__items.join(''); | ||
|  |   } | ||
|  |   return result; | ||
|  | }; | ||
|  | 
 | ||
|  | function IndentStringCache(options, baseIndentString) { | ||
|  |   this.__cache = ['']; | ||
|  |   this.__indent_size = options.indent_size; | ||
|  |   this.__indent_string = options.indent_char; | ||
|  |   if (!options.indent_with_tabs) { | ||
|  |     this.__indent_string = new Array(options.indent_size + 1).join(options.indent_char); | ||
|  |   } | ||
|  | 
 | ||
|  |   // Set to null to continue support for auto detection of base indent
 | ||
|  |   baseIndentString = baseIndentString || ''; | ||
|  |   if (options.indent_level > 0) { | ||
|  |     baseIndentString = new Array(options.indent_level + 1).join(this.__indent_string); | ||
|  |   } | ||
|  | 
 | ||
|  |   this.__base_string = baseIndentString; | ||
|  |   this.__base_string_length = baseIndentString.length; | ||
|  | } | ||
|  | 
 | ||
|  | IndentStringCache.prototype.get_indent_size = function(indent, column) { | ||
|  |   var result = this.__base_string_length; | ||
|  |   column = column || 0; | ||
|  |   if (indent < 0) { | ||
|  |     result = 0; | ||
|  |   } | ||
|  |   result += indent * this.__indent_size; | ||
|  |   result += column; | ||
|  |   return result; | ||
|  | }; | ||
|  | 
 | ||
|  | IndentStringCache.prototype.get_indent_string = function(indent_level, column) { | ||
|  |   var result = this.__base_string; | ||
|  |   column = column || 0; | ||
|  |   if (indent_level < 0) { | ||
|  |     indent_level = 0; | ||
|  |     result = ''; | ||
|  |   } | ||
|  |   column += indent_level * this.__indent_size; | ||
|  |   this.__ensure_cache(column); | ||
|  |   result += this.__cache[column]; | ||
|  |   return result; | ||
|  | }; | ||
|  | 
 | ||
|  | IndentStringCache.prototype.__ensure_cache = function(column) { | ||
|  |   while (column >= this.__cache.length) { | ||
|  |     this.__add_column(); | ||
|  |   } | ||
|  | }; | ||
|  | 
 | ||
|  | IndentStringCache.prototype.__add_column = function() { | ||
|  |   var column = this.__cache.length; | ||
|  |   var indent = 0; | ||
|  |   var result = ''; | ||
|  |   if (this.__indent_size && column >= this.__indent_size) { | ||
|  |     indent = Math.floor(column / this.__indent_size); | ||
|  |     column -= indent * this.__indent_size; | ||
|  |     result = new Array(indent + 1).join(this.__indent_string); | ||
|  |   } | ||
|  |   if (column) { | ||
|  |     result += new Array(column + 1).join(' '); | ||
|  |   } | ||
|  | 
 | ||
|  |   this.__cache.push(result); | ||
|  | }; | ||
|  | 
 | ||
|  | function Output(options, baseIndentString) { | ||
|  |   this.__indent_cache = new IndentStringCache(options, baseIndentString); | ||
|  |   this.raw = false; | ||
|  |   this._end_with_newline = options.end_with_newline; | ||
|  |   this.indent_size = options.indent_size; | ||
|  |   this.wrap_line_length = options.wrap_line_length; | ||
|  |   this.indent_empty_lines = options.indent_empty_lines; | ||
|  |   this.__lines = []; | ||
|  |   this.previous_line = null; | ||
|  |   this.current_line = null; | ||
|  |   this.next_line = new OutputLine(this); | ||
|  |   this.space_before_token = false; | ||
|  |   this.non_breaking_space = false; | ||
|  |   this.previous_token_wrapped = false; | ||
|  |   // initialize
 | ||
|  |   this.__add_outputline(); | ||
|  | } | ||
|  | 
 | ||
|  | Output.prototype.__add_outputline = function() { | ||
|  |   this.previous_line = this.current_line; | ||
|  |   this.current_line = this.next_line.clone_empty(); | ||
|  |   this.__lines.push(this.current_line); | ||
|  | }; | ||
|  | 
 | ||
|  | Output.prototype.get_line_number = function() { | ||
|  |   return this.__lines.length; | ||
|  | }; | ||
|  | 
 | ||
|  | Output.prototype.get_indent_string = function(indent, column) { | ||
|  |   return this.__indent_cache.get_indent_string(indent, column); | ||
|  | }; | ||
|  | 
 | ||
|  | Output.prototype.get_indent_size = function(indent, column) { | ||
|  |   return this.__indent_cache.get_indent_size(indent, column); | ||
|  | }; | ||
|  | 
 | ||
|  | Output.prototype.is_empty = function() { | ||
|  |   return !this.previous_line && this.current_line.is_empty(); | ||
|  | }; | ||
|  | 
 | ||
|  | Output.prototype.add_new_line = function(force_newline) { | ||
|  |   // never newline at the start of file
 | ||
|  |   // otherwise, newline only if we didn't just add one or we're forced
 | ||
|  |   if (this.is_empty() || | ||
|  |     (!force_newline && this.just_added_newline())) { | ||
|  |     return false; | ||
|  |   } | ||
|  | 
 | ||
|  |   // if raw output is enabled, don't print additional newlines,
 | ||
|  |   // but still return True as though you had
 | ||
|  |   if (!this.raw) { | ||
|  |     this.__add_outputline(); | ||
|  |   } | ||
|  |   return true; | ||
|  | }; | ||
|  | 
 | ||
|  | Output.prototype.get_code = function(eol) { | ||
|  |   this.trim(true); | ||
|  | 
 | ||
|  |   // handle some edge cases where the last tokens
 | ||
|  |   // has text that ends with newline(s)
 | ||
|  |   var last_item = this.current_line.pop(); | ||
|  |   if (last_item) { | ||
|  |     if (last_item[last_item.length - 1] === '\n') { | ||
|  |       last_item = last_item.replace(/\n+$/g, ''); | ||
|  |     } | ||
|  |     this.current_line.push(last_item); | ||
|  |   } | ||
|  | 
 | ||
|  |   if (this._end_with_newline) { | ||
|  |     this.__add_outputline(); | ||
|  |   } | ||
|  | 
 | ||
|  |   var sweet_code = this.__lines.join('\n'); | ||
|  | 
 | ||
|  |   if (eol !== '\n') { | ||
|  |     sweet_code = sweet_code.replace(/[\n]/g, eol); | ||
|  |   } | ||
|  |   return sweet_code; | ||
|  | }; | ||
|  | 
 | ||
|  | Output.prototype.set_wrap_point = function() { | ||
|  |   this.current_line._set_wrap_point(); | ||
|  | }; | ||
|  | 
 | ||
|  | Output.prototype.set_indent = function(indent, alignment) { | ||
|  |   indent = indent || 0; | ||
|  |   alignment = alignment || 0; | ||
|  | 
 | ||
|  |   // Next line stores alignment values
 | ||
|  |   this.next_line.set_indent(indent, alignment); | ||
|  | 
 | ||
|  |   // Never indent your first output indent at the start of the file
 | ||
|  |   if (this.__lines.length > 1) { | ||
|  |     this.current_line.set_indent(indent, alignment); | ||
|  |     return true; | ||
|  |   } | ||
|  | 
 | ||
|  |   this.current_line.set_indent(); | ||
|  |   return false; | ||
|  | }; | ||
|  | 
 | ||
|  | Output.prototype.add_raw_token = function(token) { | ||
|  |   for (var x = 0; x < token.newlines; x++) { | ||
|  |     this.__add_outputline(); | ||
|  |   } | ||
|  |   this.current_line.set_indent(-1); | ||
|  |   this.current_line.push(token.whitespace_before); | ||
|  |   this.current_line.push(token.text); | ||
|  |   this.space_before_token = false; | ||
|  |   this.non_breaking_space = false; | ||
|  |   this.previous_token_wrapped = false; | ||
|  | }; | ||
|  | 
 | ||
|  | Output.prototype.add_token = function(printable_token) { | ||
|  |   this.__add_space_before_token(); | ||
|  |   this.current_line.push(printable_token); | ||
|  |   this.space_before_token = false; | ||
|  |   this.non_breaking_space = false; | ||
|  |   this.previous_token_wrapped = this.current_line._allow_wrap(); | ||
|  | }; | ||
|  | 
 | ||
|  | Output.prototype.__add_space_before_token = function() { | ||
|  |   if (this.space_before_token && !this.just_added_newline()) { | ||
|  |     if (!this.non_breaking_space) { | ||
|  |       this.set_wrap_point(); | ||
|  |     } | ||
|  |     this.current_line.push(' '); | ||
|  |   } | ||
|  | }; | ||
|  | 
 | ||
|  | Output.prototype.remove_indent = function(index) { | ||
|  |   var output_length = this.__lines.length; | ||
|  |   while (index < output_length) { | ||
|  |     this.__lines[index]._remove_indent(); | ||
|  |     index++; | ||
|  |   } | ||
|  |   this.current_line._remove_wrap_indent(); | ||
|  | }; | ||
|  | 
 | ||
|  | Output.prototype.trim = function(eat_newlines) { | ||
|  |   eat_newlines = (eat_newlines === undefined) ? false : eat_newlines; | ||
|  | 
 | ||
|  |   this.current_line.trim(); | ||
|  | 
 | ||
|  |   while (eat_newlines && this.__lines.length > 1 && | ||
|  |     this.current_line.is_empty()) { | ||
|  |     this.__lines.pop(); | ||
|  |     this.current_line = this.__lines[this.__lines.length - 1]; | ||
|  |     this.current_line.trim(); | ||
|  |   } | ||
|  | 
 | ||
|  |   this.previous_line = this.__lines.length > 1 ? | ||
|  |     this.__lines[this.__lines.length - 2] : null; | ||
|  | }; | ||
|  | 
 | ||
|  | Output.prototype.just_added_newline = function() { | ||
|  |   return this.current_line.is_empty(); | ||
|  | }; | ||
|  | 
 | ||
|  | Output.prototype.just_added_blankline = function() { | ||
|  |   return this.is_empty() || | ||
|  |     (this.current_line.is_empty() && this.previous_line.is_empty()); | ||
|  | }; | ||
|  | 
 | ||
|  | Output.prototype.ensure_empty_line_above = function(starts_with, ends_with) { | ||
|  |   var index = this.__lines.length - 2; | ||
|  |   while (index >= 0) { | ||
|  |     var potentialEmptyLine = this.__lines[index]; | ||
|  |     if (potentialEmptyLine.is_empty()) { | ||
|  |       break; | ||
|  |     } else if (potentialEmptyLine.item(0).indexOf(starts_with) !== 0 && | ||
|  |       potentialEmptyLine.item(-1) !== ends_with) { | ||
|  |       this.__lines.splice(index + 1, 0, new OutputLine(this)); | ||
|  |       this.previous_line = this.__lines[this.__lines.length - 2]; | ||
|  |       break; | ||
|  |     } | ||
|  |     index--; | ||
|  |   } | ||
|  | }; | ||
|  | 
 | ||
|  | module.exports.Output = Output; | ||
|  | 
 | ||
|  | 
 | ||
|  | /***/ }), | ||
|  | /* 3 */, | ||
|  | /* 4 */, | ||
|  | /* 5 */, | ||
|  | /* 6 */ | ||
|  | /***/ (function(module) { | ||
|  | 
 | ||
|  | /*jshint node:true */ | ||
|  | /* | ||
|  | 
 | ||
|  |   The MIT License (MIT) | ||
|  | 
 | ||
|  |   Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. | ||
|  | 
 | ||
|  |   Permission is hereby granted, free of charge, to any person | ||
|  |   obtaining a copy of this software and associated documentation files | ||
|  |   (the "Software"), to deal in the Software without restriction, | ||
|  |   including without limitation the rights to use, copy, modify, merge, | ||
|  |   publish, distribute, sublicense, and/or sell copies of the Software, | ||
|  |   and to permit persons to whom the Software is furnished to do so, | ||
|  |   subject to the following conditions: | ||
|  | 
 | ||
|  |   The above copyright notice and this permission notice shall be | ||
|  |   included in all copies or substantial portions of the Software. | ||
|  | 
 | ||
|  |   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
|  |   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||
|  |   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
|  |   NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS | ||
|  |   BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN | ||
|  |   ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | ||
|  |   CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
|  |   SOFTWARE. | ||
|  | */ | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | function Options(options, merge_child_field) { | ||
|  |   this.raw_options = _mergeOpts(options, merge_child_field); | ||
|  | 
 | ||
|  |   // Support passing the source text back with no change
 | ||
|  |   this.disabled = this._get_boolean('disabled'); | ||
|  | 
 | ||
|  |   this.eol = this._get_characters('eol', 'auto'); | ||
|  |   this.end_with_newline = this._get_boolean('end_with_newline'); | ||
|  |   this.indent_size = this._get_number('indent_size', 4); | ||
|  |   this.indent_char = this._get_characters('indent_char', ' '); | ||
|  |   this.indent_level = this._get_number('indent_level'); | ||
|  | 
 | ||
|  |   this.preserve_newlines = this._get_boolean('preserve_newlines', true); | ||
|  |   this.max_preserve_newlines = this._get_number('max_preserve_newlines', 32786); | ||
|  |   if (!this.preserve_newlines) { | ||
|  |     this.max_preserve_newlines = 0; | ||
|  |   } | ||
|  | 
 | ||
|  |   this.indent_with_tabs = this._get_boolean('indent_with_tabs', this.indent_char === '\t'); | ||
|  |   if (this.indent_with_tabs) { | ||
|  |     this.indent_char = '\t'; | ||
|  | 
 | ||
|  |     // indent_size behavior changed after 1.8.6
 | ||
|  |     // It used to be that indent_size would be
 | ||
|  |     // set to 1 for indent_with_tabs. That is no longer needed and
 | ||
|  |     // actually doesn't make sense - why not use spaces? Further,
 | ||
|  |     // that might produce unexpected behavior - tabs being used
 | ||
|  |     // for single-column alignment. So, when indent_with_tabs is true
 | ||
|  |     // and indent_size is 1, reset indent_size to 4.
 | ||
|  |     if (this.indent_size === 1) { | ||
|  |       this.indent_size = 4; | ||
|  |     } | ||
|  |   } | ||
|  | 
 | ||
|  |   // Backwards compat with 1.3.x
 | ||
|  |   this.wrap_line_length = this._get_number('wrap_line_length', this._get_number('max_char')); | ||
|  | 
 | ||
|  |   this.indent_empty_lines = this._get_boolean('indent_empty_lines'); | ||
|  | 
 | ||
|  |   // valid templating languages ['django', 'erb', 'handlebars', 'php', 'smarty']
 | ||
|  |   // For now, 'auto' = all off for javascript, all on for html (and inline javascript).
 | ||
|  |   // other values ignored
 | ||
|  |   this.templating = this._get_selection_list('templating', ['auto', 'none', 'django', 'erb', 'handlebars', 'php', 'smarty'], ['auto']); | ||
|  | } | ||
|  | 
 | ||
|  | Options.prototype._get_array = function(name, default_value) { | ||
|  |   var option_value = this.raw_options[name]; | ||
|  |   var result = default_value || []; | ||
|  |   if (typeof option_value === 'object') { | ||
|  |     if (option_value !== null && typeof option_value.concat === 'function') { | ||
|  |       result = option_value.concat(); | ||
|  |     } | ||
|  |   } else if (typeof option_value === 'string') { | ||
|  |     result = option_value.split(/[^a-zA-Z0-9_\/\-]+/); | ||
|  |   } | ||
|  |   return result; | ||
|  | }; | ||
|  | 
 | ||
|  | Options.prototype._get_boolean = function(name, default_value) { | ||
|  |   var option_value = this.raw_options[name]; | ||
|  |   var result = option_value === undefined ? !!default_value : !!option_value; | ||
|  |   return result; | ||
|  | }; | ||
|  | 
 | ||
|  | Options.prototype._get_characters = function(name, default_value) { | ||
|  |   var option_value = this.raw_options[name]; | ||
|  |   var result = default_value || ''; | ||
|  |   if (typeof option_value === 'string') { | ||
|  |     result = option_value.replace(/\\r/, '\r').replace(/\\n/, '\n').replace(/\\t/, '\t'); | ||
|  |   } | ||
|  |   return result; | ||
|  | }; | ||
|  | 
 | ||
|  | Options.prototype._get_number = function(name, default_value) { | ||
|  |   var option_value = this.raw_options[name]; | ||
|  |   default_value = parseInt(default_value, 10); | ||
|  |   if (isNaN(default_value)) { | ||
|  |     default_value = 0; | ||
|  |   } | ||
|  |   var result = parseInt(option_value, 10); | ||
|  |   if (isNaN(result)) { | ||
|  |     result = default_value; | ||
|  |   } | ||
|  |   return result; | ||
|  | }; | ||
|  | 
 | ||
|  | Options.prototype._get_selection = function(name, selection_list, default_value) { | ||
|  |   var result = this._get_selection_list(name, selection_list, default_value); | ||
|  |   if (result.length !== 1) { | ||
|  |     throw new Error( | ||
|  |       "Invalid Option Value: The option '" + name + "' can only be one of the following values:\n" + | ||
|  |       selection_list + "\nYou passed in: '" + this.raw_options[name] + "'"); | ||
|  |   } | ||
|  | 
 | ||
|  |   return result[0]; | ||
|  | }; | ||
|  | 
 | ||
|  | 
 | ||
|  | Options.prototype._get_selection_list = function(name, selection_list, default_value) { | ||
|  |   if (!selection_list || selection_list.length === 0) { | ||
|  |     throw new Error("Selection list cannot be empty."); | ||
|  |   } | ||
|  | 
 | ||
|  |   default_value = default_value || [selection_list[0]]; | ||
|  |   if (!this._is_valid_selection(default_value, selection_list)) { | ||
|  |     throw new Error("Invalid Default Value!"); | ||
|  |   } | ||
|  | 
 | ||
|  |   var result = this._get_array(name, default_value); | ||
|  |   if (!this._is_valid_selection(result, selection_list)) { | ||
|  |     throw new Error( | ||
|  |       "Invalid Option Value: The option '" + name + "' can contain only the following values:\n" + | ||
|  |       selection_list + "\nYou passed in: '" + this.raw_options[name] + "'"); | ||
|  |   } | ||
|  | 
 | ||
|  |   return result; | ||
|  | }; | ||
|  | 
 | ||
|  | Options.prototype._is_valid_selection = function(result, selection_list) { | ||
|  |   return result.length && selection_list.length && | ||
|  |     !result.some(function(item) { return selection_list.indexOf(item) === -1; }); | ||
|  | }; | ||
|  | 
 | ||
|  | 
 | ||
|  | // merges child options up with the parent options object
 | ||
|  | // Example: obj = {a: 1, b: {a: 2}}
 | ||
|  | //          mergeOpts(obj, 'b')
 | ||
|  | //
 | ||
|  | //          Returns: {a: 2}
 | ||
|  | function _mergeOpts(allOptions, childFieldName) { | ||
|  |   var finalOpts = {}; | ||
|  |   allOptions = _normalizeOpts(allOptions); | ||
|  |   var name; | ||
|  | 
 | ||
|  |   for (name in allOptions) { | ||
|  |     if (name !== childFieldName) { | ||
|  |       finalOpts[name] = allOptions[name]; | ||
|  |     } | ||
|  |   } | ||
|  | 
 | ||
|  |   //merge in the per type settings for the childFieldName
 | ||
|  |   if (childFieldName && allOptions[childFieldName]) { | ||
|  |     for (name in allOptions[childFieldName]) { | ||
|  |       finalOpts[name] = allOptions[childFieldName][name]; | ||
|  |     } | ||
|  |   } | ||
|  |   return finalOpts; | ||
|  | } | ||
|  | 
 | ||
|  | function _normalizeOpts(options) { | ||
|  |   var convertedOpts = {}; | ||
|  |   var key; | ||
|  | 
 | ||
|  |   for (key in options) { | ||
|  |     var newKey = key.replace(/-/g, "_"); | ||
|  |     convertedOpts[newKey] = options[key]; | ||
|  |   } | ||
|  |   return convertedOpts; | ||
|  | } | ||
|  | 
 | ||
|  | module.exports.Options = Options; | ||
|  | module.exports.normalizeOpts = _normalizeOpts; | ||
|  | module.exports.mergeOpts = _mergeOpts; | ||
|  | 
 | ||
|  | 
 | ||
|  | /***/ }), | ||
|  | /* 7 */, | ||
|  | /* 8 */ | ||
|  | /***/ (function(module) { | ||
|  | 
 | ||
|  | /*jshint node:true */ | ||
|  | /* | ||
|  | 
 | ||
|  |   The MIT License (MIT) | ||
|  | 
 | ||
|  |   Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. | ||
|  | 
 | ||
|  |   Permission is hereby granted, free of charge, to any person | ||
|  |   obtaining a copy of this software and associated documentation files | ||
|  |   (the "Software"), to deal in the Software without restriction, | ||
|  |   including without limitation the rights to use, copy, modify, merge, | ||
|  |   publish, distribute, sublicense, and/or sell copies of the Software, | ||
|  |   and to permit persons to whom the Software is furnished to do so, | ||
|  |   subject to the following conditions: | ||
|  | 
 | ||
|  |   The above copyright notice and this permission notice shall be | ||
|  |   included in all copies or substantial portions of the Software. | ||
|  | 
 | ||
|  |   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
|  |   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||
|  |   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
|  |   NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS | ||
|  |   BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN | ||
|  |   ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | ||
|  |   CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
|  |   SOFTWARE. | ||
|  | */ | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | var regexp_has_sticky = RegExp.prototype.hasOwnProperty('sticky'); | ||
|  | 
 | ||
|  | function InputScanner(input_string) { | ||
|  |   this.__input = input_string || ''; | ||
|  |   this.__input_length = this.__input.length; | ||
|  |   this.__position = 0; | ||
|  | } | ||
|  | 
 | ||
|  | InputScanner.prototype.restart = function() { | ||
|  |   this.__position = 0; | ||
|  | }; | ||
|  | 
 | ||
|  | InputScanner.prototype.back = function() { | ||
|  |   if (this.__position > 0) { | ||
|  |     this.__position -= 1; | ||
|  |   } | ||
|  | }; | ||
|  | 
 | ||
|  | InputScanner.prototype.hasNext = function() { | ||
|  |   return this.__position < this.__input_length; | ||
|  | }; | ||
|  | 
 | ||
|  | InputScanner.prototype.next = function() { | ||
|  |   var val = null; | ||
|  |   if (this.hasNext()) { | ||
|  |     val = this.__input.charAt(this.__position); | ||
|  |     this.__position += 1; | ||
|  |   } | ||
|  |   return val; | ||
|  | }; | ||
|  | 
 | ||
|  | InputScanner.prototype.peek = function(index) { | ||
|  |   var val = null; | ||
|  |   index = index || 0; | ||
|  |   index += this.__position; | ||
|  |   if (index >= 0 && index < this.__input_length) { | ||
|  |     val = this.__input.charAt(index); | ||
|  |   } | ||
|  |   return val; | ||
|  | }; | ||
|  | 
 | ||
|  | // This is a JavaScript only helper function (not in python)
 | ||
|  | // Javascript doesn't have a match method
 | ||
|  | // and not all implementation support "sticky" flag.
 | ||
|  | // If they do not support sticky then both this.match() and this.test() method
 | ||
|  | // must get the match and check the index of the match.
 | ||
|  | // If sticky is supported and set, this method will use it.
 | ||
|  | // Otherwise it will check that global is set, and fall back to the slower method.
 | ||
|  | InputScanner.prototype.__match = function(pattern, index) { | ||
|  |   pattern.lastIndex = index; | ||
|  |   var pattern_match = pattern.exec(this.__input); | ||
|  | 
 | ||
|  |   if (pattern_match && !(regexp_has_sticky && pattern.sticky)) { | ||
|  |     if (pattern_match.index !== index) { | ||
|  |       pattern_match = null; | ||
|  |     } | ||
|  |   } | ||
|  | 
 | ||
|  |   return pattern_match; | ||
|  | }; | ||
|  | 
 | ||
|  | InputScanner.prototype.test = function(pattern, index) { | ||
|  |   index = index || 0; | ||
|  |   index += this.__position; | ||
|  | 
 | ||
|  |   if (index >= 0 && index < this.__input_length) { | ||
|  |     return !!this.__match(pattern, index); | ||
|  |   } else { | ||
|  |     return false; | ||
|  |   } | ||
|  | }; | ||
|  | 
 | ||
|  | InputScanner.prototype.testChar = function(pattern, index) { | ||
|  |   // test one character regex match
 | ||
|  |   var val = this.peek(index); | ||
|  |   pattern.lastIndex = 0; | ||
|  |   return val !== null && pattern.test(val); | ||
|  | }; | ||
|  | 
 | ||
|  | InputScanner.prototype.match = function(pattern) { | ||
|  |   var pattern_match = this.__match(pattern, this.__position); | ||
|  |   if (pattern_match) { | ||
|  |     this.__position += pattern_match[0].length; | ||
|  |   } else { | ||
|  |     pattern_match = null; | ||
|  |   } | ||
|  |   return pattern_match; | ||
|  | }; | ||
|  | 
 | ||
|  | InputScanner.prototype.read = function(starting_pattern, until_pattern, until_after) { | ||
|  |   var val = ''; | ||
|  |   var match; | ||
|  |   if (starting_pattern) { | ||
|  |     match = this.match(starting_pattern); | ||
|  |     if (match) { | ||
|  |       val += match[0]; | ||
|  |     } | ||
|  |   } | ||
|  |   if (until_pattern && (match || !starting_pattern)) { | ||
|  |     val += this.readUntil(until_pattern, until_after); | ||
|  |   } | ||
|  |   return val; | ||
|  | }; | ||
|  | 
 | ||
|  | InputScanner.prototype.readUntil = function(pattern, until_after) { | ||
|  |   var val = ''; | ||
|  |   var match_index = this.__position; | ||
|  |   pattern.lastIndex = this.__position; | ||
|  |   var pattern_match = pattern.exec(this.__input); | ||
|  |   if (pattern_match) { | ||
|  |     match_index = pattern_match.index; | ||
|  |     if (until_after) { | ||
|  |       match_index += pattern_match[0].length; | ||
|  |     } | ||
|  |   } else { | ||
|  |     match_index = this.__input_length; | ||
|  |   } | ||
|  | 
 | ||
|  |   val = this.__input.substring(this.__position, match_index); | ||
|  |   this.__position = match_index; | ||
|  |   return val; | ||
|  | }; | ||
|  | 
 | ||
|  | InputScanner.prototype.readUntilAfter = function(pattern) { | ||
|  |   return this.readUntil(pattern, true); | ||
|  | }; | ||
|  | 
 | ||
|  | InputScanner.prototype.get_regexp = function(pattern, match_from) { | ||
|  |   var result = null; | ||
|  |   var flags = 'g'; | ||
|  |   if (match_from && regexp_has_sticky) { | ||
|  |     flags = 'y'; | ||
|  |   } | ||
|  |   // strings are converted to regexp
 | ||
|  |   if (typeof pattern === "string" && pattern !== '') { | ||
|  |     // result = new RegExp(pattern.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), flags);
 | ||
|  |     result = new RegExp(pattern, flags); | ||
|  |   } else if (pattern) { | ||
|  |     result = new RegExp(pattern.source, flags); | ||
|  |   } | ||
|  |   return result; | ||
|  | }; | ||
|  | 
 | ||
|  | InputScanner.prototype.get_literal_regexp = function(literal_string) { | ||
|  |   return RegExp(literal_string.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')); | ||
|  | }; | ||
|  | 
 | ||
|  | /* css beautifier legacy helpers */ | ||
|  | InputScanner.prototype.peekUntilAfter = function(pattern) { | ||
|  |   var start = this.__position; | ||
|  |   var val = this.readUntilAfter(pattern); | ||
|  |   this.__position = start; | ||
|  |   return val; | ||
|  | }; | ||
|  | 
 | ||
|  | InputScanner.prototype.lookBack = function(testVal) { | ||
|  |   var start = this.__position - 1; | ||
|  |   return start >= testVal.length && this.__input.substring(start - testVal.length, start) | ||
|  |     .toLowerCase() === testVal; | ||
|  | }; | ||
|  | 
 | ||
|  | module.exports.InputScanner = InputScanner; | ||
|  | 
 | ||
|  | 
 | ||
|  | /***/ }), | ||
|  | /* 9 */, | ||
|  | /* 10 */, | ||
|  | /* 11 */, | ||
|  | /* 12 */, | ||
|  | /* 13 */ | ||
|  | /***/ (function(module) { | ||
|  | 
 | ||
|  | /*jshint node:true */ | ||
|  | /* | ||
|  | 
 | ||
|  |   The MIT License (MIT) | ||
|  | 
 | ||
|  |   Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. | ||
|  | 
 | ||
|  |   Permission is hereby granted, free of charge, to any person | ||
|  |   obtaining a copy of this software and associated documentation files | ||
|  |   (the "Software"), to deal in the Software without restriction, | ||
|  |   including without limitation the rights to use, copy, modify, merge, | ||
|  |   publish, distribute, sublicense, and/or sell copies of the Software, | ||
|  |   and to permit persons to whom the Software is furnished to do so, | ||
|  |   subject to the following conditions: | ||
|  | 
 | ||
|  |   The above copyright notice and this permission notice shall be | ||
|  |   included in all copies or substantial portions of the Software. | ||
|  | 
 | ||
|  |   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
|  |   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||
|  |   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
|  |   NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS | ||
|  |   BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN | ||
|  |   ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | ||
|  |   CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
|  |   SOFTWARE. | ||
|  | */ | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | function Directives(start_block_pattern, end_block_pattern) { | ||
|  |   start_block_pattern = typeof start_block_pattern === 'string' ? start_block_pattern : start_block_pattern.source; | ||
|  |   end_block_pattern = typeof end_block_pattern === 'string' ? end_block_pattern : end_block_pattern.source; | ||
|  |   this.__directives_block_pattern = new RegExp(start_block_pattern + / beautify( \w+[:]\w+)+ /.source + end_block_pattern, 'g'); | ||
|  |   this.__directive_pattern = / (\w+)[:](\w+)/g; | ||
|  | 
 | ||
|  |   this.__directives_end_ignore_pattern = new RegExp(start_block_pattern + /\sbeautify\signore:end\s/.source + end_block_pattern, 'g'); | ||
|  | } | ||
|  | 
 | ||
|  | Directives.prototype.get_directives = function(text) { | ||
|  |   if (!text.match(this.__directives_block_pattern)) { | ||
|  |     return null; | ||
|  |   } | ||
|  | 
 | ||
|  |   var directives = {}; | ||
|  |   this.__directive_pattern.lastIndex = 0; | ||
|  |   var directive_match = this.__directive_pattern.exec(text); | ||
|  | 
 | ||
|  |   while (directive_match) { | ||
|  |     directives[directive_match[1]] = directive_match[2]; | ||
|  |     directive_match = this.__directive_pattern.exec(text); | ||
|  |   } | ||
|  | 
 | ||
|  |   return directives; | ||
|  | }; | ||
|  | 
 | ||
|  | Directives.prototype.readIgnored = function(input) { | ||
|  |   return input.readUntilAfter(this.__directives_end_ignore_pattern); | ||
|  | }; | ||
|  | 
 | ||
|  | 
 | ||
|  | module.exports.Directives = Directives; | ||
|  | 
 | ||
|  | 
 | ||
|  | /***/ }), | ||
|  | /* 14 */, | ||
|  | /* 15 */ | ||
|  | /***/ (function(module, __unused_webpack_exports, __webpack_require__) { | ||
|  | 
 | ||
|  | /*jshint node:true */ | ||
|  | /* | ||
|  | 
 | ||
|  |   The MIT License (MIT) | ||
|  | 
 | ||
|  |   Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. | ||
|  | 
 | ||
|  |   Permission is hereby granted, free of charge, to any person | ||
|  |   obtaining a copy of this software and associated documentation files | ||
|  |   (the "Software"), to deal in the Software without restriction, | ||
|  |   including without limitation the rights to use, copy, modify, merge, | ||
|  |   publish, distribute, sublicense, and/or sell copies of the Software, | ||
|  |   and to permit persons to whom the Software is furnished to do so, | ||
|  |   subject to the following conditions: | ||
|  | 
 | ||
|  |   The above copyright notice and this permission notice shall be | ||
|  |   included in all copies or substantial portions of the Software. | ||
|  | 
 | ||
|  |   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
|  |   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||
|  |   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
|  |   NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS | ||
|  |   BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN | ||
|  |   ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | ||
|  |   CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
|  |   SOFTWARE. | ||
|  | */ | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | var Beautifier = (__webpack_require__(16).Beautifier), | ||
|  |   Options = (__webpack_require__(17).Options); | ||
|  | 
 | ||
|  | function css_beautify(source_text, options) { | ||
|  |   var beautifier = new Beautifier(source_text, options); | ||
|  |   return beautifier.beautify(); | ||
|  | } | ||
|  | 
 | ||
|  | module.exports = css_beautify; | ||
|  | module.exports.defaultOptions = function() { | ||
|  |   return new Options(); | ||
|  | }; | ||
|  | 
 | ||
|  | 
 | ||
|  | /***/ }), | ||
|  | /* 16 */ | ||
|  | /***/ (function(module, __unused_webpack_exports, __webpack_require__) { | ||
|  | 
 | ||
|  | /*jshint node:true */ | ||
|  | /* | ||
|  | 
 | ||
|  |   The MIT License (MIT) | ||
|  | 
 | ||
|  |   Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. | ||
|  | 
 | ||
|  |   Permission is hereby granted, free of charge, to any person | ||
|  |   obtaining a copy of this software and associated documentation files | ||
|  |   (the "Software"), to deal in the Software without restriction, | ||
|  |   including without limitation the rights to use, copy, modify, merge, | ||
|  |   publish, distribute, sublicense, and/or sell copies of the Software, | ||
|  |   and to permit persons to whom the Software is furnished to do so, | ||
|  |   subject to the following conditions: | ||
|  | 
 | ||
|  |   The above copyright notice and this permission notice shall be | ||
|  |   included in all copies or substantial portions of the Software. | ||
|  | 
 | ||
|  |   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
|  |   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||
|  |   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
|  |   NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS | ||
|  |   BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN | ||
|  |   ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | ||
|  |   CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
|  |   SOFTWARE. | ||
|  | */ | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | var Options = (__webpack_require__(17).Options); | ||
|  | var Output = (__webpack_require__(2).Output); | ||
|  | var InputScanner = (__webpack_require__(8).InputScanner); | ||
|  | var Directives = (__webpack_require__(13).Directives); | ||
|  | 
 | ||
|  | var directives_core = new Directives(/\/\*/, /\*\//); | ||
|  | 
 | ||
|  | var lineBreak = /\r\n|[\r\n]/; | ||
|  | var allLineBreaks = /\r\n|[\r\n]/g; | ||
|  | 
 | ||
|  | // tokenizer
 | ||
|  | var whitespaceChar = /\s/; | ||
|  | var whitespacePattern = /(?:\s|\n)+/g; | ||
|  | var block_comment_pattern = /\/\*(?:[\s\S]*?)((?:\*\/)|$)/g; | ||
|  | var comment_pattern = /\/\/(?:[^\n\r\u2028\u2029]*)/g; | ||
|  | 
 | ||
|  | function Beautifier(source_text, options) { | ||
|  |   this._source_text = source_text || ''; | ||
|  |   // Allow the setting of language/file-type specific options
 | ||
|  |   // with inheritance of overall settings
 | ||
|  |   this._options = new Options(options); | ||
|  |   this._ch = null; | ||
|  |   this._input = null; | ||
|  | 
 | ||
|  |   // https://developer.mozilla.org/en-US/docs/Web/CSS/At-rule
 | ||
|  |   this.NESTED_AT_RULE = { | ||
|  |     "@page": true, | ||
|  |     "@font-face": true, | ||
|  |     "@keyframes": true, | ||
|  |     // also in CONDITIONAL_GROUP_RULE below
 | ||
|  |     "@media": true, | ||
|  |     "@supports": true, | ||
|  |     "@document": true | ||
|  |   }; | ||
|  |   this.CONDITIONAL_GROUP_RULE = { | ||
|  |     "@media": true, | ||
|  |     "@supports": true, | ||
|  |     "@document": true | ||
|  |   }; | ||
|  |   this.NON_SEMICOLON_NEWLINE_PROPERTY = [ | ||
|  |     "grid-template-areas", | ||
|  |     "grid-template" | ||
|  |   ]; | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | Beautifier.prototype.eatString = function(endChars) { | ||
|  |   var result = ''; | ||
|  |   this._ch = this._input.next(); | ||
|  |   while (this._ch) { | ||
|  |     result += this._ch; | ||
|  |     if (this._ch === "\\") { | ||
|  |       result += this._input.next(); | ||
|  |     } else if (endChars.indexOf(this._ch) !== -1 || this._ch === "\n") { | ||
|  |       break; | ||
|  |     } | ||
|  |     this._ch = this._input.next(); | ||
|  |   } | ||
|  |   return result; | ||
|  | }; | ||
|  | 
 | ||
|  | // Skips any white space in the source text from the current position.
 | ||
|  | // When allowAtLeastOneNewLine is true, will output new lines for each
 | ||
|  | // newline character found; if the user has preserve_newlines off, only
 | ||
|  | // the first newline will be output
 | ||
|  | Beautifier.prototype.eatWhitespace = function(allowAtLeastOneNewLine) { | ||
|  |   var result = whitespaceChar.test(this._input.peek()); | ||
|  |   var newline_count = 0; | ||
|  |   while (whitespaceChar.test(this._input.peek())) { | ||
|  |     this._ch = this._input.next(); | ||
|  |     if (allowAtLeastOneNewLine && this._ch === '\n') { | ||
|  |       if (newline_count === 0 || newline_count < this._options.max_preserve_newlines) { | ||
|  |         newline_count++; | ||
|  |         this._output.add_new_line(true); | ||
|  |       } | ||
|  |     } | ||
|  |   } | ||
|  |   return result; | ||
|  | }; | ||
|  | 
 | ||
|  | // Nested pseudo-class if we are insideRule
 | ||
|  | // and the next special character found opens
 | ||
|  | // a new block
 | ||
|  | Beautifier.prototype.foundNestedPseudoClass = function() { | ||
|  |   var openParen = 0; | ||
|  |   var i = 1; | ||
|  |   var ch = this._input.peek(i); | ||
|  |   while (ch) { | ||
|  |     if (ch === "{") { | ||
|  |       return true; | ||
|  |     } else if (ch === '(') { | ||
|  |       // pseudoclasses can contain ()
 | ||
|  |       openParen += 1; | ||
|  |     } else if (ch === ')') { | ||
|  |       if (openParen === 0) { | ||
|  |         return false; | ||
|  |       } | ||
|  |       openParen -= 1; | ||
|  |     } else if (ch === ";" || ch === "}") { | ||
|  |       return false; | ||
|  |     } | ||
|  |     i++; | ||
|  |     ch = this._input.peek(i); | ||
|  |   } | ||
|  |   return false; | ||
|  | }; | ||
|  | 
 | ||
|  | Beautifier.prototype.print_string = function(output_string) { | ||
|  |   this._output.set_indent(this._indentLevel); | ||
|  |   this._output.non_breaking_space = true; | ||
|  |   this._output.add_token(output_string); | ||
|  | }; | ||
|  | 
 | ||
|  | Beautifier.prototype.preserveSingleSpace = function(isAfterSpace) { | ||
|  |   if (isAfterSpace) { | ||
|  |     this._output.space_before_token = true; | ||
|  |   } | ||
|  | }; | ||
|  | 
 | ||
|  | Beautifier.prototype.indent = function() { | ||
|  |   this._indentLevel++; | ||
|  | }; | ||
|  | 
 | ||
|  | Beautifier.prototype.outdent = function() { | ||
|  |   if (this._indentLevel > 0) { | ||
|  |     this._indentLevel--; | ||
|  |   } | ||
|  | }; | ||
|  | 
 | ||
|  | /*_____________________--------------------_____________________*/ | ||
|  | 
 | ||
|  | Beautifier.prototype.beautify = function() { | ||
|  |   if (this._options.disabled) { | ||
|  |     return this._source_text; | ||
|  |   } | ||
|  | 
 | ||
|  |   var source_text = this._source_text; | ||
|  |   var eol = this._options.eol; | ||
|  |   if (eol === 'auto') { | ||
|  |     eol = '\n'; | ||
|  |     if (source_text && lineBreak.test(source_text || '')) { | ||
|  |       eol = source_text.match(lineBreak)[0]; | ||
|  |     } | ||
|  |   } | ||
|  | 
 | ||
|  | 
 | ||
|  |   // HACK: newline parsing inconsistent. This brute force normalizes the this._input.
 | ||
|  |   source_text = source_text.replace(allLineBreaks, '\n'); | ||
|  | 
 | ||
|  |   // reset
 | ||
|  |   var baseIndentString = source_text.match(/^[\t ]*/)[0]; | ||
|  | 
 | ||
|  |   this._output = new Output(this._options, baseIndentString); | ||
|  |   this._input = new InputScanner(source_text); | ||
|  |   this._indentLevel = 0; | ||
|  |   this._nestedLevel = 0; | ||
|  | 
 | ||
|  |   this._ch = null; | ||
|  |   var parenLevel = 0; | ||
|  | 
 | ||
|  |   var insideRule = false; | ||
|  |   // This is the value side of a property value pair (blue in the following ex)
 | ||
|  |   // label { content: blue }
 | ||
|  |   var insidePropertyValue = false; | ||
|  |   var enteringConditionalGroup = false; | ||
|  |   var insideAtExtend = false; | ||
|  |   var insideAtImport = false; | ||
|  |   var insideScssMap = false; | ||
|  |   var topCharacter = this._ch; | ||
|  |   var insideNonSemiColonValues = false; | ||
|  |   var whitespace; | ||
|  |   var isAfterSpace; | ||
|  |   var previous_ch; | ||
|  | 
 | ||
|  |   while (true) { | ||
|  |     whitespace = this._input.read(whitespacePattern); | ||
|  |     isAfterSpace = whitespace !== ''; | ||
|  |     previous_ch = topCharacter; | ||
|  |     this._ch = this._input.next(); | ||
|  |     if (this._ch === '\\' && this._input.hasNext()) { | ||
|  |       this._ch += this._input.next(); | ||
|  |     } | ||
|  |     topCharacter = this._ch; | ||
|  | 
 | ||
|  |     if (!this._ch) { | ||
|  |       break; | ||
|  |     } else if (this._ch === '/' && this._input.peek() === '*') { | ||
|  |       // /* css comment */
 | ||
|  |       // Always start block comments on a new line.
 | ||
|  |       // This handles scenarios where a block comment immediately
 | ||
|  |       // follows a property definition on the same line or where
 | ||
|  |       // minified code is being beautified.
 | ||
|  |       this._output.add_new_line(); | ||
|  |       this._input.back(); | ||
|  | 
 | ||
|  |       var comment = this._input.read(block_comment_pattern); | ||
|  | 
 | ||
|  |       // Handle ignore directive
 | ||
|  |       var directives = directives_core.get_directives(comment); | ||
|  |       if (directives && directives.ignore === 'start') { | ||
|  |         comment += directives_core.readIgnored(this._input); | ||
|  |       } | ||
|  | 
 | ||
|  |       this.print_string(comment); | ||
|  | 
 | ||
|  |       // Ensures any new lines following the comment are preserved
 | ||
|  |       this.eatWhitespace(true); | ||
|  | 
 | ||
|  |       // Block comments are followed by a new line so they don't
 | ||
|  |       // share a line with other properties
 | ||
|  |       this._output.add_new_line(); | ||
|  |     } else if (this._ch === '/' && this._input.peek() === '/') { | ||
|  |       // // single line comment
 | ||
|  |       // Preserves the space before a comment
 | ||
|  |       // on the same line as a rule
 | ||
|  |       this._output.space_before_token = true; | ||
|  |       this._input.back(); | ||
|  |       this.print_string(this._input.read(comment_pattern)); | ||
|  | 
 | ||
|  |       // Ensures any new lines following the comment are preserved
 | ||
|  |       this.eatWhitespace(true); | ||
|  |     } else if (this._ch === '@' || this._ch === '$') { | ||
|  |       this.preserveSingleSpace(isAfterSpace); | ||
|  | 
 | ||
|  |       // deal with less propery mixins @{...}
 | ||
|  |       if (this._input.peek() === '{') { | ||
|  |         this.print_string(this._ch + this.eatString('}')); | ||
|  |       } else { | ||
|  |         this.print_string(this._ch); | ||
|  | 
 | ||
|  |         // strip trailing space, if present, for hash property checks
 | ||
|  |         var variableOrRule = this._input.peekUntilAfter(/[: ,;{}()[\]\/='"]/g); | ||
|  | 
 | ||
|  |         if (variableOrRule.match(/[ :]$/)) { | ||
|  |           // we have a variable or pseudo-class, add it and insert one space before continuing
 | ||
|  |           variableOrRule = this.eatString(": ").replace(/\s$/, ''); | ||
|  |           this.print_string(variableOrRule); | ||
|  |           this._output.space_before_token = true; | ||
|  |         } | ||
|  | 
 | ||
|  |         variableOrRule = variableOrRule.replace(/\s$/, ''); | ||
|  | 
 | ||
|  |         if (variableOrRule === 'extend') { | ||
|  |           insideAtExtend = true; | ||
|  |         } else if (variableOrRule === 'import') { | ||
|  |           insideAtImport = true; | ||
|  |         } | ||
|  | 
 | ||
|  |         // might be a nesting at-rule
 | ||
|  |         if (variableOrRule in this.NESTED_AT_RULE) { | ||
|  |           this._nestedLevel += 1; | ||
|  |           if (variableOrRule in this.CONDITIONAL_GROUP_RULE) { | ||
|  |             enteringConditionalGroup = true; | ||
|  |           } | ||
|  |           // might be less variable
 | ||
|  |         } else if (!insideRule && parenLevel === 0 && variableOrRule.indexOf(':') !== -1) { | ||
|  |           insidePropertyValue = true; | ||
|  |           this.indent(); | ||
|  |         } | ||
|  |       } | ||
|  |     } else if (this._ch === '#' && this._input.peek() === '{') { | ||
|  |       this.preserveSingleSpace(isAfterSpace); | ||
|  |       this.print_string(this._ch + this.eatString('}')); | ||
|  |     } else if (this._ch === '{') { | ||
|  |       if (insidePropertyValue) { | ||
|  |         insidePropertyValue = false; | ||
|  |         this.outdent(); | ||
|  |       } | ||
|  | 
 | ||
|  |       // when entering conditional groups, only rulesets are allowed
 | ||
|  |       if (enteringConditionalGroup) { | ||
|  |         enteringConditionalGroup = false; | ||
|  |         insideRule = (this._indentLevel >= this._nestedLevel); | ||
|  |       } else { | ||
|  |         // otherwise, declarations are also allowed
 | ||
|  |         insideRule = (this._indentLevel >= this._nestedLevel - 1); | ||
|  |       } | ||
|  |       if (this._options.newline_between_rules && insideRule) { | ||
|  |         if (this._output.previous_line && this._output.previous_line.item(-1) !== '{') { | ||
|  |           this._output.ensure_empty_line_above('/', ','); | ||
|  |         } | ||
|  |       } | ||
|  | 
 | ||
|  |       this._output.space_before_token = true; | ||
|  | 
 | ||
|  |       // The difference in print_string and indent order is necessary to indent the '{' correctly
 | ||
|  |       if (this._options.brace_style === 'expand') { | ||
|  |         this._output.add_new_line(); | ||
|  |         this.print_string(this._ch); | ||
|  |         this.indent(); | ||
|  |         this._output.set_indent(this._indentLevel); | ||
|  |       } else { | ||
|  |         // inside mixin and first param is object
 | ||
|  |         if (previous_ch === '(') { | ||
|  |           this._output.space_before_token = false; | ||
|  |         } else if (previous_ch !== ',') { | ||
|  |           this.indent(); | ||
|  |         } | ||
|  |         this.print_string(this._ch); | ||
|  |       } | ||
|  | 
 | ||
|  |       this.eatWhitespace(true); | ||
|  |       this._output.add_new_line(); | ||
|  |     } else if (this._ch === '}') { | ||
|  |       this.outdent(); | ||
|  |       this._output.add_new_line(); | ||
|  |       if (previous_ch === '{') { | ||
|  |         this._output.trim(true); | ||
|  |       } | ||
|  |       insideAtImport = false; | ||
|  |       insideAtExtend = false; | ||
|  |       if (insidePropertyValue) { | ||
|  |         this.outdent(); | ||
|  |         insidePropertyValue = false; | ||
|  |       } | ||
|  |       this.print_string(this._ch); | ||
|  |       insideRule = false; | ||
|  |       if (this._nestedLevel) { | ||
|  |         this._nestedLevel--; | ||
|  |       } | ||
|  | 
 | ||
|  |       this.eatWhitespace(true); | ||
|  |       this._output.add_new_line(); | ||
|  | 
 | ||
|  |       if (this._options.newline_between_rules && !this._output.just_added_blankline()) { | ||
|  |         if (this._input.peek() !== '}') { | ||
|  |           this._output.add_new_line(true); | ||
|  |         } | ||
|  |       } | ||
|  |       if (this._input.peek() === ')') { | ||
|  |         this._output.trim(true); | ||
|  |         if (this._options.brace_style === "expand") { | ||
|  |           this._output.add_new_line(true); | ||
|  |         } | ||
|  |       } | ||
|  |     } else if (this._ch === ":") { | ||
|  | 
 | ||
|  |       for (var i = 0; i < this.NON_SEMICOLON_NEWLINE_PROPERTY.length; i++) { | ||
|  |         if (this._input.lookBack(this.NON_SEMICOLON_NEWLINE_PROPERTY[i])) { | ||
|  |           insideNonSemiColonValues = true; | ||
|  |           break; | ||
|  |         } | ||
|  |       } | ||
|  | 
 | ||
|  |       if ((insideRule || enteringConditionalGroup) && !(this._input.lookBack("&") || this.foundNestedPseudoClass()) && !this._input.lookBack("(") && !insideAtExtend && parenLevel === 0) { | ||
|  |         // 'property: value' delimiter
 | ||
|  |         // which could be in a conditional group query
 | ||
|  |         this.print_string(':'); | ||
|  |         if (!insidePropertyValue) { | ||
|  |           insidePropertyValue = true; | ||
|  |           this._output.space_before_token = true; | ||
|  |           this.eatWhitespace(true); | ||
|  |           this.indent(); | ||
|  |         } | ||
|  |       } else { | ||
|  |         // sass/less parent reference don't use a space
 | ||
|  |         // sass nested pseudo-class don't use a space
 | ||
|  | 
 | ||
|  |         // preserve space before pseudoclasses/pseudoelements, as it means "in any child"
 | ||
|  |         if (this._input.lookBack(" ")) { | ||
|  |           this._output.space_before_token = true; | ||
|  |         } | ||
|  |         if (this._input.peek() === ":") { | ||
|  |           // pseudo-element
 | ||
|  |           this._ch = this._input.next(); | ||
|  |           this.print_string("::"); | ||
|  |         } else { | ||
|  |           // pseudo-class
 | ||
|  |           this.print_string(':'); | ||
|  |         } | ||
|  |       } | ||
|  |     } else if (this._ch === '"' || this._ch === '\'') { | ||
|  |       var preserveQuoteSpace = previous_ch === '"' || previous_ch === '\''; | ||
|  |       this.preserveSingleSpace(preserveQuoteSpace || isAfterSpace); | ||
|  |       this.print_string(this._ch + this.eatString(this._ch)); | ||
|  |       this.eatWhitespace(true); | ||
|  |     } else if (this._ch === ';') { | ||
|  |       insideNonSemiColonValues = false; | ||
|  |       if (parenLevel === 0) { | ||
|  |         if (insidePropertyValue) { | ||
|  |           this.outdent(); | ||
|  |           insidePropertyValue = false; | ||
|  |         } | ||
|  |         insideAtExtend = false; | ||
|  |         insideAtImport = false; | ||
|  |         this.print_string(this._ch); | ||
|  |         this.eatWhitespace(true); | ||
|  | 
 | ||
|  |         // This maintains single line comments on the same
 | ||
|  |         // line. Block comments are also affected, but
 | ||
|  |         // a new line is always output before one inside
 | ||
|  |         // that section
 | ||
|  |         if (this._input.peek() !== '/') { | ||
|  |           this._output.add_new_line(); | ||
|  |         } | ||
|  |       } else { | ||
|  |         this.print_string(this._ch); | ||
|  |         this.eatWhitespace(true); | ||
|  |         this._output.space_before_token = true; | ||
|  |       } | ||
|  |     } else if (this._ch === '(') { // may be a url
 | ||
|  |       if (this._input.lookBack("url")) { | ||
|  |         this.print_string(this._ch); | ||
|  |         this.eatWhitespace(); | ||
|  |         parenLevel++; | ||
|  |         this.indent(); | ||
|  |         this._ch = this._input.next(); | ||
|  |         if (this._ch === ')' || this._ch === '"' || this._ch === '\'') { | ||
|  |           this._input.back(); | ||
|  |         } else if (this._ch) { | ||
|  |           this.print_string(this._ch + this.eatString(')')); | ||
|  |           if (parenLevel) { | ||
|  |             parenLevel--; | ||
|  |             this.outdent(); | ||
|  |           } | ||
|  |         } | ||
|  |       } else { | ||
|  |         var space_needed = false; | ||
|  |         if (this._input.lookBack("with")) { | ||
|  |           // look back is not an accurate solution, we need tokens to confirm without whitespaces
 | ||
|  |           space_needed = true; | ||
|  |         } | ||
|  |         this.preserveSingleSpace(isAfterSpace || space_needed); | ||
|  |         this.print_string(this._ch); | ||
|  | 
 | ||
|  |         // handle scss/sass map
 | ||
|  |         if (insidePropertyValue && previous_ch === "$" && this._options.selector_separator_newline) { | ||
|  |           this._output.add_new_line(); | ||
|  |           insideScssMap = true; | ||
|  |         } else { | ||
|  |           this.eatWhitespace(); | ||
|  |           parenLevel++; | ||
|  |           this.indent(); | ||
|  |         } | ||
|  |       } | ||
|  |     } else if (this._ch === ')') { | ||
|  |       if (parenLevel) { | ||
|  |         parenLevel--; | ||
|  |         this.outdent(); | ||
|  |       } | ||
|  |       if (insideScssMap && this._input.peek() === ";" && this._options.selector_separator_newline) { | ||
|  |         insideScssMap = false; | ||
|  |         this.outdent(); | ||
|  |         this._output.add_new_line(); | ||
|  |       } | ||
|  |       this.print_string(this._ch); | ||
|  |     } else if (this._ch === ',') { | ||
|  |       this.print_string(this._ch); | ||
|  |       this.eatWhitespace(true); | ||
|  |       if (this._options.selector_separator_newline && (!insidePropertyValue || insideScssMap) && parenLevel === 0 && !insideAtImport && !insideAtExtend) { | ||
|  |         this._output.add_new_line(); | ||
|  |       } else { | ||
|  |         this._output.space_before_token = true; | ||
|  |       } | ||
|  |     } else if ((this._ch === '>' || this._ch === '+' || this._ch === '~') && !insidePropertyValue && parenLevel === 0) { | ||
|  |       //handle combinator spacing
 | ||
|  |       if (this._options.space_around_combinator) { | ||
|  |         this._output.space_before_token = true; | ||
|  |         this.print_string(this._ch); | ||
|  |         this._output.space_before_token = true; | ||
|  |       } else { | ||
|  |         this.print_string(this._ch); | ||
|  |         this.eatWhitespace(); | ||
|  |         // squash extra whitespace
 | ||
|  |         if (this._ch && whitespaceChar.test(this._ch)) { | ||
|  |           this._ch = ''; | ||
|  |         } | ||
|  |       } | ||
|  |     } else if (this._ch === ']') { | ||
|  |       this.print_string(this._ch); | ||
|  |     } else if (this._ch === '[') { | ||
|  |       this.preserveSingleSpace(isAfterSpace); | ||
|  |       this.print_string(this._ch); | ||
|  |     } else if (this._ch === '=') { // no whitespace before or after
 | ||
|  |       this.eatWhitespace(); | ||
|  |       this.print_string('='); | ||
|  |       if (whitespaceChar.test(this._ch)) { | ||
|  |         this._ch = ''; | ||
|  |       } | ||
|  |     } else if (this._ch === '!' && !this._input.lookBack("\\")) { // !important
 | ||
|  |       this._output.space_before_token = true; | ||
|  |       this.print_string(this._ch); | ||
|  |     } else { | ||
|  |       var preserveAfterSpace = previous_ch === '"' || previous_ch === '\''; | ||
|  |       this.preserveSingleSpace(preserveAfterSpace || isAfterSpace); | ||
|  |       this.print_string(this._ch); | ||
|  | 
 | ||
|  |       if (!this._output.just_added_newline() && this._input.peek() === '\n' && insideNonSemiColonValues) { | ||
|  |         this._output.add_new_line(); | ||
|  |       } | ||
|  |     } | ||
|  |   } | ||
|  | 
 | ||
|  |   var sweetCode = this._output.get_code(eol); | ||
|  | 
 | ||
|  |   return sweetCode; | ||
|  | }; | ||
|  | 
 | ||
|  | module.exports.Beautifier = Beautifier; | ||
|  | 
 | ||
|  | 
 | ||
|  | /***/ }), | ||
|  | /* 17 */ | ||
|  | /***/ (function(module, __unused_webpack_exports, __webpack_require__) { | ||
|  | 
 | ||
|  | /*jshint node:true */ | ||
|  | /* | ||
|  | 
 | ||
|  |   The MIT License (MIT) | ||
|  | 
 | ||
|  |   Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. | ||
|  | 
 | ||
|  |   Permission is hereby granted, free of charge, to any person | ||
|  |   obtaining a copy of this software and associated documentation files | ||
|  |   (the "Software"), to deal in the Software without restriction, | ||
|  |   including without limitation the rights to use, copy, modify, merge, | ||
|  |   publish, distribute, sublicense, and/or sell copies of the Software, | ||
|  |   and to permit persons to whom the Software is furnished to do so, | ||
|  |   subject to the following conditions: | ||
|  | 
 | ||
|  |   The above copyright notice and this permission notice shall be | ||
|  |   included in all copies or substantial portions of the Software. | ||
|  | 
 | ||
|  |   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
|  |   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||
|  |   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
|  |   NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS | ||
|  |   BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN | ||
|  |   ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | ||
|  |   CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
|  |   SOFTWARE. | ||
|  | */ | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | var BaseOptions = (__webpack_require__(6).Options); | ||
|  | 
 | ||
|  | function Options(options) { | ||
|  |   BaseOptions.call(this, options, 'css'); | ||
|  | 
 | ||
|  |   this.selector_separator_newline = this._get_boolean('selector_separator_newline', true); | ||
|  |   this.newline_between_rules = this._get_boolean('newline_between_rules', true); | ||
|  |   var space_around_selector_separator = this._get_boolean('space_around_selector_separator'); | ||
|  |   this.space_around_combinator = this._get_boolean('space_around_combinator') || space_around_selector_separator; | ||
|  | 
 | ||
|  |   var brace_style_split = this._get_selection_list('brace_style', ['collapse', 'expand', 'end-expand', 'none', 'preserve-inline']); | ||
|  |   this.brace_style = 'collapse'; | ||
|  |   for (var bs = 0; bs < brace_style_split.length; bs++) { | ||
|  |     if (brace_style_split[bs] !== 'expand') { | ||
|  |       // default to collapse, as only collapse|expand is implemented for now
 | ||
|  |       this.brace_style = 'collapse'; | ||
|  |     } else { | ||
|  |       this.brace_style = brace_style_split[bs]; | ||
|  |     } | ||
|  |   } | ||
|  | } | ||
|  | Options.prototype = new BaseOptions(); | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | module.exports.Options = Options; | ||
|  | 
 | ||
|  | 
 | ||
|  | /***/ }) | ||
|  | /******/ 	]); | ||
|  | /************************************************************************/ | ||
|  | /******/ 	// The module cache
 | ||
|  | /******/ 	var __webpack_module_cache__ = {}; | ||
|  | /******/ 	 | ||
|  | /******/ 	// The require function
 | ||
|  | /******/ 	function __webpack_require__(moduleId) { | ||
|  | /******/ 		// Check if module is in cache
 | ||
|  | /******/ 		var cachedModule = __webpack_module_cache__[moduleId]; | ||
|  | /******/ 		if (cachedModule !== undefined) { | ||
|  | /******/ 			return cachedModule.exports; | ||
|  | /******/ 		} | ||
|  | /******/ 		// Create a new module (and put it into the cache)
 | ||
|  | /******/ 		var module = __webpack_module_cache__[moduleId] = { | ||
|  | /******/ 			// no module.id needed
 | ||
|  | /******/ 			// no module.loaded needed
 | ||
|  | /******/ 			exports: {} | ||
|  | /******/ 		}; | ||
|  | /******/ 	 | ||
|  | /******/ 		// Execute the module function
 | ||
|  | /******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__); | ||
|  | /******/ 	 | ||
|  | /******/ 		// Return the exports of the module
 | ||
|  | /******/ 		return module.exports; | ||
|  | /******/ 	} | ||
|  | /******/ 	 | ||
|  | /************************************************************************/ | ||
|  | /******/ 	 | ||
|  | /******/ 	// startup
 | ||
|  | /******/ 	// Load entry module and return exports
 | ||
|  | /******/ 	// This entry module is referenced by other modules so it can't be inlined
 | ||
|  | /******/ 	var __webpack_exports__ = __webpack_require__(15); | ||
|  | /******/ 	legacy_beautify_css = __webpack_exports__; | ||
|  | /******/ 	 | ||
|  | /******/ })() | ||
|  | ; | ||
|  | 
 | ||
|  | export var css_beautify = legacy_beautify_css; |