Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
/* AUTO-GENERATED. DO NOT MODIFY. */
2
/*
3
 
4
  The MIT License (MIT)
5
 
6
  Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.
7
 
8
  Permission is hereby granted, free of charge, to any person
9
  obtaining a copy of this software and associated documentation files
10
  (the "Software"), to deal in the Software without restriction,
11
  including without limitation the rights to use, copy, modify, merge,
12
  publish, distribute, sublicense, and/or sell copies of the Software,
13
  and to permit persons to whom the Software is furnished to do so,
14
  subject to the following conditions:
15
 
16
  The above copyright notice and this permission notice shall be
17
  included in all copies or substantial portions of the Software.
18
 
19
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
20
  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21
  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
22
  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
23
  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
24
  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
25
  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
  SOFTWARE.
27
 
28
 
29
 CSS Beautifier
30
---------------
31
 
32
    Written by Harutyun Amirjanyan, (amirjanyan@gmail.com)
33
 
34
    Based on code initially developed by: Einar Lielmanis, <einar@beautifier.io>
35
        https://beautifier.io/
36
 
37
    Usage:
38
        css_beautify(source_text);
39
        css_beautify(source_text, options);
40
 
41
    The options are (default in brackets):
42
        indent_size (4)                         — indentation size,
43
        indent_char (space)                     — character to indent with,
44
        selector_separator_newline (true)       - separate selectors with newline or
45
                                                  not (e.g. "a,\nbr" or "a, br")
46
        end_with_newline (false)                - end with a newline
47
        newline_between_rules (true)            - add a new line after every css rule
48
        space_around_selector_separator (false) - ensure space around selector separators:
49
                                                  '>', '+', '~' (e.g. "a>b" -> "a > b")
50
    e.g
51
 
52
    css_beautify(css_source_text, {
53
      'indent_size': 1,
54
      'indent_char': '\t',
55
      'selector_separator': ' ',
56
      'end_with_newline': false,
57
      'newline_between_rules': true,
58
      'space_around_selector_separator': true
59
    });
60
*/
61
 
62
// http://www.w3.org/TR/CSS21/syndata.html#tokenization
63
// http://www.w3.org/TR/css3-syntax/
64
 
65
(function() {
66
 
67
/* GENERATED_BUILD_OUTPUT */
68
var legacy_beautify_css;
69
/******/ (function() { // webpackBootstrap
70
/******/ 	"use strict";
71
/******/ 	var __webpack_modules__ = ([
72
/* 0 */,
73
/* 1 */,
74
/* 2 */
75
/***/ (function(module) {
76
 
77
/*jshint node:true */
78
/*
79
  The MIT License (MIT)
80
 
81
  Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.
82
 
83
  Permission is hereby granted, free of charge, to any person
84
  obtaining a copy of this software and associated documentation files
85
  (the "Software"), to deal in the Software without restriction,
86
  including without limitation the rights to use, copy, modify, merge,
87
  publish, distribute, sublicense, and/or sell copies of the Software,
88
  and to permit persons to whom the Software is furnished to do so,
89
  subject to the following conditions:
90
 
91
  The above copyright notice and this permission notice shall be
92
  included in all copies or substantial portions of the Software.
93
 
94
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
95
  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
96
  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
97
  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
98
  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
99
  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
100
  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
101
  SOFTWARE.
102
*/
103
 
104
 
105
 
106
function OutputLine(parent) {
107
  this.__parent = parent;
108
  this.__character_count = 0;
109
  // use indent_count as a marker for this.__lines that have preserved indentation
110
  this.__indent_count = -1;
111
  this.__alignment_count = 0;
112
  this.__wrap_point_index = 0;
113
  this.__wrap_point_character_count = 0;
114
  this.__wrap_point_indent_count = -1;
115
  this.__wrap_point_alignment_count = 0;
116
 
117
  this.__items = [];
118
}
119
 
120
OutputLine.prototype.clone_empty = function() {
121
  var line = new OutputLine(this.__parent);
122
  line.set_indent(this.__indent_count, this.__alignment_count);
123
  return line;
124
};
125
 
126
OutputLine.prototype.item = function(index) {
127
  if (index < 0) {
128
    return this.__items[this.__items.length + index];
129
  } else {
130
    return this.__items[index];
131
  }
132
};
133
 
134
OutputLine.prototype.has_match = function(pattern) {
135
  for (var lastCheckedOutput = this.__items.length - 1; lastCheckedOutput >= 0; lastCheckedOutput--) {
136
    if (this.__items[lastCheckedOutput].match(pattern)) {
137
      return true;
138
    }
139
  }
140
  return false;
141
};
142
 
143
OutputLine.prototype.set_indent = function(indent, alignment) {
144
  if (this.is_empty()) {
145
    this.__indent_count = indent || 0;
146
    this.__alignment_count = alignment || 0;
147
    this.__character_count = this.__parent.get_indent_size(this.__indent_count, this.__alignment_count);
148
  }
149
};
150
 
151
OutputLine.prototype._set_wrap_point = function() {
152
  if (this.__parent.wrap_line_length) {
153
    this.__wrap_point_index = this.__items.length;
154
    this.__wrap_point_character_count = this.__character_count;
155
    this.__wrap_point_indent_count = this.__parent.next_line.__indent_count;
156
    this.__wrap_point_alignment_count = this.__parent.next_line.__alignment_count;
157
  }
158
};
159
 
160
OutputLine.prototype._should_wrap = function() {
161
  return this.__wrap_point_index &&
162
    this.__character_count > this.__parent.wrap_line_length &&
163
    this.__wrap_point_character_count > this.__parent.next_line.__character_count;
164
};
165
 
166
OutputLine.prototype._allow_wrap = function() {
167
  if (this._should_wrap()) {
168
    this.__parent.add_new_line();
169
    var next = this.__parent.current_line;
170
    next.set_indent(this.__wrap_point_indent_count, this.__wrap_point_alignment_count);
171
    next.__items = this.__items.slice(this.__wrap_point_index);
172
    this.__items = this.__items.slice(0, this.__wrap_point_index);
173
 
174
    next.__character_count += this.__character_count - this.__wrap_point_character_count;
175
    this.__character_count = this.__wrap_point_character_count;
176
 
177
    if (next.__items[0] === " ") {
178
      next.__items.splice(0, 1);
179
      next.__character_count -= 1;
180
    }
181
    return true;
182
  }
183
  return false;
184
};
185
 
186
OutputLine.prototype.is_empty = function() {
187
  return this.__items.length === 0;
188
};
189
 
190
OutputLine.prototype.last = function() {
191
  if (!this.is_empty()) {
192
    return this.__items[this.__items.length - 1];
193
  } else {
194
    return null;
195
  }
196
};
197
 
198
OutputLine.prototype.push = function(item) {
199
  this.__items.push(item);
200
  var last_newline_index = item.lastIndexOf('\n');
201
  if (last_newline_index !== -1) {
202
    this.__character_count = item.length - last_newline_index;
203
  } else {
204
    this.__character_count += item.length;
205
  }
206
};
207
 
208
OutputLine.prototype.pop = function() {
209
  var item = null;
210
  if (!this.is_empty()) {
211
    item = this.__items.pop();
212
    this.__character_count -= item.length;
213
  }
214
  return item;
215
};
216
 
217
 
218
OutputLine.prototype._remove_indent = function() {
219
  if (this.__indent_count > 0) {
220
    this.__indent_count -= 1;
221
    this.__character_count -= this.__parent.indent_size;
222
  }
223
};
224
 
225
OutputLine.prototype._remove_wrap_indent = function() {
226
  if (this.__wrap_point_indent_count > 0) {
227
    this.__wrap_point_indent_count -= 1;
228
  }
229
};
230
OutputLine.prototype.trim = function() {
231
  while (this.last() === ' ') {
232
    this.__items.pop();
233
    this.__character_count -= 1;
234
  }
235
};
236
 
237
OutputLine.prototype.toString = function() {
238
  var result = '';
239
  if (this.is_empty()) {
240
    if (this.__parent.indent_empty_lines) {
241
      result = this.__parent.get_indent_string(this.__indent_count);
242
    }
243
  } else {
244
    result = this.__parent.get_indent_string(this.__indent_count, this.__alignment_count);
245
    result += this.__items.join('');
246
  }
247
  return result;
248
};
249
 
250
function IndentStringCache(options, baseIndentString) {
251
  this.__cache = [''];
252
  this.__indent_size = options.indent_size;
253
  this.__indent_string = options.indent_char;
254
  if (!options.indent_with_tabs) {
255
    this.__indent_string = new Array(options.indent_size + 1).join(options.indent_char);
256
  }
257
 
258
  // Set to null to continue support for auto detection of base indent
259
  baseIndentString = baseIndentString || '';
260
  if (options.indent_level > 0) {
261
    baseIndentString = new Array(options.indent_level + 1).join(this.__indent_string);
262
  }
263
 
264
  this.__base_string = baseIndentString;
265
  this.__base_string_length = baseIndentString.length;
266
}
267
 
268
IndentStringCache.prototype.get_indent_size = function(indent, column) {
269
  var result = this.__base_string_length;
270
  column = column || 0;
271
  if (indent < 0) {
272
    result = 0;
273
  }
274
  result += indent * this.__indent_size;
275
  result += column;
276
  return result;
277
};
278
 
279
IndentStringCache.prototype.get_indent_string = function(indent_level, column) {
280
  var result = this.__base_string;
281
  column = column || 0;
282
  if (indent_level < 0) {
283
    indent_level = 0;
284
    result = '';
285
  }
286
  column += indent_level * this.__indent_size;
287
  this.__ensure_cache(column);
288
  result += this.__cache[column];
289
  return result;
290
};
291
 
292
IndentStringCache.prototype.__ensure_cache = function(column) {
293
  while (column >= this.__cache.length) {
294
    this.__add_column();
295
  }
296
};
297
 
298
IndentStringCache.prototype.__add_column = function() {
299
  var column = this.__cache.length;
300
  var indent = 0;
301
  var result = '';
302
  if (this.__indent_size && column >= this.__indent_size) {
303
    indent = Math.floor(column / this.__indent_size);
304
    column -= indent * this.__indent_size;
305
    result = new Array(indent + 1).join(this.__indent_string);
306
  }
307
  if (column) {
308
    result += new Array(column + 1).join(' ');
309
  }
310
 
311
  this.__cache.push(result);
312
};
313
 
314
function Output(options, baseIndentString) {
315
  this.__indent_cache = new IndentStringCache(options, baseIndentString);
316
  this.raw = false;
317
  this._end_with_newline = options.end_with_newline;
318
  this.indent_size = options.indent_size;
319
  this.wrap_line_length = options.wrap_line_length;
320
  this.indent_empty_lines = options.indent_empty_lines;
321
  this.__lines = [];
322
  this.previous_line = null;
323
  this.current_line = null;
324
  this.next_line = new OutputLine(this);
325
  this.space_before_token = false;
326
  this.non_breaking_space = false;
327
  this.previous_token_wrapped = false;
328
  // initialize
329
  this.__add_outputline();
330
}
331
 
332
Output.prototype.__add_outputline = function() {
333
  this.previous_line = this.current_line;
334
  this.current_line = this.next_line.clone_empty();
335
  this.__lines.push(this.current_line);
336
};
337
 
338
Output.prototype.get_line_number = function() {
339
  return this.__lines.length;
340
};
341
 
342
Output.prototype.get_indent_string = function(indent, column) {
343
  return this.__indent_cache.get_indent_string(indent, column);
344
};
345
 
346
Output.prototype.get_indent_size = function(indent, column) {
347
  return this.__indent_cache.get_indent_size(indent, column);
348
};
349
 
350
Output.prototype.is_empty = function() {
351
  return !this.previous_line && this.current_line.is_empty();
352
};
353
 
354
Output.prototype.add_new_line = function(force_newline) {
355
  // never newline at the start of file
356
  // otherwise, newline only if we didn't just add one or we're forced
357
  if (this.is_empty() ||
358
    (!force_newline && this.just_added_newline())) {
359
    return false;
360
  }
361
 
362
  // if raw output is enabled, don't print additional newlines,
363
  // but still return True as though you had
364
  if (!this.raw) {
365
    this.__add_outputline();
366
  }
367
  return true;
368
};
369
 
370
Output.prototype.get_code = function(eol) {
371
  this.trim(true);
372
 
373
  // handle some edge cases where the last tokens
374
  // has text that ends with newline(s)
375
  var last_item = this.current_line.pop();
376
  if (last_item) {
377
    if (last_item[last_item.length - 1] === '\n') {
378
      last_item = last_item.replace(/\n+$/g, '');
379
    }
380
    this.current_line.push(last_item);
381
  }
382
 
383
  if (this._end_with_newline) {
384
    this.__add_outputline();
385
  }
386
 
387
  var sweet_code = this.__lines.join('\n');
388
 
389
  if (eol !== '\n') {
390
    sweet_code = sweet_code.replace(/[\n]/g, eol);
391
  }
392
  return sweet_code;
393
};
394
 
395
Output.prototype.set_wrap_point = function() {
396
  this.current_line._set_wrap_point();
397
};
398
 
399
Output.prototype.set_indent = function(indent, alignment) {
400
  indent = indent || 0;
401
  alignment = alignment || 0;
402
 
403
  // Next line stores alignment values
404
  this.next_line.set_indent(indent, alignment);
405
 
406
  // Never indent your first output indent at the start of the file
407
  if (this.__lines.length > 1) {
408
    this.current_line.set_indent(indent, alignment);
409
    return true;
410
  }
411
 
412
  this.current_line.set_indent();
413
  return false;
414
};
415
 
416
Output.prototype.add_raw_token = function(token) {
417
  for (var x = 0; x < token.newlines; x++) {
418
    this.__add_outputline();
419
  }
420
  this.current_line.set_indent(-1);
421
  this.current_line.push(token.whitespace_before);
422
  this.current_line.push(token.text);
423
  this.space_before_token = false;
424
  this.non_breaking_space = false;
425
  this.previous_token_wrapped = false;
426
};
427
 
428
Output.prototype.add_token = function(printable_token) {
429
  this.__add_space_before_token();
430
  this.current_line.push(printable_token);
431
  this.space_before_token = false;
432
  this.non_breaking_space = false;
433
  this.previous_token_wrapped = this.current_line._allow_wrap();
434
};
435
 
436
Output.prototype.__add_space_before_token = function() {
437
  if (this.space_before_token && !this.just_added_newline()) {
438
    if (!this.non_breaking_space) {
439
      this.set_wrap_point();
440
    }
441
    this.current_line.push(' ');
442
  }
443
};
444
 
445
Output.prototype.remove_indent = function(index) {
446
  var output_length = this.__lines.length;
447
  while (index < output_length) {
448
    this.__lines[index]._remove_indent();
449
    index++;
450
  }
451
  this.current_line._remove_wrap_indent();
452
};
453
 
454
Output.prototype.trim = function(eat_newlines) {
455
  eat_newlines = (eat_newlines === undefined) ? false : eat_newlines;
456
 
457
  this.current_line.trim();
458
 
459
  while (eat_newlines && this.__lines.length > 1 &&
460
    this.current_line.is_empty()) {
461
    this.__lines.pop();
462
    this.current_line = this.__lines[this.__lines.length - 1];
463
    this.current_line.trim();
464
  }
465
 
466
  this.previous_line = this.__lines.length > 1 ?
467
    this.__lines[this.__lines.length - 2] : null;
468
};
469
 
470
Output.prototype.just_added_newline = function() {
471
  return this.current_line.is_empty();
472
};
473
 
474
Output.prototype.just_added_blankline = function() {
475
  return this.is_empty() ||
476
    (this.current_line.is_empty() && this.previous_line.is_empty());
477
};
478
 
479
Output.prototype.ensure_empty_line_above = function(starts_with, ends_with) {
480
  var index = this.__lines.length - 2;
481
  while (index >= 0) {
482
    var potentialEmptyLine = this.__lines[index];
483
    if (potentialEmptyLine.is_empty()) {
484
      break;
485
    } else if (potentialEmptyLine.item(0).indexOf(starts_with) !== 0 &&
486
      potentialEmptyLine.item(-1) !== ends_with) {
487
      this.__lines.splice(index + 1, 0, new OutputLine(this));
488
      this.previous_line = this.__lines[this.__lines.length - 2];
489
      break;
490
    }
491
    index--;
492
  }
493
};
494
 
495
module.exports.Output = Output;
496
 
497
 
498
/***/ }),
499
/* 3 */,
500
/* 4 */,
501
/* 5 */,
502
/* 6 */
503
/***/ (function(module) {
504
 
505
/*jshint node:true */
506
/*
507
 
508
  The MIT License (MIT)
509
 
510
  Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.
511
 
512
  Permission is hereby granted, free of charge, to any person
513
  obtaining a copy of this software and associated documentation files
514
  (the "Software"), to deal in the Software without restriction,
515
  including without limitation the rights to use, copy, modify, merge,
516
  publish, distribute, sublicense, and/or sell copies of the Software,
517
  and to permit persons to whom the Software is furnished to do so,
518
  subject to the following conditions:
519
 
520
  The above copyright notice and this permission notice shall be
521
  included in all copies or substantial portions of the Software.
522
 
523
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
524
  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
525
  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
526
  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
527
  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
528
  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
529
  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
530
  SOFTWARE.
531
*/
532
 
533
 
534
 
535
function Options(options, merge_child_field) {
536
  this.raw_options = _mergeOpts(options, merge_child_field);
537
 
538
  // Support passing the source text back with no change
539
  this.disabled = this._get_boolean('disabled');
540
 
541
  this.eol = this._get_characters('eol', 'auto');
542
  this.end_with_newline = this._get_boolean('end_with_newline');
543
  this.indent_size = this._get_number('indent_size', 4);
544
  this.indent_char = this._get_characters('indent_char', ' ');
545
  this.indent_level = this._get_number('indent_level');
546
 
547
  this.preserve_newlines = this._get_boolean('preserve_newlines', true);
548
  this.max_preserve_newlines = this._get_number('max_preserve_newlines', 32786);
549
  if (!this.preserve_newlines) {
550
    this.max_preserve_newlines = 0;
551
  }
552
 
553
  this.indent_with_tabs = this._get_boolean('indent_with_tabs', this.indent_char === '\t');
554
  if (this.indent_with_tabs) {
555
    this.indent_char = '\t';
556
 
557
    // indent_size behavior changed after 1.8.6
558
    // It used to be that indent_size would be
559
    // set to 1 for indent_with_tabs. That is no longer needed and
560
    // actually doesn't make sense - why not use spaces? Further,
561
    // that might produce unexpected behavior - tabs being used
562
    // for single-column alignment. So, when indent_with_tabs is true
563
    // and indent_size is 1, reset indent_size to 4.
564
    if (this.indent_size === 1) {
565
      this.indent_size = 4;
566
    }
567
  }
568
 
569
  // Backwards compat with 1.3.x
570
  this.wrap_line_length = this._get_number('wrap_line_length', this._get_number('max_char'));
571
 
572
  this.indent_empty_lines = this._get_boolean('indent_empty_lines');
573
 
574
  // valid templating languages ['django', 'erb', 'handlebars', 'php', 'smarty', 'angular']
575
  // For now, 'auto' = all off for javascript, all except angular on for html (and inline javascript/css).
576
  // other values ignored
577
  this.templating = this._get_selection_list('templating', ['auto', 'none', 'angular', 'django', 'erb', 'handlebars', 'php', 'smarty'], ['auto']);
578
}
579
 
580
Options.prototype._get_array = function(name, default_value) {
581
  var option_value = this.raw_options[name];
582
  var result = default_value || [];
583
  if (typeof option_value === 'object') {
584
    if (option_value !== null && typeof option_value.concat === 'function') {
585
      result = option_value.concat();
586
    }
587
  } else if (typeof option_value === 'string') {
588
    result = option_value.split(/[^a-zA-Z0-9_\/\-]+/);
589
  }
590
  return result;
591
};
592
 
593
Options.prototype._get_boolean = function(name, default_value) {
594
  var option_value = this.raw_options[name];
595
  var result = option_value === undefined ? !!default_value : !!option_value;
596
  return result;
597
};
598
 
599
Options.prototype._get_characters = function(name, default_value) {
600
  var option_value = this.raw_options[name];
601
  var result = default_value || '';
602
  if (typeof option_value === 'string') {
603
    result = option_value.replace(/\\r/, '\r').replace(/\\n/, '\n').replace(/\\t/, '\t');
604
  }
605
  return result;
606
};
607
 
608
Options.prototype._get_number = function(name, default_value) {
609
  var option_value = this.raw_options[name];
610
  default_value = parseInt(default_value, 10);
611
  if (isNaN(default_value)) {
612
    default_value = 0;
613
  }
614
  var result = parseInt(option_value, 10);
615
  if (isNaN(result)) {
616
    result = default_value;
617
  }
618
  return result;
619
};
620
 
621
Options.prototype._get_selection = function(name, selection_list, default_value) {
622
  var result = this._get_selection_list(name, selection_list, default_value);
623
  if (result.length !== 1) {
624
    throw new Error(
625
      "Invalid Option Value: The option '" + name + "' can only be one of the following values:\n" +
626
      selection_list + "\nYou passed in: '" + this.raw_options[name] + "'");
627
  }
628
 
629
  return result[0];
630
};
631
 
632
 
633
Options.prototype._get_selection_list = function(name, selection_list, default_value) {
634
  if (!selection_list || selection_list.length === 0) {
635
    throw new Error("Selection list cannot be empty.");
636
  }
637
 
638
  default_value = default_value || [selection_list[0]];
639
  if (!this._is_valid_selection(default_value, selection_list)) {
640
    throw new Error("Invalid Default Value!");
641
  }
642
 
643
  var result = this._get_array(name, default_value);
644
  if (!this._is_valid_selection(result, selection_list)) {
645
    throw new Error(
646
      "Invalid Option Value: The option '" + name + "' can contain only the following values:\n" +
647
      selection_list + "\nYou passed in: '" + this.raw_options[name] + "'");
648
  }
649
 
650
  return result;
651
};
652
 
653
Options.prototype._is_valid_selection = function(result, selection_list) {
654
  return result.length && selection_list.length &&
655
    !result.some(function(item) { return selection_list.indexOf(item) === -1; });
656
};
657
 
658
 
659
// merges child options up with the parent options object
660
// Example: obj = {a: 1, b: {a: 2}}
661
//          mergeOpts(obj, 'b')
662
//
663
//          Returns: {a: 2}
664
function _mergeOpts(allOptions, childFieldName) {
665
  var finalOpts = {};
666
  allOptions = _normalizeOpts(allOptions);
667
  var name;
668
 
669
  for (name in allOptions) {
670
    if (name !== childFieldName) {
671
      finalOpts[name] = allOptions[name];
672
    }
673
  }
674
 
675
  //merge in the per type settings for the childFieldName
676
  if (childFieldName && allOptions[childFieldName]) {
677
    for (name in allOptions[childFieldName]) {
678
      finalOpts[name] = allOptions[childFieldName][name];
679
    }
680
  }
681
  return finalOpts;
682
}
683
 
684
function _normalizeOpts(options) {
685
  var convertedOpts = {};
686
  var key;
687
 
688
  for (key in options) {
689
    var newKey = key.replace(/-/g, "_");
690
    convertedOpts[newKey] = options[key];
691
  }
692
  return convertedOpts;
693
}
694
 
695
module.exports.Options = Options;
696
module.exports.normalizeOpts = _normalizeOpts;
697
module.exports.mergeOpts = _mergeOpts;
698
 
699
 
700
/***/ }),
701
/* 7 */,
702
/* 8 */
703
/***/ (function(module) {
704
 
705
/*jshint node:true */
706
/*
707
 
708
  The MIT License (MIT)
709
 
710
  Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.
711
 
712
  Permission is hereby granted, free of charge, to any person
713
  obtaining a copy of this software and associated documentation files
714
  (the "Software"), to deal in the Software without restriction,
715
  including without limitation the rights to use, copy, modify, merge,
716
  publish, distribute, sublicense, and/or sell copies of the Software,
717
  and to permit persons to whom the Software is furnished to do so,
718
  subject to the following conditions:
719
 
720
  The above copyright notice and this permission notice shall be
721
  included in all copies or substantial portions of the Software.
722
 
723
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
724
  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
725
  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
726
  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
727
  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
728
  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
729
  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
730
  SOFTWARE.
731
*/
732
 
733
 
734
 
735
var regexp_has_sticky = RegExp.prototype.hasOwnProperty('sticky');
736
 
737
function InputScanner(input_string) {
738
  this.__input = input_string || '';
739
  this.__input_length = this.__input.length;
740
  this.__position = 0;
741
}
742
 
743
InputScanner.prototype.restart = function() {
744
  this.__position = 0;
745
};
746
 
747
InputScanner.prototype.back = function() {
748
  if (this.__position > 0) {
749
    this.__position -= 1;
750
  }
751
};
752
 
753
InputScanner.prototype.hasNext = function() {
754
  return this.__position < this.__input_length;
755
};
756
 
757
InputScanner.prototype.next = function() {
758
  var val = null;
759
  if (this.hasNext()) {
760
    val = this.__input.charAt(this.__position);
761
    this.__position += 1;
762
  }
763
  return val;
764
};
765
 
766
InputScanner.prototype.peek = function(index) {
767
  var val = null;
768
  index = index || 0;
769
  index += this.__position;
770
  if (index >= 0 && index < this.__input_length) {
771
    val = this.__input.charAt(index);
772
  }
773
  return val;
774
};
775
 
776
// This is a JavaScript only helper function (not in python)
777
// Javascript doesn't have a match method
778
// and not all implementation support "sticky" flag.
779
// If they do not support sticky then both this.match() and this.test() method
780
// must get the match and check the index of the match.
781
// If sticky is supported and set, this method will use it.
782
// Otherwise it will check that global is set, and fall back to the slower method.
783
InputScanner.prototype.__match = function(pattern, index) {
784
  pattern.lastIndex = index;
785
  var pattern_match = pattern.exec(this.__input);
786
 
787
  if (pattern_match && !(regexp_has_sticky && pattern.sticky)) {
788
    if (pattern_match.index !== index) {
789
      pattern_match = null;
790
    }
791
  }
792
 
793
  return pattern_match;
794
};
795
 
796
InputScanner.prototype.test = function(pattern, index) {
797
  index = index || 0;
798
  index += this.__position;
799
 
800
  if (index >= 0 && index < this.__input_length) {
801
    return !!this.__match(pattern, index);
802
  } else {
803
    return false;
804
  }
805
};
806
 
807
InputScanner.prototype.testChar = function(pattern, index) {
808
  // test one character regex match
809
  var val = this.peek(index);
810
  pattern.lastIndex = 0;
811
  return val !== null && pattern.test(val);
812
};
813
 
814
InputScanner.prototype.match = function(pattern) {
815
  var pattern_match = this.__match(pattern, this.__position);
816
  if (pattern_match) {
817
    this.__position += pattern_match[0].length;
818
  } else {
819
    pattern_match = null;
820
  }
821
  return pattern_match;
822
};
823
 
824
InputScanner.prototype.read = function(starting_pattern, until_pattern, until_after) {
825
  var val = '';
826
  var match;
827
  if (starting_pattern) {
828
    match = this.match(starting_pattern);
829
    if (match) {
830
      val += match[0];
831
    }
832
  }
833
  if (until_pattern && (match || !starting_pattern)) {
834
    val += this.readUntil(until_pattern, until_after);
835
  }
836
  return val;
837
};
838
 
839
InputScanner.prototype.readUntil = function(pattern, until_after) {
840
  var val = '';
841
  var match_index = this.__position;
842
  pattern.lastIndex = this.__position;
843
  var pattern_match = pattern.exec(this.__input);
844
  if (pattern_match) {
845
    match_index = pattern_match.index;
846
    if (until_after) {
847
      match_index += pattern_match[0].length;
848
    }
849
  } else {
850
    match_index = this.__input_length;
851
  }
852
 
853
  val = this.__input.substring(this.__position, match_index);
854
  this.__position = match_index;
855
  return val;
856
};
857
 
858
InputScanner.prototype.readUntilAfter = function(pattern) {
859
  return this.readUntil(pattern, true);
860
};
861
 
862
InputScanner.prototype.get_regexp = function(pattern, match_from) {
863
  var result = null;
864
  var flags = 'g';
865
  if (match_from && regexp_has_sticky) {
866
    flags = 'y';
867
  }
868
  // strings are converted to regexp
869
  if (typeof pattern === "string" && pattern !== '') {
870
    // result = new RegExp(pattern.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), flags);
871
    result = new RegExp(pattern, flags);
872
  } else if (pattern) {
873
    result = new RegExp(pattern.source, flags);
874
  }
875
  return result;
876
};
877
 
878
InputScanner.prototype.get_literal_regexp = function(literal_string) {
879
  return RegExp(literal_string.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'));
880
};
881
 
882
/* css beautifier legacy helpers */
883
InputScanner.prototype.peekUntilAfter = function(pattern) {
884
  var start = this.__position;
885
  var val = this.readUntilAfter(pattern);
886
  this.__position = start;
887
  return val;
888
};
889
 
890
InputScanner.prototype.lookBack = function(testVal) {
891
  var start = this.__position - 1;
892
  return start >= testVal.length && this.__input.substring(start - testVal.length, start)
893
    .toLowerCase() === testVal;
894
};
895
 
896
module.exports.InputScanner = InputScanner;
897
 
898
 
899
/***/ }),
900
/* 9 */,
901
/* 10 */,
902
/* 11 */,
903
/* 12 */,
904
/* 13 */
905
/***/ (function(module) {
906
 
907
/*jshint node:true */
908
/*
909
 
910
  The MIT License (MIT)
911
 
912
  Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.
913
 
914
  Permission is hereby granted, free of charge, to any person
915
  obtaining a copy of this software and associated documentation files
916
  (the "Software"), to deal in the Software without restriction,
917
  including without limitation the rights to use, copy, modify, merge,
918
  publish, distribute, sublicense, and/or sell copies of the Software,
919
  and to permit persons to whom the Software is furnished to do so,
920
  subject to the following conditions:
921
 
922
  The above copyright notice and this permission notice shall be
923
  included in all copies or substantial portions of the Software.
924
 
925
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
926
  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
927
  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
928
  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
929
  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
930
  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
931
  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
932
  SOFTWARE.
933
*/
934
 
935
 
936
 
937
function Directives(start_block_pattern, end_block_pattern) {
938
  start_block_pattern = typeof start_block_pattern === 'string' ? start_block_pattern : start_block_pattern.source;
939
  end_block_pattern = typeof end_block_pattern === 'string' ? end_block_pattern : end_block_pattern.source;
940
  this.__directives_block_pattern = new RegExp(start_block_pattern + / beautify( \w+[:]\w+)+ /.source + end_block_pattern, 'g');
941
  this.__directive_pattern = / (\w+)[:](\w+)/g;
942
 
943
  this.__directives_end_ignore_pattern = new RegExp(start_block_pattern + /\sbeautify\signore:end\s/.source + end_block_pattern, 'g');
944
}
945
 
946
Directives.prototype.get_directives = function(text) {
947
  if (!text.match(this.__directives_block_pattern)) {
948
    return null;
949
  }
950
 
951
  var directives = {};
952
  this.__directive_pattern.lastIndex = 0;
953
  var directive_match = this.__directive_pattern.exec(text);
954
 
955
  while (directive_match) {
956
    directives[directive_match[1]] = directive_match[2];
957
    directive_match = this.__directive_pattern.exec(text);
958
  }
959
 
960
  return directives;
961
};
962
 
963
Directives.prototype.readIgnored = function(input) {
964
  return input.readUntilAfter(this.__directives_end_ignore_pattern);
965
};
966
 
967
 
968
module.exports.Directives = Directives;
969
 
970
 
971
/***/ }),
972
/* 14 */,
973
/* 15 */
974
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
975
 
976
/*jshint node:true */
977
/*
978
 
979
  The MIT License (MIT)
980
 
981
  Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.
982
 
983
  Permission is hereby granted, free of charge, to any person
984
  obtaining a copy of this software and associated documentation files
985
  (the "Software"), to deal in the Software without restriction,
986
  including without limitation the rights to use, copy, modify, merge,
987
  publish, distribute, sublicense, and/or sell copies of the Software,
988
  and to permit persons to whom the Software is furnished to do so,
989
  subject to the following conditions:
990
 
991
  The above copyright notice and this permission notice shall be
992
  included in all copies or substantial portions of the Software.
993
 
994
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
995
  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
996
  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
997
  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
998
  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
999
  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
1000
  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1001
  SOFTWARE.
1002
*/
1003
 
1004
 
1005
 
1006
var Beautifier = (__webpack_require__(16).Beautifier),
1007
  Options = (__webpack_require__(17).Options);
1008
 
1009
function css_beautify(source_text, options) {
1010
  var beautifier = new Beautifier(source_text, options);
1011
  return beautifier.beautify();
1012
}
1013
 
1014
module.exports = css_beautify;
1015
module.exports.defaultOptions = function() {
1016
  return new Options();
1017
};
1018
 
1019
 
1020
/***/ }),
1021
/* 16 */
1022
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1023
 
1024
/*jshint node:true */
1025
/*
1026
 
1027
  The MIT License (MIT)
1028
 
1029
  Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.
1030
 
1031
  Permission is hereby granted, free of charge, to any person
1032
  obtaining a copy of this software and associated documentation files
1033
  (the "Software"), to deal in the Software without restriction,
1034
  including without limitation the rights to use, copy, modify, merge,
1035
  publish, distribute, sublicense, and/or sell copies of the Software,
1036
  and to permit persons to whom the Software is furnished to do so,
1037
  subject to the following conditions:
1038
 
1039
  The above copyright notice and this permission notice shall be
1040
  included in all copies or substantial portions of the Software.
1041
 
1042
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
1043
  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
1044
  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
1045
  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
1046
  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
1047
  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
1048
  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1049
  SOFTWARE.
1050
*/
1051
 
1052
 
1053
 
1054
var Options = (__webpack_require__(17).Options);
1055
var Output = (__webpack_require__(2).Output);
1056
var InputScanner = (__webpack_require__(8).InputScanner);
1057
var Directives = (__webpack_require__(13).Directives);
1058
 
1059
var directives_core = new Directives(/\/\*/, /\*\//);
1060
 
1061
var lineBreak = /\r\n|[\r\n]/;
1062
var allLineBreaks = /\r\n|[\r\n]/g;
1063
 
1064
// tokenizer
1065
var whitespaceChar = /\s/;
1066
var whitespacePattern = /(?:\s|\n)+/g;
1067
var block_comment_pattern = /\/\*(?:[\s\S]*?)((?:\*\/)|$)/g;
1068
var comment_pattern = /\/\/(?:[^\n\r\u2028\u2029]*)/g;
1069
 
1070
function Beautifier(source_text, options) {
1071
  this._source_text = source_text || '';
1072
  // Allow the setting of language/file-type specific options
1073
  // with inheritance of overall settings
1074
  this._options = new Options(options);
1075
  this._ch = null;
1076
  this._input = null;
1077
 
1078
  // https://developer.mozilla.org/en-US/docs/Web/CSS/At-rule
1079
  this.NESTED_AT_RULE = {
1080
    "page": true,
1081
    "font-face": true,
1082
    "keyframes": true,
1083
    // also in CONDITIONAL_GROUP_RULE below
1084
    "media": true,
1085
    "supports": true,
1086
    "document": true
1087
  };
1088
  this.CONDITIONAL_GROUP_RULE = {
1089
    "media": true,
1090
    "supports": true,
1091
    "document": true
1092
  };
1093
  this.NON_SEMICOLON_NEWLINE_PROPERTY = [
1094
    "grid-template-areas",
1095
    "grid-template"
1096
  ];
1097
 
1098
}
1099
 
1100
Beautifier.prototype.eatString = function(endChars) {
1101
  var result = '';
1102
  this._ch = this._input.next();
1103
  while (this._ch) {
1104
    result += this._ch;
1105
    if (this._ch === "\\") {
1106
      result += this._input.next();
1107
    } else if (endChars.indexOf(this._ch) !== -1 || this._ch === "\n") {
1108
      break;
1109
    }
1110
    this._ch = this._input.next();
1111
  }
1112
  return result;
1113
};
1114
 
1115
// Skips any white space in the source text from the current position.
1116
// When allowAtLeastOneNewLine is true, will output new lines for each
1117
// newline character found; if the user has preserve_newlines off, only
1118
// the first newline will be output
1119
Beautifier.prototype.eatWhitespace = function(allowAtLeastOneNewLine) {
1120
  var result = whitespaceChar.test(this._input.peek());
1121
  var newline_count = 0;
1122
  while (whitespaceChar.test(this._input.peek())) {
1123
    this._ch = this._input.next();
1124
    if (allowAtLeastOneNewLine && this._ch === '\n') {
1125
      if (newline_count === 0 || newline_count < this._options.max_preserve_newlines) {
1126
        newline_count++;
1127
        this._output.add_new_line(true);
1128
      }
1129
    }
1130
  }
1131
  return result;
1132
};
1133
 
1134
// Nested pseudo-class if we are insideRule
1135
// and the next special character found opens
1136
// a new block
1137
Beautifier.prototype.foundNestedPseudoClass = function() {
1138
  var openParen = 0;
1139
  var i = 1;
1140
  var ch = this._input.peek(i);
1141
  while (ch) {
1142
    if (ch === "{") {
1143
      return true;
1144
    } else if (ch === '(') {
1145
      // pseudoclasses can contain ()
1146
      openParen += 1;
1147
    } else if (ch === ')') {
1148
      if (openParen === 0) {
1149
        return false;
1150
      }
1151
      openParen -= 1;
1152
    } else if (ch === ";" || ch === "}") {
1153
      return false;
1154
    }
1155
    i++;
1156
    ch = this._input.peek(i);
1157
  }
1158
  return false;
1159
};
1160
 
1161
Beautifier.prototype.print_string = function(output_string) {
1162
  this._output.set_indent(this._indentLevel);
1163
  this._output.non_breaking_space = true;
1164
  this._output.add_token(output_string);
1165
};
1166
 
1167
Beautifier.prototype.preserveSingleSpace = function(isAfterSpace) {
1168
  if (isAfterSpace) {
1169
    this._output.space_before_token = true;
1170
  }
1171
};
1172
 
1173
Beautifier.prototype.indent = function() {
1174
  this._indentLevel++;
1175
};
1176
 
1177
Beautifier.prototype.outdent = function() {
1178
  if (this._indentLevel > 0) {
1179
    this._indentLevel--;
1180
  }
1181
};
1182
 
1183
/*_____________________--------------------_____________________*/
1184
 
1185
Beautifier.prototype.beautify = function() {
1186
  if (this._options.disabled) {
1187
    return this._source_text;
1188
  }
1189
 
1190
  var source_text = this._source_text;
1191
  var eol = this._options.eol;
1192
  if (eol === 'auto') {
1193
    eol = '\n';
1194
    if (source_text && lineBreak.test(source_text || '')) {
1195
      eol = source_text.match(lineBreak)[0];
1196
    }
1197
  }
1198
 
1199
 
1200
  // HACK: newline parsing inconsistent. This brute force normalizes the this._input.
1201
  source_text = source_text.replace(allLineBreaks, '\n');
1202
 
1203
  // reset
1204
  var baseIndentString = source_text.match(/^[\t ]*/)[0];
1205
 
1206
  this._output = new Output(this._options, baseIndentString);
1207
  this._input = new InputScanner(source_text);
1208
  this._indentLevel = 0;
1209
  this._nestedLevel = 0;
1210
 
1211
  this._ch = null;
1212
  var parenLevel = 0;
1213
 
1214
  var insideRule = false;
1215
  // This is the value side of a property value pair (blue in the following ex)
1216
  // label { content: blue }
1217
  var insidePropertyValue = false;
1218
  var enteringConditionalGroup = false;
1219
  var insideNonNestedAtRule = false;
1220
  var insideScssMap = false;
1221
  var topCharacter = this._ch;
1222
  var insideNonSemiColonValues = false;
1223
  var whitespace;
1224
  var isAfterSpace;
1225
  var previous_ch;
1226
 
1227
  while (true) {
1228
    whitespace = this._input.read(whitespacePattern);
1229
    isAfterSpace = whitespace !== '';
1230
    previous_ch = topCharacter;
1231
    this._ch = this._input.next();
1232
    if (this._ch === '\\' && this._input.hasNext()) {
1233
      this._ch += this._input.next();
1234
    }
1235
    topCharacter = this._ch;
1236
 
1237
    if (!this._ch) {
1238
      break;
1239
    } else if (this._ch === '/' && this._input.peek() === '*') {
1240
      // /* css comment */
1241
      // Always start block comments on a new line.
1242
      // This handles scenarios where a block comment immediately
1243
      // follows a property definition on the same line or where
1244
      // minified code is being beautified.
1245
      this._output.add_new_line();
1246
      this._input.back();
1247
 
1248
      var comment = this._input.read(block_comment_pattern);
1249
 
1250
      // Handle ignore directive
1251
      var directives = directives_core.get_directives(comment);
1252
      if (directives && directives.ignore === 'start') {
1253
        comment += directives_core.readIgnored(this._input);
1254
      }
1255
 
1256
      this.print_string(comment);
1257
 
1258
      // Ensures any new lines following the comment are preserved
1259
      this.eatWhitespace(true);
1260
 
1261
      // Block comments are followed by a new line so they don't
1262
      // share a line with other properties
1263
      this._output.add_new_line();
1264
    } else if (this._ch === '/' && this._input.peek() === '/') {
1265
      // // single line comment
1266
      // Preserves the space before a comment
1267
      // on the same line as a rule
1268
      this._output.space_before_token = true;
1269
      this._input.back();
1270
      this.print_string(this._input.read(comment_pattern));
1271
 
1272
      // Ensures any new lines following the comment are preserved
1273
      this.eatWhitespace(true);
1274
    } else if (this._ch === '$') {
1275
      this.preserveSingleSpace(isAfterSpace);
1276
 
1277
      this.print_string(this._ch);
1278
 
1279
      // strip trailing space, if present, for hash property checks
1280
      var variable = this._input.peekUntilAfter(/[: ,;{}()[\]\/='"]/g);
1281
 
1282
      if (variable.match(/[ :]$/)) {
1283
        // we have a variable or pseudo-class, add it and insert one space before continuing
1284
        variable = this.eatString(": ").replace(/\s+$/, '');
1285
        this.print_string(variable);
1286
        this._output.space_before_token = true;
1287
      }
1288
 
1289
      // might be sass variable
1290
      if (parenLevel === 0 && variable.indexOf(':') !== -1) {
1291
        insidePropertyValue = true;
1292
        this.indent();
1293
      }
1294
    } else if (this._ch === '@') {
1295
      this.preserveSingleSpace(isAfterSpace);
1296
 
1297
      // deal with less property mixins @{...}
1298
      if (this._input.peek() === '{') {
1299
        this.print_string(this._ch + this.eatString('}'));
1300
      } else {
1301
        this.print_string(this._ch);
1302
 
1303
        // strip trailing space, if present, for hash property checks
1304
        var variableOrRule = this._input.peekUntilAfter(/[: ,;{}()[\]\/='"]/g);
1305
 
1306
        if (variableOrRule.match(/[ :]$/)) {
1307
          // we have a variable or pseudo-class, add it and insert one space before continuing
1308
          variableOrRule = this.eatString(": ").replace(/\s+$/, '');
1309
          this.print_string(variableOrRule);
1310
          this._output.space_before_token = true;
1311
        }
1312
 
1313
        // might be less variable
1314
        if (parenLevel === 0 && variableOrRule.indexOf(':') !== -1) {
1315
          insidePropertyValue = true;
1316
          this.indent();
1317
 
1318
          // might be a nesting at-rule
1319
        } else if (variableOrRule in this.NESTED_AT_RULE) {
1320
          this._nestedLevel += 1;
1321
          if (variableOrRule in this.CONDITIONAL_GROUP_RULE) {
1322
            enteringConditionalGroup = true;
1323
          }
1324
 
1325
          // might be a non-nested at-rule
1326
        } else if (parenLevel === 0 && !insidePropertyValue) {
1327
          insideNonNestedAtRule = true;
1328
        }
1329
      }
1330
    } else if (this._ch === '#' && this._input.peek() === '{') {
1331
      this.preserveSingleSpace(isAfterSpace);
1332
      this.print_string(this._ch + this.eatString('}'));
1333
    } else if (this._ch === '{') {
1334
      if (insidePropertyValue) {
1335
        insidePropertyValue = false;
1336
        this.outdent();
1337
      }
1338
 
1339
      // non nested at rule becomes nested
1340
      insideNonNestedAtRule = false;
1341
 
1342
      // when entering conditional groups, only rulesets are allowed
1343
      if (enteringConditionalGroup) {
1344
        enteringConditionalGroup = false;
1345
        insideRule = (this._indentLevel >= this._nestedLevel);
1346
      } else {
1347
        // otherwise, declarations are also allowed
1348
        insideRule = (this._indentLevel >= this._nestedLevel - 1);
1349
      }
1350
      if (this._options.newline_between_rules && insideRule) {
1351
        if (this._output.previous_line && this._output.previous_line.item(-1) !== '{') {
1352
          this._output.ensure_empty_line_above('/', ',');
1353
        }
1354
      }
1355
 
1356
      this._output.space_before_token = true;
1357
 
1358
      // The difference in print_string and indent order is necessary to indent the '{' correctly
1359
      if (this._options.brace_style === 'expand') {
1360
        this._output.add_new_line();
1361
        this.print_string(this._ch);
1362
        this.indent();
1363
        this._output.set_indent(this._indentLevel);
1364
      } else {
1365
        // inside mixin and first param is object
1366
        if (previous_ch === '(') {
1367
          this._output.space_before_token = false;
1368
        } else if (previous_ch !== ',') {
1369
          this.indent();
1370
        }
1371
        this.print_string(this._ch);
1372
      }
1373
 
1374
      this.eatWhitespace(true);
1375
      this._output.add_new_line();
1376
    } else if (this._ch === '}') {
1377
      this.outdent();
1378
      this._output.add_new_line();
1379
      if (previous_ch === '{') {
1380
        this._output.trim(true);
1381
      }
1382
 
1383
      if (insidePropertyValue) {
1384
        this.outdent();
1385
        insidePropertyValue = false;
1386
      }
1387
      this.print_string(this._ch);
1388
      insideRule = false;
1389
      if (this._nestedLevel) {
1390
        this._nestedLevel--;
1391
      }
1392
 
1393
      this.eatWhitespace(true);
1394
      this._output.add_new_line();
1395
 
1396
      if (this._options.newline_between_rules && !this._output.just_added_blankline()) {
1397
        if (this._input.peek() !== '}') {
1398
          this._output.add_new_line(true);
1399
        }
1400
      }
1401
      if (this._input.peek() === ')') {
1402
        this._output.trim(true);
1403
        if (this._options.brace_style === "expand") {
1404
          this._output.add_new_line(true);
1405
        }
1406
      }
1407
    } else if (this._ch === ":") {
1408
 
1409
      for (var i = 0; i < this.NON_SEMICOLON_NEWLINE_PROPERTY.length; i++) {
1410
        if (this._input.lookBack(this.NON_SEMICOLON_NEWLINE_PROPERTY[i])) {
1411
          insideNonSemiColonValues = true;
1412
          break;
1413
        }
1414
      }
1415
 
1416
      if ((insideRule || enteringConditionalGroup) && !(this._input.lookBack("&") || this.foundNestedPseudoClass()) && !this._input.lookBack("(") && !insideNonNestedAtRule && parenLevel === 0) {
1417
        // 'property: value' delimiter
1418
        // which could be in a conditional group query
1419
 
1420
        this.print_string(':');
1421
        if (!insidePropertyValue) {
1422
          insidePropertyValue = true;
1423
          this._output.space_before_token = true;
1424
          this.eatWhitespace(true);
1425
          this.indent();
1426
        }
1427
      } else {
1428
        // sass/less parent reference don't use a space
1429
        // sass nested pseudo-class don't use a space
1430
 
1431
        // preserve space before pseudoclasses/pseudoelements, as it means "in any child"
1432
        if (this._input.lookBack(" ")) {
1433
          this._output.space_before_token = true;
1434
        }
1435
        if (this._input.peek() === ":") {
1436
          // pseudo-element
1437
          this._ch = this._input.next();
1438
          this.print_string("::");
1439
        } else {
1440
          // pseudo-class
1441
          this.print_string(':');
1442
        }
1443
      }
1444
    } else if (this._ch === '"' || this._ch === '\'') {
1445
      var preserveQuoteSpace = previous_ch === '"' || previous_ch === '\'';
1446
      this.preserveSingleSpace(preserveQuoteSpace || isAfterSpace);
1447
      this.print_string(this._ch + this.eatString(this._ch));
1448
      this.eatWhitespace(true);
1449
    } else if (this._ch === ';') {
1450
      insideNonSemiColonValues = false;
1451
      if (parenLevel === 0) {
1452
        if (insidePropertyValue) {
1453
          this.outdent();
1454
          insidePropertyValue = false;
1455
        }
1456
        insideNonNestedAtRule = false;
1457
        this.print_string(this._ch);
1458
        this.eatWhitespace(true);
1459
 
1460
        // This maintains single line comments on the same
1461
        // line. Block comments are also affected, but
1462
        // a new line is always output before one inside
1463
        // that section
1464
        if (this._input.peek() !== '/') {
1465
          this._output.add_new_line();
1466
        }
1467
      } else {
1468
        this.print_string(this._ch);
1469
        this.eatWhitespace(true);
1470
        this._output.space_before_token = true;
1471
      }
1472
    } else if (this._ch === '(') { // may be a url
1473
      if (this._input.lookBack("url")) {
1474
        this.print_string(this._ch);
1475
        this.eatWhitespace();
1476
        parenLevel++;
1477
        this.indent();
1478
        this._ch = this._input.next();
1479
        if (this._ch === ')' || this._ch === '"' || this._ch === '\'') {
1480
          this._input.back();
1481
        } else if (this._ch) {
1482
          this.print_string(this._ch + this.eatString(')'));
1483
          if (parenLevel) {
1484
            parenLevel--;
1485
            this.outdent();
1486
          }
1487
        }
1488
      } else {
1489
        var space_needed = false;
1490
        if (this._input.lookBack("with")) {
1491
          // look back is not an accurate solution, we need tokens to confirm without whitespaces
1492
          space_needed = true;
1493
        }
1494
        this.preserveSingleSpace(isAfterSpace || space_needed);
1495
        this.print_string(this._ch);
1496
 
1497
        // handle scss/sass map
1498
        if (insidePropertyValue && previous_ch === "$" && this._options.selector_separator_newline) {
1499
          this._output.add_new_line();
1500
          insideScssMap = true;
1501
        } else {
1502
          this.eatWhitespace();
1503
          parenLevel++;
1504
          this.indent();
1505
        }
1506
      }
1507
    } else if (this._ch === ')') {
1508
      if (parenLevel) {
1509
        parenLevel--;
1510
        this.outdent();
1511
      }
1512
      if (insideScssMap && this._input.peek() === ";" && this._options.selector_separator_newline) {
1513
        insideScssMap = false;
1514
        this.outdent();
1515
        this._output.add_new_line();
1516
      }
1517
      this.print_string(this._ch);
1518
    } else if (this._ch === ',') {
1519
      this.print_string(this._ch);
1520
      this.eatWhitespace(true);
1521
      if (this._options.selector_separator_newline && (!insidePropertyValue || insideScssMap) && parenLevel === 0 && !insideNonNestedAtRule) {
1522
        this._output.add_new_line();
1523
      } else {
1524
        this._output.space_before_token = true;
1525
      }
1526
    } else if ((this._ch === '>' || this._ch === '+' || this._ch === '~') && !insidePropertyValue && parenLevel === 0) {
1527
      //handle combinator spacing
1528
      if (this._options.space_around_combinator) {
1529
        this._output.space_before_token = true;
1530
        this.print_string(this._ch);
1531
        this._output.space_before_token = true;
1532
      } else {
1533
        this.print_string(this._ch);
1534
        this.eatWhitespace();
1535
        // squash extra whitespace
1536
        if (this._ch && whitespaceChar.test(this._ch)) {
1537
          this._ch = '';
1538
        }
1539
      }
1540
    } else if (this._ch === ']') {
1541
      this.print_string(this._ch);
1542
    } else if (this._ch === '[') {
1543
      this.preserveSingleSpace(isAfterSpace);
1544
      this.print_string(this._ch);
1545
    } else if (this._ch === '=') { // no whitespace before or after
1546
      this.eatWhitespace();
1547
      this.print_string('=');
1548
      if (whitespaceChar.test(this._ch)) {
1549
        this._ch = '';
1550
      }
1551
    } else if (this._ch === '!' && !this._input.lookBack("\\")) { // !important
1552
      this._output.space_before_token = true;
1553
      this.print_string(this._ch);
1554
    } else {
1555
      var preserveAfterSpace = previous_ch === '"' || previous_ch === '\'';
1556
      this.preserveSingleSpace(preserveAfterSpace || isAfterSpace);
1557
      this.print_string(this._ch);
1558
 
1559
      if (!this._output.just_added_newline() && this._input.peek() === '\n' && insideNonSemiColonValues) {
1560
        this._output.add_new_line();
1561
      }
1562
    }
1563
  }
1564
 
1565
  var sweetCode = this._output.get_code(eol);
1566
 
1567
  return sweetCode;
1568
};
1569
 
1570
module.exports.Beautifier = Beautifier;
1571
 
1572
 
1573
/***/ }),
1574
/* 17 */
1575
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1576
 
1577
/*jshint node:true */
1578
/*
1579
 
1580
  The MIT License (MIT)
1581
 
1582
  Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.
1583
 
1584
  Permission is hereby granted, free of charge, to any person
1585
  obtaining a copy of this software and associated documentation files
1586
  (the "Software"), to deal in the Software without restriction,
1587
  including without limitation the rights to use, copy, modify, merge,
1588
  publish, distribute, sublicense, and/or sell copies of the Software,
1589
  and to permit persons to whom the Software is furnished to do so,
1590
  subject to the following conditions:
1591
 
1592
  The above copyright notice and this permission notice shall be
1593
  included in all copies or substantial portions of the Software.
1594
 
1595
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
1596
  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
1597
  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
1598
  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
1599
  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
1600
  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
1601
  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1602
  SOFTWARE.
1603
*/
1604
 
1605
 
1606
 
1607
var BaseOptions = (__webpack_require__(6).Options);
1608
 
1609
function Options(options) {
1610
  BaseOptions.call(this, options, 'css');
1611
 
1612
  this.selector_separator_newline = this._get_boolean('selector_separator_newline', true);
1613
  this.newline_between_rules = this._get_boolean('newline_between_rules', true);
1614
  var space_around_selector_separator = this._get_boolean('space_around_selector_separator');
1615
  this.space_around_combinator = this._get_boolean('space_around_combinator') || space_around_selector_separator;
1616
 
1617
  var brace_style_split = this._get_selection_list('brace_style', ['collapse', 'expand', 'end-expand', 'none', 'preserve-inline']);
1618
  this.brace_style = 'collapse';
1619
  for (var bs = 0; bs < brace_style_split.length; bs++) {
1620
    if (brace_style_split[bs] !== 'expand') {
1621
      // default to collapse, as only collapse|expand is implemented for now
1622
      this.brace_style = 'collapse';
1623
    } else {
1624
      this.brace_style = brace_style_split[bs];
1625
    }
1626
  }
1627
}
1628
Options.prototype = new BaseOptions();
1629
 
1630
 
1631
 
1632
module.exports.Options = Options;
1633
 
1634
 
1635
/***/ })
1636
/******/ 	]);
1637
/************************************************************************/
1638
/******/ 	// The module cache
1639
/******/ 	var __webpack_module_cache__ = {};
1640
/******/
1641
/******/ 	// The require function
1642
/******/ 	function __webpack_require__(moduleId) {
1643
/******/ 		// Check if module is in cache
1644
/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
1645
/******/ 		if (cachedModule !== undefined) {
1646
/******/ 			return cachedModule.exports;
1647
/******/ 		}
1648
/******/ 		// Create a new module (and put it into the cache)
1649
/******/ 		var module = __webpack_module_cache__[moduleId] = {
1650
/******/ 			// no module.id needed
1651
/******/ 			// no module.loaded needed
1652
/******/ 			exports: {}
1653
/******/ 		};
1654
/******/
1655
/******/ 		// Execute the module function
1656
/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
1657
/******/
1658
/******/ 		// Return the exports of the module
1659
/******/ 		return module.exports;
1660
/******/ 	}
1661
/******/
1662
/************************************************************************/
1663
/******/
1664
/******/ 	// startup
1665
/******/ 	// Load entry module and return exports
1666
/******/ 	// This entry module is referenced by other modules so it can't be inlined
1667
/******/ 	var __webpack_exports__ = __webpack_require__(15);
1668
/******/ 	legacy_beautify_css = __webpack_exports__;
1669
/******/
1670
/******/ })()
1671
;
1672
var css_beautify = legacy_beautify_css;
1673
/* Footer */
1674
if (typeof define === "function" && define.amd) {
1675
    // Add support for AMD ( https://github.com/amdjs/amdjs-api/wiki/AMD#defineamd-property- )
1676
    define([], function() {
1677
        return {
1678
            css_beautify: css_beautify
1679
        };
1680
    });
1681
} else if (typeof exports !== "undefined") {
1682
    // Add support for CommonJS. Just put this file somewhere on your require.paths
1683
    // and you will be able to `var html_beautify = require("beautify").html_beautify`.
1684
    exports.css_beautify = css_beautify;
1685
} else if (typeof window !== "undefined") {
1686
    // If we're running a web page and don't have either of the above, add our one global
1687
    window.css_beautify = css_beautify;
1688
} else if (typeof global !== "undefined") {
1689
    // If we don't even have window, try global.
1690
    global.css_beautify = css_beautify;
1691
}
1692
 
1693
}());