SiteOrigin CSS - Version 1.2.4

Version Description

  • 17 January 2019 =
  • Prefix so-css for all codemirror assets.
  • Prevent JS error when attempting to set active element to null.
Download this release

Release Info

Developer gpriday
Plugin Icon 128x128 SiteOrigin CSS
Version 1.2.4
Comparing to
See all releases

Code changes from version 1.2.3 to 1.2.4

Files changed (5) hide show
  1. js/inspector.js +488 -484
  2. js/inspector.min.js +1 -1
  3. lang/so-css.pot +155 -140
  4. readme.txt +7 -3
  5. so-css.php +24 -24
js/inspector.js CHANGED
@@ -1,484 +1,488 @@
1
-
2
- /* globals jQuery, Backbone, _, socssOptions, SPECIFICITY, console */
3
-
4
- ( function( $, _, socssOptions ){
5
-
6
- var socss = {
7
- model : { },
8
- collection : { },
9
- view : { },
10
- fn : {}
11
- };
12
-
13
- var getSelectorSpecificity = function(selector, useParts) {
14
- var specificities = [];
15
- var ruleSpecificity = SPECIFICITY.calculate( selector );
16
- for (var i = 0; i < ruleSpecificity.length; i++) {
17
- var specificity = ruleSpecificity[ i ];
18
- if ( useParts ) {
19
- for ( var j = 0; j < specificity.parts.length; j++ ) {
20
- var specificityPart = specificity.parts[ j ];
21
- // Recursive call to add specificities for parts.
22
- specificities = specificities.concat(getSelectorSpecificity(specificityPart.selector));
23
- }
24
- } else {
25
- specificities.push({
26
- 'selector': specificity.selector.trim(),
27
- 'specificity': parseInt(specificity.specificity.replace(/,/g, ''))
28
- });
29
- }
30
- }
31
- return specificities;
32
- };
33
-
34
- /**
35
- * This is the main view for the app
36
- */
37
- socss.view.inspector = Backbone.View.extend( {
38
-
39
- active: false,
40
- hl: false,
41
- hoverEl: false,
42
- pageSelectors: [],
43
-
44
- selectorTemplate: _.template('<div class="socss-selector"><%= selector %></div>'),
45
-
46
- initialize: function(){
47
- var thisView = this;
48
-
49
- this.hl = new socss.view.highlighter();
50
- this.hl.initialize();
51
-
52
- this.pageSelectors = socss.fn.pageSelectors();
53
-
54
- // Setup hovering
55
- $('body').on('mouseover', '*', function(e){
56
- if( !thisView.active ) {
57
- return true;
58
- }
59
-
60
- var $$ = $(this);
61
- if( $$.closest('.socss-element').length === 0 ) {
62
- e.stopPropagation();
63
- thisView.setHoverEl( $(this) );
64
- }
65
- });
66
-
67
- // Setup the click event
68
- $('body *').click(function( e ){
69
- if( !thisView.active || thisView.$el.is(':hover') ) {
70
- return true;
71
- }
72
-
73
- e.preventDefault();
74
- e.stopPropagation();
75
-
76
- var $$ = $(this);
77
- $$.blur();
78
- thisView.setActiveEl( thisView.hoverEl );
79
- });
80
-
81
- this.$('.socss-enable-inspector').click( function(){
82
- thisView.toggleActive();
83
- } );
84
-
85
- this.$el.mouseenter( function(){
86
- thisView.hl.clear();
87
- } );
88
-
89
- // Try register this inspector with the parent editor
90
- try {
91
- parent.socss.mainEditor.setInspector( this );
92
- }
93
- catch( err ){
94
- console.log( 'No editor to register this inspector with' );
95
- }
96
-
97
- },
98
-
99
- /**
100
- * Set the element that's currently being hovered
101
- *
102
- * @param hoverEl
103
- */
104
- setHoverEl: function( hoverEl ){
105
- this.hoverEl = hoverEl;
106
- this.hl.highlight( hoverEl );
107
- },
108
-
109
- activate: function(){
110
- this.active = true;
111
- $('body').addClass('socss-active');
112
- $('body').removeClass('socss-inactive');
113
- },
114
-
115
- deactivate: function(){
116
- this.active = false;
117
- $('body').addClass('socss-inactive');
118
- $('body').removeClass('socss-active');
119
- this.hl.clear();
120
- this.$('.socss-hierarchy').empty();
121
- },
122
-
123
- /**
124
- * Toggle the active status
125
- */
126
- toggleActive: function(){
127
- if( this.active ) {
128
- this.deactivate();
129
- }
130
- else {
131
- this.activate();
132
- }
133
- },
134
-
135
- /**
136
- * Set the element that we're busy inspecting
137
- * @param el
138
- */
139
- setActiveEl: function( el ) {
140
- var thisView = this;
141
-
142
- var $h = this.$('.socss-hierarchy');
143
- $h.empty();
144
-
145
- if (el.prop('tagName').toLowerCase() !== 'body') {
146
- var cel = $(el);
147
- do {
148
- $(this.selectorTemplate({selector: socss.fn.elSelector(cel)}))
149
- .prependTo($h)
150
- .data('el', cel);
151
- cel = cel.parent();
152
- } while (cel.prop('tagName').toLowerCase() !== 'body');
153
-
154
- $(this.selectorTemplate({selector: 'body'}))
155
- .prependTo($h)
156
- .data('el', $('body'));
157
-
158
- this.$('.socss-hierarchy .socss-selector')
159
- .hover(function () {
160
- thisView.hl.highlight($(this).data('el'));
161
- })
162
- .click(function (e) {
163
- e.preventDefault();
164
- e.stopPropagation();
165
- thisView.setActiveEl($(this).data('el'));
166
- });
167
- }
168
-
169
- // Scroll all the way left...
170
- $h.scrollLeft( 99999 );
171
-
172
- // Now lets add all the CSS selectors
173
- var selectors = this.pageSelectors.filter( function(a){
174
- // Use try to catch any malformed selectors
175
- try {
176
- return el.is( a.selector );
177
- }
178
- catch(err) {
179
- return false;
180
- }
181
- } );
182
-
183
- var container = this.$('.socss-selectors-window').empty();
184
-
185
- _.each( selectors, function( selector ){
186
- container.append(
187
- $( thisView.selectorTemplate( selector ) )
188
- .data( selector )
189
- );
190
- } );
191
- container.find('> div')
192
- .mouseenter( function(){
193
- thisView.hl.highlight( $(this).data('selector') );
194
- } )
195
- .click( function(e){
196
- e.preventDefault();
197
- e.stopPropagation();
198
-
199
- thisView.trigger( 'click_selector', $(this).data('selector') );
200
- } );
201
-
202
- // And the CSS attributes
203
- var attributes = socss.fn.elementAttributes(el);
204
- container = this.$('.socss-properties-window').empty();
205
-
206
- _.each( attributes, function(v, k){
207
- container.append(
208
- $( thisView.selectorTemplate( { selector: '<strong>' + k + '</strong>: ' + v } ) )
209
- .data( 'property', k + ': ' + v )
210
- );
211
- } );
212
-
213
- container.find('> div')
214
- .click( function(e){
215
- e.preventDefault();
216
- e.stopPropagation();
217
-
218
- thisView.trigger( 'click_property', $(this).data('property') );
219
- });
220
-
221
- // Display the link
222
- var link = el.closest('a[href]');
223
- var linkContainer = this.$('.socss-link');
224
- if( link.length ) {
225
- linkContainer.show().find('a')
226
- .html( link.attr('href').replace(/[\?&]*so_css_preview=1/, '') )
227
- .attr('href', link.attr('href') );
228
- }
229
- else {
230
- linkContainer.hide();
231
- }
232
-
233
- this.trigger('set_active_element', el, selectors);
234
- }
235
-
236
- } );
237
-
238
- socss.view.highlighter = Backbone.View.extend( {
239
- template: _.template( $('#socss-template-hover').html().trim() ),
240
- highlighted: [ ],
241
-
242
- highlight: function( els ){
243
- this.clear();
244
- var thisView = this;
245
-
246
- $(els).each(function(i, el){
247
- el = $(el);
248
-
249
- if( !el.is(':visible') ) {
250
- // Skip over invisible elements
251
- return true;
252
- }
253
-
254
- var hl = $( thisView.template() );
255
- hl.css({
256
- 'top' : el.offset().top,
257
- 'left' : el.offset().left,
258
- 'width' : el.outerWidth(),
259
- 'height' : el.outerHeight()
260
- }).appendTo( 'body' );
261
-
262
- var g;
263
-
264
- var padding = el.padding();
265
- for( var k in padding ) {
266
- if( parseInt( padding[k] ) > 0 ) {
267
- g = hl.find( '.socss-guide-padding.socss-guide-' + k ).show();
268
- if( k === 'top' || k === 'bottom' ) {
269
- g.css('height', padding[k]);
270
- }
271
- else {
272
- g.css('width', padding[k]);
273
- g.css({
274
- 'width': padding[k],
275
- 'top' : padding.top,
276
- 'bottom' : padding.bottom
277
- });
278
- }
279
- }
280
- }
281
-
282
- var margin = el.margin();
283
- for( var k in margin ) {
284
- if( parseInt( margin[k] ) > 0 ) {
285
- g = hl.find( '.socss-guide-margin.socss-guide-' + k ).show();
286
- if( k === 'top' || k === 'bottom' ) {
287
- g.css('height', margin[k]);
288
- }
289
- else {
290
- g.css('width', margin[k]);
291
- }
292
- }
293
- }
294
-
295
- thisView.highlighted.push( hl );
296
- } );
297
- },
298
-
299
- clear: function(){
300
- while( this.highlighted.length ) {
301
- this.highlighted.pop().remove();
302
- }
303
- }
304
- } );
305
-
306
- socss.parsedCss = {};
307
- socss.fn.getParsedCss = function(){
308
- // Load all the parsed CSS
309
- if( Object.keys(socss.parsedCss).length === 0 ) {
310
- var parser = window.css;
311
- $('.socss-theme-styles').each(function(){
312
- var $$ = $(this);
313
- var p = parser.parse( $$.html(), {
314
- silent: true
315
- } );
316
- socss.parsedCss[ $$.attr('id') ] = p;
317
- });
318
- }
319
- return socss.parsedCss;
320
- };
321
-
322
- /**
323
- * Function to get all the available page selectors
324
- */
325
- socss.fn.pageSelectors = function(){
326
- var selectors = [];
327
- var parsedCss = socss.fn.getParsedCss();
328
-
329
- for( var k in parsedCss ) {
330
- var rules = parsedCss[k].stylesheet.rules;
331
- for( var i = 0; i < rules.length; i++ ) {
332
- if (typeof rules[i].selectors === 'undefined') {
333
- continue;
334
- }
335
-
336
- for(var j = 0; j < rules[i].selectors.length; j++) {
337
- selectors = selectors.concat( getSelectorSpecificity( rules[i].selectors[j] ) );
338
- }
339
- }
340
- }
341
-
342
- // Also add selectors for all the elements in the
343
- $('body *').each(function(){
344
- var $$ = $(this);
345
- var elName = socss.fn.elSelector( $$ );
346
-
347
- selectors = selectors.concat(getSelectorSpecificity(elName));
348
- });
349
-
350
- var $body = $('body');
351
- var bName = socss.fn.elSelector($body);
352
- selectors = selectors.concat(getSelectorSpecificity(bName, true));
353
-
354
- selectors = _.uniq( selectors, false, function( a ){
355
- return a.selector;
356
- } );
357
-
358
- selectors.sort(function(a, b){
359
- return a.specificity > b.specificity ? -1 : 1;
360
- });
361
-
362
- return selectors;
363
- };
364
-
365
- socss.fn.elementAttributes = function( el ) {
366
- if( !document.styleSheets ) {
367
- return [];
368
- }
369
-
370
- var elProperties = [];
371
-
372
- var trimFunc = function(e) {
373
- return e.trim();
374
- };
375
-
376
- var filterFunc = function(e){
377
- return e !== '';
378
- };
379
-
380
- var splitFunc = function(e) {
381
- return e.split(':').map( trimFunc );
382
- };
383
-
384
- var parsedCss = socss.fn.getParsedCss();
385
-
386
- var isAtRule = function (ruleType) {
387
- switch(ruleType) {
388
- case 'charset':
389
- case 'custom-media':
390
- case 'document':
391
- case 'font-face':
392
- case 'host':
393
- case 'import':
394
- case 'keyframes':
395
- case 'keyframe':
396
- case 'media':
397
- case 'namespace':
398
- case 'page':
399
- case 'supports':
400
- return true;
401
-
402
- }
403
- return false;
404
- };
405
-
406
- for( var k in parsedCss ) {
407
- var rules = parsedCss[k].stylesheet.rules;
408
- for( var i = 0; i < rules.length; i++ ) {
409
- var rule = rules[i];
410
- if (
411
- typeof rule.selectors === 'undefined' || isAtRule(rule.type)
412
- ) {
413
- continue;
414
- }
415
-
416
- for(var j = 0; j < rule.selectors.length; j++) {
417
- var ruleSpecificity = SPECIFICITY.calculate( rule.selectors[j] );
418
- for (var l = 0; l < ruleSpecificity.length; l++) {
419
- try {
420
- if ( el.is( ruleSpecificity[l].selector ) ) {
421
- var declarations = rule.declarations;
422
- for (var l = 0; l < declarations.length; l++) {
423
- elProperties.push({
424
- 'name': declarations[l].property,
425
- 'value': declarations[l].value,
426
- 'specificity': parseInt( ruleSpecificity[l].specificity.replace( /,/g, '' ) )
427
- });
428
- }
429
- }
430
- }
431
- catch (e) {
432
- // For now, we're just going to ignore rules that trigger errors
433
- }
434
- }
435
- }
436
-
437
- }
438
- }
439
-
440
- elProperties.sort( function(a,b) {
441
- return a.specificity > b.specificity ? 1 : -1;
442
- }).reverse();
443
-
444
- var returnProperties = {};
445
- for( var pi = 0; pi < elProperties.length; pi++ ) {
446
- if( typeof returnProperties[elProperties[pi].name] === 'undefined' ) {
447
- returnProperties[elProperties[pi].name] = elProperties[pi].value;
448
- }
449
- }
450
-
451
- return returnProperties;
452
- };
453
-
454
- socss.fn.elSelector = function( el ){
455
- var elName = '';
456
- if( el.attr('id') !== undefined ) {
457
- elName += '#' + el.attr('id');
458
- }
459
- if( el.attr('class') !== undefined ) {
460
- elName += '.' + el.attr('class').replace(/\s+/g, '.');
461
- }
462
-
463
- if( elName === '' ) {
464
- elName = el.prop('tagName').toLowerCase();
465
- }
466
-
467
- return elName;
468
- };
469
-
470
- window.socssInspector = socss;
471
-
472
- } ) ( jQuery, _, socssOptions );
473
-
474
- jQuery( function($){
475
- var socss = window.socssInspector;
476
-
477
- // Setup the editor
478
- var inspector = new socss.view.inspector( {
479
- el : $('#socss-inspector-interface').get(0)
480
- } );
481
- inspector.activate();
482
-
483
- window.socssInspector.mainInspector = inspector;
484
- } );
 
 
 
 
1
+
2
+ /* globals jQuery, Backbone, _, socssOptions, SPECIFICITY, console */
3
+
4
+ ( function( $, _, socssOptions ){
5
+
6
+ var socss = {
7
+ model : { },
8
+ collection : { },
9
+ view : { },
10
+ fn : {}
11
+ };
12
+
13
+ var getSelectorSpecificity = function(selector, useParts) {
14
+ var specificities = [];
15
+ var ruleSpecificity = SPECIFICITY.calculate( selector );
16
+ for (var i = 0; i < ruleSpecificity.length; i++) {
17
+ var specificity = ruleSpecificity[ i ];
18
+ if ( useParts ) {
19
+ for ( var j = 0; j < specificity.parts.length; j++ ) {
20
+ var specificityPart = specificity.parts[ j ];
21
+ // Recursive call to add specificities for parts.
22
+ specificities = specificities.concat(getSelectorSpecificity(specificityPart.selector));
23
+ }
24
+ } else {
25
+ specificities.push({
26
+ 'selector': specificity.selector.trim(),
27
+ 'specificity': parseInt(specificity.specificity.replace(/,/g, ''))
28
+ });
29
+ }
30
+ }
31
+ return specificities;
32
+ };
33
+
34
+ /**
35
+ * This is the main view for the app
36
+ */
37
+ socss.view.inspector = Backbone.View.extend( {
38
+
39
+ active: false,
40
+ hl: false,
41
+ hoverEl: false,
42
+ pageSelectors: [],
43
+
44
+ selectorTemplate: _.template('<div class="socss-selector"><%= selector %></div>'),
45
+
46
+ initialize: function(){
47
+ var thisView = this;
48
+
49
+ this.hl = new socss.view.highlighter();
50
+ this.hl.initialize();
51
+
52
+ this.pageSelectors = socss.fn.pageSelectors();
53
+
54
+ // Setup hovering
55
+ $('body').on('mouseover', '*', function(e){
56
+ if( !thisView.active ) {
57
+ return true;
58
+ }
59
+
60
+ var $$ = $(this);
61
+ if( $$.closest('.socss-element').length === 0 ) {
62
+ e.stopPropagation();
63
+ thisView.setHoverEl( $(this) );
64
+ }
65
+ });
66
+
67
+ // Setup the click event
68
+ $('body *').click(function( e ){
69
+ if( !thisView.active || thisView.$el.is(':hover') ) {
70
+ return true;
71
+ }
72
+
73
+ e.preventDefault();
74
+ e.stopPropagation();
75
+
76
+ var $$ = $(this);
77
+ $$.blur();
78
+ thisView.setActiveEl( thisView.hoverEl );
79
+ });
80
+
81
+ this.$('.socss-enable-inspector').click( function(){
82
+ thisView.toggleActive();
83
+ } );
84
+
85
+ this.$el.mouseenter( function(){
86
+ thisView.hl.clear();
87
+ } );
88
+
89
+ // Try register this inspector with the parent editor
90
+ try {
91
+ parent.socss.mainEditor.setInspector( this );
92
+ }
93
+ catch( err ){
94
+ console.log( 'No editor to register this inspector with' );
95
+ }
96
+
97
+ },
98
+
99
+ /**
100
+ * Set the element that's currently being hovered
101
+ *
102
+ * @param hoverEl
103
+ */
104
+ setHoverEl: function( hoverEl ){
105
+ this.hoverEl = hoverEl;
106
+ this.hl.highlight( hoverEl );
107
+ },
108
+
109
+ activate: function(){
110
+ this.active = true;
111
+ $('body').addClass('socss-active');
112
+ $('body').removeClass('socss-inactive');
113
+ },
114
+
115
+ deactivate: function(){
116
+ this.active = false;
117
+ $('body').addClass('socss-inactive');
118
+ $('body').removeClass('socss-active');
119
+ this.hl.clear();
120
+ this.$('.socss-hierarchy').empty();
121
+ },
122
+
123
+ /**
124
+ * Toggle the active status
125
+ */
126
+ toggleActive: function(){
127
+ if( this.active ) {
128
+ this.deactivate();
129
+ }
130
+ else {
131
+ this.activate();
132
+ }
133
+ },
134
+
135
+ /**
136
+ * Set the element that we're busy inspecting
137
+ * @param el
138
+ */
139
+ setActiveEl: function( el ) {
140
+ var thisView = this;
141
+
142
+ var $h = this.$('.socss-hierarchy');
143
+ $h.empty();
144
+
145
+ if ( !el ) {
146
+ return;
147
+ }
148
+
149
+ if (el.prop('tagName').toLowerCase() !== 'body') {
150
+ var cel = $(el);
151
+ do {
152
+ $(this.selectorTemplate({selector: socss.fn.elSelector(cel)}))
153
+ .prependTo($h)
154
+ .data('el', cel);
155
+ cel = cel.parent();
156
+ } while (cel.prop('tagName').toLowerCase() !== 'body');
157
+
158
+ $(this.selectorTemplate({selector: 'body'}))
159
+ .prependTo($h)
160
+ .data('el', $('body'));
161
+
162
+ this.$('.socss-hierarchy .socss-selector')
163
+ .hover(function () {
164
+ thisView.hl.highlight($(this).data('el'));
165
+ })
166
+ .click(function (e) {
167
+ e.preventDefault();
168
+ e.stopPropagation();
169
+ thisView.setActiveEl($(this).data('el'));
170
+ });
171
+ }
172
+
173
+ // Scroll all the way left...
174
+ $h.scrollLeft( 99999 );
175
+
176
+ // Now lets add all the CSS selectors
177
+ var selectors = this.pageSelectors.filter( function(a){
178
+ // Use try to catch any malformed selectors
179
+ try {
180
+ return el.is( a.selector );
181
+ }
182
+ catch(err) {
183
+ return false;
184
+ }
185
+ } );
186
+
187
+ var container = this.$('.socss-selectors-window').empty();
188
+
189
+ _.each( selectors, function( selector ){
190
+ container.append(
191
+ $( thisView.selectorTemplate( selector ) )
192
+ .data( selector )
193
+ );
194
+ } );
195
+ container.find('> div')
196
+ .mouseenter( function(){
197
+ thisView.hl.highlight( $(this).data('selector') );
198
+ } )
199
+ .click( function(e){
200
+ e.preventDefault();
201
+ e.stopPropagation();
202
+
203
+ thisView.trigger( 'click_selector', $(this).data('selector') );
204
+ } );
205
+
206
+ // And the CSS attributes
207
+ var attributes = socss.fn.elementAttributes(el);
208
+ container = this.$('.socss-properties-window').empty();
209
+
210
+ _.each( attributes, function(v, k){
211
+ container.append(
212
+ $( thisView.selectorTemplate( { selector: '<strong>' + k + '</strong>: ' + v } ) )
213
+ .data( 'property', k + ': ' + v )
214
+ );
215
+ } );
216
+
217
+ container.find('> div')
218
+ .click( function(e){
219
+ e.preventDefault();
220
+ e.stopPropagation();
221
+
222
+ thisView.trigger( 'click_property', $(this).data('property') );
223
+ });
224
+
225
+ // Display the link
226
+ var link = el.closest('a[href]');
227
+ var linkContainer = this.$('.socss-link');
228
+ if( link.length ) {
229
+ linkContainer.show().find('a')
230
+ .html( link.attr('href').replace(/[\?&]*so_css_preview=1/, '') )
231
+ .attr('href', link.attr('href') );
232
+ }
233
+ else {
234
+ linkContainer.hide();
235
+ }
236
+
237
+ this.trigger('set_active_element', el, selectors);
238
+ }
239
+
240
+ } );
241
+
242
+ socss.view.highlighter = Backbone.View.extend( {
243
+ template: _.template( $('#socss-template-hover').html().trim() ),
244
+ highlighted: [ ],
245
+
246
+ highlight: function( els ){
247
+ this.clear();
248
+ var thisView = this;
249
+
250
+ $(els).each(function(i, el){
251
+ el = $(el);
252
+
253
+ if( !el.is(':visible') ) {
254
+ // Skip over invisible elements
255
+ return true;
256
+ }
257
+
258
+ var hl = $( thisView.template() );
259
+ hl.css({
260
+ 'top' : el.offset().top,
261
+ 'left' : el.offset().left,
262
+ 'width' : el.outerWidth(),
263
+ 'height' : el.outerHeight()
264
+ }).appendTo( 'body' );
265
+
266
+ var g;
267
+
268
+ var padding = el.padding();
269
+ for( var k in padding ) {
270
+ if( parseInt( padding[k] ) > 0 ) {
271
+ g = hl.find( '.socss-guide-padding.socss-guide-' + k ).show();
272
+ if( k === 'top' || k === 'bottom' ) {
273
+ g.css('height', padding[k]);
274
+ }
275
+ else {
276
+ g.css('width', padding[k]);
277
+ g.css({
278
+ 'width': padding[k],
279
+ 'top' : padding.top,
280
+ 'bottom' : padding.bottom
281
+ });
282
+ }
283
+ }
284
+ }
285
+
286
+ var margin = el.margin();
287
+ for( var k in margin ) {
288
+ if( parseInt( margin[k] ) > 0 ) {
289
+ g = hl.find( '.socss-guide-margin.socss-guide-' + k ).show();
290
+ if( k === 'top' || k === 'bottom' ) {
291
+ g.css('height', margin[k]);
292
+ }
293
+ else {
294
+ g.css('width', margin[k]);
295
+ }
296
+ }
297
+ }
298
+
299
+ thisView.highlighted.push( hl );
300
+ } );
301
+ },
302
+
303
+ clear: function(){
304
+ while( this.highlighted.length ) {
305
+ this.highlighted.pop().remove();
306
+ }
307
+ }
308
+ } );
309
+
310
+ socss.parsedCss = {};
311
+ socss.fn.getParsedCss = function(){
312
+ // Load all the parsed CSS
313
+ if( Object.keys(socss.parsedCss).length === 0 ) {
314
+ var parser = window.css;
315
+ $('.socss-theme-styles').each(function(){
316
+ var $$ = $(this);
317
+ var p = parser.parse( $$.html(), {
318
+ silent: true
319
+ } );
320
+ socss.parsedCss[ $$.attr('id') ] = p;
321
+ });
322
+ }
323
+ return socss.parsedCss;
324
+ };
325
+
326
+ /**
327
+ * Function to get all the available page selectors
328
+ */
329
+ socss.fn.pageSelectors = function(){
330
+ var selectors = [];
331
+ var parsedCss = socss.fn.getParsedCss();
332
+
333
+ for( var k in parsedCss ) {
334
+ var rules = parsedCss[k].stylesheet.rules;
335
+ for( var i = 0; i < rules.length; i++ ) {
336
+ if (typeof rules[i].selectors === 'undefined') {
337
+ continue;
338
+ }
339
+
340
+ for(var j = 0; j < rules[i].selectors.length; j++) {
341
+ selectors = selectors.concat( getSelectorSpecificity( rules[i].selectors[j] ) );
342
+ }
343
+ }
344
+ }
345
+
346
+ // Also add selectors for all the elements in the
347
+ $('body *').each(function(){
348
+ var $$ = $(this);
349
+ var elName = socss.fn.elSelector( $$ );
350
+
351
+ selectors = selectors.concat(getSelectorSpecificity(elName));
352
+ });
353
+
354
+ var $body = $('body');
355
+ var bName = socss.fn.elSelector($body);
356
+ selectors = selectors.concat(getSelectorSpecificity(bName, true));
357
+
358
+ selectors = _.uniq( selectors, false, function( a ){
359
+ return a.selector;
360
+ } );
361
+
362
+ selectors.sort(function(a, b){
363
+ return a.specificity > b.specificity ? -1 : 1;
364
+ });
365
+
366
+ return selectors;
367
+ };
368
+
369
+ socss.fn.elementAttributes = function( el ) {
370
+ if( !document.styleSheets ) {
371
+ return [];
372
+ }
373
+
374
+ var elProperties = [];
375
+
376
+ var trimFunc = function(e) {
377
+ return e.trim();
378
+ };
379
+
380
+ var filterFunc = function(e){
381
+ return e !== '';
382
+ };
383
+
384
+ var splitFunc = function(e) {
385
+ return e.split(':').map( trimFunc );
386
+ };
387
+
388
+ var parsedCss = socss.fn.getParsedCss();
389
+
390
+ var isAtRule = function (ruleType) {
391
+ switch(ruleType) {
392
+ case 'charset':
393
+ case 'custom-media':
394
+ case 'document':
395
+ case 'font-face':
396
+ case 'host':
397
+ case 'import':
398
+ case 'keyframes':
399
+ case 'keyframe':
400
+ case 'media':
401
+ case 'namespace':
402
+ case 'page':
403
+ case 'supports':
404
+ return true;
405
+
406
+ }
407
+ return false;
408
+ };
409
+
410
+ for( var k in parsedCss ) {
411
+ var rules = parsedCss[k].stylesheet.rules;
412
+ for( var i = 0; i < rules.length; i++ ) {
413
+ var rule = rules[i];
414
+ if (
415
+ typeof rule.selectors === 'undefined' || isAtRule(rule.type)
416
+ ) {
417
+ continue;
418
+ }
419
+
420
+ for(var j = 0; j < rule.selectors.length; j++) {
421
+ var ruleSpecificity = SPECIFICITY.calculate( rule.selectors[j] );
422
+ for (var l = 0; l < ruleSpecificity.length; l++) {
423
+ try {
424
+ if ( el.is( ruleSpecificity[l].selector ) ) {
425
+ var declarations = rule.declarations;
426
+ for (var l = 0; l < declarations.length; l++) {
427
+ elProperties.push({
428
+ 'name': declarations[l].property,
429
+ 'value': declarations[l].value,
430
+ 'specificity': parseInt( ruleSpecificity[l].specificity.replace( /,/g, '' ) )
431
+ });
432
+ }
433
+ }
434
+ }
435
+ catch (e) {
436
+ // For now, we're just going to ignore rules that trigger errors
437
+ }
438
+ }
439
+ }
440
+
441
+ }
442
+ }
443
+
444
+ elProperties.sort( function(a,b) {
445
+ return a.specificity > b.specificity ? 1 : -1;
446
+ }).reverse();
447
+
448
+ var returnProperties = {};
449
+ for( var pi = 0; pi < elProperties.length; pi++ ) {
450
+ if( typeof returnProperties[elProperties[pi].name] === 'undefined' ) {
451
+ returnProperties[elProperties[pi].name] = elProperties[pi].value;
452
+ }
453
+ }
454
+
455
+ return returnProperties;
456
+ };
457
+
458
+ socss.fn.elSelector = function( el ){
459
+ var elName = '';
460
+ if( el.attr('id') !== undefined ) {
461
+ elName += '#' + el.attr('id');
462
+ }
463
+ if( el.attr('class') !== undefined ) {
464
+ elName += '.' + el.attr('class').replace(/\s+/g, '.');
465
+ }
466
+
467
+ if( elName === '' ) {
468
+ elName = el.prop('tagName').toLowerCase();
469
+ }
470
+
471
+ return elName;
472
+ };
473
+
474
+ window.socssInspector = socss;
475
+
476
+ } ) ( jQuery, _, socssOptions );
477
+
478
+ jQuery( function($){
479
+ var socss = window.socssInspector;
480
+
481
+ // Setup the editor
482
+ var inspector = new socss.view.inspector( {
483
+ el : $('#socss-inspector-interface').get(0)
484
+ } );
485
+ inspector.activate();
486
+
487
+ window.socssInspector.mainInspector = inspector;
488
+ } );
js/inspector.min.js CHANGED
@@ -1 +1 @@
1
- !function(e,t,s){var i={model:{},collection:{},view:{},fn:{}},r=function(e,t){for(var s=[],i=SPECIFICITY.calculate(e),o=0;o<i.length;o++){var c=i[o];if(t)for(var a=0;a<c.parts.length;a++){var n=c.parts[a];s=s.concat(r(n.selector))}else s.push({selector:c.selector.trim(),specificity:parseInt(c.specificity.replace(/,/g,""))})}return s};i.view.inspector=Backbone.View.extend({active:!1,hl:!1,hoverEl:!1,pageSelectors:[],selectorTemplate:t.template('<div class="socss-selector"><%= selector %></div>'),initialize:function(){var t=this;this.hl=new i.view.highlighter,this.hl.initialize(),this.pageSelectors=i.fn.pageSelectors(),e("body").on("mouseover","*",function(s){if(!t.active)return!0;0===e(this).closest(".socss-element").length&&(s.stopPropagation(),t.setHoverEl(e(this)))}),e("body *").click(function(s){if(!t.active||t.$el.is(":hover"))return!0;s.preventDefault(),s.stopPropagation(),e(this).blur(),t.setActiveEl(t.hoverEl)}),this.$(".socss-enable-inspector").click(function(){t.toggleActive()}),this.$el.mouseenter(function(){t.hl.clear()});try{parent.socss.mainEditor.setInspector(this)}catch(e){console.log("No editor to register this inspector with")}},setHoverEl:function(e){this.hoverEl=e,this.hl.highlight(e)},activate:function(){this.active=!0,e("body").addClass("socss-active"),e("body").removeClass("socss-inactive")},deactivate:function(){this.active=!1,e("body").addClass("socss-inactive"),e("body").removeClass("socss-active"),this.hl.clear(),this.$(".socss-hierarchy").empty()},toggleActive:function(){this.active?this.deactivate():this.activate()},setActiveEl:function(s){var r=this,o=this.$(".socss-hierarchy");if(o.empty(),"body"!==s.prop("tagName").toLowerCase()){var c=e(s);do{e(this.selectorTemplate({selector:i.fn.elSelector(c)})).prependTo(o).data("el",c),c=c.parent()}while("body"!==c.prop("tagName").toLowerCase());e(this.selectorTemplate({selector:"body"})).prependTo(o).data("el",e("body")),this.$(".socss-hierarchy .socss-selector").hover(function(){r.hl.highlight(e(this).data("el"))}).click(function(t){t.preventDefault(),t.stopPropagation(),r.setActiveEl(e(this).data("el"))})}o.scrollLeft(99999);var a=this.pageSelectors.filter(function(e){try{return s.is(e.selector)}catch(e){return!1}}),n=this.$(".socss-selectors-window").empty();t.each(a,function(t){n.append(e(r.selectorTemplate(t)).data(t))}),n.find("> div").mouseenter(function(){r.hl.highlight(e(this).data("selector"))}).click(function(t){t.preventDefault(),t.stopPropagation(),r.trigger("click_selector",e(this).data("selector"))});var l=i.fn.elementAttributes(s);n=this.$(".socss-properties-window").empty(),t.each(l,function(t,s){n.append(e(r.selectorTemplate({selector:"<strong>"+s+"</strong>: "+t})).data("property",s+": "+t))}),n.find("> div").click(function(t){t.preventDefault(),t.stopPropagation(),r.trigger("click_property",e(this).data("property"))});var h=s.closest("a[href]"),p=this.$(".socss-link");h.length?p.show().find("a").html(h.attr("href").replace(/[\?&]*so_css_preview=1/,"")).attr("href",h.attr("href")):p.hide(),this.trigger("set_active_element",s,a)}}),i.view.highlighter=Backbone.View.extend({template:t.template(e("#socss-template-hover").html().trim()),highlighted:[],highlight:function(t){this.clear();var s=this;e(t).each(function(t,i){if(i=e(i),!i.is(":visible"))return!0;var r=e(s.template());r.css({top:i.offset().top,left:i.offset().left,width:i.outerWidth(),height:i.outerHeight()}).appendTo("body");var o,c=i.padding();for(var a in c)parseInt(c[a])>0&&(o=r.find(".socss-guide-padding.socss-guide-"+a).show(),"top"===a||"bottom"===a?o.css("height",c[a]):(o.css("width",c[a]),o.css({width:c[a],top:c.top,bottom:c.bottom})));var n=i.margin();for(var a in n)parseInt(n[a])>0&&(o=r.find(".socss-guide-margin.socss-guide-"+a).show(),"top"===a||"bottom"===a?o.css("height",n[a]):o.css("width",n[a]));s.highlighted.push(r)})},clear:function(){for(;this.highlighted.length;)this.highlighted.pop().remove()}}),i.parsedCss={},i.fn.getParsedCss=function(){if(0===Object.keys(i.parsedCss).length){var t=window.css;e(".socss-theme-styles").each(function(){var s=e(this),r=t.parse(s.html(),{silent:!0});i.parsedCss[s.attr("id")]=r})}return i.parsedCss},i.fn.pageSelectors=function(){var s=[],o=i.fn.getParsedCss();for(var c in o)for(var a=o[c].stylesheet.rules,n=0;n<a.length;n++)if(void 0!==a[n].selectors)for(var l=0;l<a[n].selectors.length;l++)s=s.concat(r(a[n].selectors[l]));e("body *").each(function(){var t=e(this),o=i.fn.elSelector(t);s=s.concat(r(o))});var h=e("body"),p=i.fn.elSelector(h);return s=s.concat(r(p,!0)),s=t.uniq(s,!1,function(e){return e.selector}),s.sort(function(e,t){return e.specificity>t.specificity?-1:1}),s},i.fn.elementAttributes=function(e){if(!document.styleSheets)return[];var t=[],s=i.fn.getParsedCss();for(var r in s)for(var o=s[r].stylesheet.rules,c=0;c<o.length;c++){var a=o[c];if(void 0!==a.selectors&&!function(e){switch(e){case"charset":case"custom-media":case"document":case"font-face":case"host":case"import":case"keyframes":case"keyframe":case"media":case"namespace":case"page":case"supports":return!0}return!1}(a.type))for(var n=0;n<a.selectors.length;n++)for(var l=SPECIFICITY.calculate(a.selectors[n]),h=0;h<l.length;h++)try{if(e.is(l[h].selector))for(var p=a.declarations,h=0;h<p.length;h++)t.push({name:p[h].property,value:p[h].value,specificity:parseInt(l[h].specificity.replace(/,/g,""))})}catch(e){}}t.sort(function(e,t){return e.specificity>t.specificity?1:-1}).reverse();for(var f={},d=0;d<t.length;d++)void 0===f[t[d].name]&&(f[t[d].name]=t[d].value);return f},i.fn.elSelector=function(e){var t="";return void 0!==e.attr("id")&&(t+="#"+e.attr("id")),void 0!==e.attr("class")&&(t+="."+e.attr("class").replace(/\s+/g,".")),""===t&&(t=e.prop("tagName").toLowerCase()),t},window.socssInspector=i}(jQuery,_,socssOptions),jQuery(function(e){var t=window.socssInspector,s=new t.view.inspector({el:e("#socss-inspector-interface").get(0)});s.activate(),window.socssInspector.mainInspector=s});
1
+ !function(l,h,e){var d={model:{},collection:{},view:{},fn:{}},n=function(e,t){for(var s=[],i=SPECIFICITY.calculate(e),r=0;r<i.length;r++){var o=i[r];if(t)for(var c=0;c<o.parts.length;c++){var a=o.parts[c];s=s.concat(n(a.selector))}else s.push({selector:o.selector.trim(),specificity:parseInt(o.specificity.replace(/,/g,""))})}return s};d.view.inspector=Backbone.View.extend({active:!1,hl:!1,hoverEl:!1,pageSelectors:[],selectorTemplate:h.template('<div class="socss-selector"><%= selector %></div>'),initialize:function(){var t=this;this.hl=new d.view.highlighter,this.hl.initialize(),this.pageSelectors=d.fn.pageSelectors(),l("body").on("mouseover","*",function(e){if(!t.active)return!0;0===l(this).closest(".socss-element").length&&(e.stopPropagation(),t.setHoverEl(l(this)))}),l("body *").click(function(e){if(!t.active||t.$el.is(":hover"))return!0;e.preventDefault(),e.stopPropagation(),l(this).blur(),t.setActiveEl(t.hoverEl)}),this.$(".socss-enable-inspector").click(function(){t.toggleActive()}),this.$el.mouseenter(function(){t.hl.clear()});try{parent.socss.mainEditor.setInspector(this)}catch(e){console.log("No editor to register this inspector with")}},setHoverEl:function(e){this.hoverEl=e,this.hl.highlight(e)},activate:function(){this.active=!0,l("body").addClass("socss-active"),l("body").removeClass("socss-inactive")},deactivate:function(){this.active=!1,l("body").addClass("socss-inactive"),l("body").removeClass("socss-active"),this.hl.clear(),this.$(".socss-hierarchy").empty()},toggleActive:function(){this.active?this.deactivate():this.activate()},setActiveEl:function(t){var s=this,e=this.$(".socss-hierarchy");if(e.empty(),t){if("body"!==t.prop("tagName").toLowerCase()){for(var i=l(t);l(this.selectorTemplate({selector:d.fn.elSelector(i)})).prependTo(e).data("el",i),"body"!==(i=i.parent()).prop("tagName").toLowerCase(););l(this.selectorTemplate({selector:"body"})).prependTo(e).data("el",l("body")),this.$(".socss-hierarchy .socss-selector").hover(function(){s.hl.highlight(l(this).data("el"))}).click(function(e){e.preventDefault(),e.stopPropagation(),s.setActiveEl(l(this).data("el"))})}e.scrollLeft(99999);var r=this.pageSelectors.filter(function(e){try{return t.is(e.selector)}catch(e){return!1}}),o=this.$(".socss-selectors-window").empty();h.each(r,function(e){o.append(l(s.selectorTemplate(e)).data(e))}),o.find("> div").mouseenter(function(){s.hl.highlight(l(this).data("selector"))}).click(function(e){e.preventDefault(),e.stopPropagation(),s.trigger("click_selector",l(this).data("selector"))});var c=d.fn.elementAttributes(t);o=this.$(".socss-properties-window").empty(),h.each(c,function(e,t){o.append(l(s.selectorTemplate({selector:"<strong>"+t+"</strong>: "+e})).data("property",t+": "+e))}),o.find("> div").click(function(e){e.preventDefault(),e.stopPropagation(),s.trigger("click_property",l(this).data("property"))});var a=t.closest("a[href]"),n=this.$(".socss-link");a.length?n.show().find("a").html(a.attr("href").replace(/[\?&]*so_css_preview=1/,"")).attr("href",a.attr("href")):n.hide(),this.trigger("set_active_element",t,r)}}}),d.view.highlighter=Backbone.View.extend({template:h.template(l("#socss-template-hover").html().trim()),highlighted:[],highlight:function(e){this.clear();var a=this;l(e).each(function(e,t){if(!(t=l(t)).is(":visible"))return!0;var s,i=l(a.template());i.css({top:t.offset().top,left:t.offset().left,width:t.outerWidth(),height:t.outerHeight()}).appendTo("body");var r=t.padding();for(var o in r)0<parseInt(r[o])&&(s=i.find(".socss-guide-padding.socss-guide-"+o).show(),"top"===o||"bottom"===o?s.css("height",r[o]):(s.css("width",r[o]),s.css({width:r[o],top:r.top,bottom:r.bottom})));var c=t.margin();for(var o in c)0<parseInt(c[o])&&(s=i.find(".socss-guide-margin.socss-guide-"+o).show(),"top"===o||"bottom"===o?s.css("height",c[o]):s.css("width",c[o]));a.highlighted.push(i)})},clear:function(){for(;this.highlighted.length;)this.highlighted.pop().remove()}}),d.parsedCss={},d.fn.getParsedCss=function(){if(0===Object.keys(d.parsedCss).length){var s=window.css;l(".socss-theme-styles").each(function(){var e=l(this),t=s.parse(e.html(),{silent:!0});d.parsedCss[e.attr("id")]=t})}return d.parsedCss},d.fn.pageSelectors=function(){var s=[],e=d.fn.getParsedCss();for(var t in e)for(var i=e[t].stylesheet.rules,r=0;r<i.length;r++)if(void 0!==i[r].selectors)for(var o=0;o<i[r].selectors.length;o++)s=s.concat(n(i[r].selectors[o]));l("body *").each(function(){var e=l(this),t=d.fn.elSelector(e);s=s.concat(n(t))});var c=l("body"),a=d.fn.elSelector(c);return s=s.concat(n(a,!0)),(s=h.uniq(s,!1,function(e){return e.selector})).sort(function(e,t){return e.specificity>t.specificity?-1:1}),s},d.fn.elementAttributes=function(e){if(!document.styleSheets)return[];var t=[],s=d.fn.getParsedCss(),i=function(e){switch(e){case"charset":case"custom-media":case"document":case"font-face":case"host":case"import":case"keyframes":case"keyframe":case"media":case"namespace":case"page":case"supports":return!0}return!1};for(var r in s)for(var o=s[r].stylesheet.rules,c=0;c<o.length;c++){var a=o[c];if(void 0!==a.selectors&&!i(a.type))for(var n=0;n<a.selectors.length;n++)for(var l=SPECIFICITY.calculate(a.selectors[n]),h=0;h<l.length;h++)try{if(e.is(l[h].selector)){var p=a.declarations;for(h=0;h<p.length;h++)t.push({name:p[h].property,value:p[h].value,specificity:parseInt(l[h].specificity.replace(/,/g,""))})}}catch(e){}}t.sort(function(e,t){return e.specificity>t.specificity?1:-1}).reverse();for(var f={},v=0;v<t.length;v++)void 0===f[t[v].name]&&(f[t[v].name]=t[v].value);return f},d.fn.elSelector=function(e){var t="";return void 0!==e.attr("id")&&(t+="#"+e.attr("id")),void 0!==e.attr("class")&&(t+="."+e.attr("class").replace(/\s+/g,".")),""===t&&(t=e.prop("tagName").toLowerCase()),t},window.socssInspector=d}(jQuery,_,socssOptions),jQuery(function(e){var t=new window.socssInspector.view.inspector({el:e("#socss-inspector-interface").get(0)});t.activate(),window.socssInspector.mainInspector=t});
lang/so-css.pot CHANGED
@@ -1,542 +1,557 @@
1
- # Copyright (C) 2018 so-css
2
  # This file is distributed under the same license as the so-css package.
3
  msgid ""
4
  msgstr ""
5
  "Project-Id-Version: so-css\n"
6
- "Report-Msgid-Bugs-To: http://www.siteorigin.com\n"
7
  "MIME-Version: 1.0\n"
8
  "Content-Type: text/plain; charset=UTF-8\n"
9
  "Content-Transfer-Encoding: 8bit\n"
10
- "PO-Revision-Date: 2018-MO-DA HO:MI+ZONE\n"
11
- "Last-Translator: SiteOrigin <support@siteorigin.com>\n"
12
  "Language-Team: SiteOrigin <support@siteorigin.com>\n"
 
 
13
  "X-Poedit-Basepath: ..\n"
14
- "X-Poedit-SourceCharset: UTF-8\n"
15
- "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
16
  "X-Poedit-SearchPath-0: .\n"
17
  "X-Poedit-SearchPathExcluded-0: *.js\n"
 
18
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
19
 
20
- #: tmp/inc/controller-config.php:5
21
  msgid "Text"
22
  msgstr ""
23
 
24
- #: tmp/inc/controller-config.php:9
25
  msgid "Text Color"
26
  msgstr ""
27
 
28
- #: tmp/inc/controller-config.php:16
29
  msgid "Font Size"
30
  msgstr ""
31
 
32
- #: tmp/inc/controller-config.php:24
33
  msgid "Line Height"
34
  msgstr ""
35
 
36
- #: tmp/inc/controller-config.php:32
37
  msgid "Font Weight"
38
  msgstr ""
39
 
40
- #: tmp/inc/controller-config.php:37, tmp/inc/controller-config.php:60, tmp/inc/controller-config.php:93, tmp/inc/controller-config.php:164
41
  msgid "Normal"
42
  msgstr ""
43
 
44
- #: tmp/inc/controller-config.php:38
45
  msgid "Bold"
46
  msgstr ""
47
 
48
- #: tmp/inc/controller-config.php:39
49
  msgid "Bolder"
50
  msgstr ""
51
 
52
- #: tmp/inc/controller-config.php:40
53
  msgid "Lighter"
54
  msgstr ""
55
 
56
- #: tmp/inc/controller-config.php:54
57
  msgid "Font Style"
58
  msgstr ""
59
 
60
- #: tmp/inc/controller-config.php:59, tmp/inc/controller-config.php:75, tmp/inc/controller-config.php:104, tmp/inc/controller-config.php:397, tmp/inc/controller-config.php:424, tmp/inc/controller-config.php:436
61
  msgid "None"
62
  msgstr ""
63
 
64
- #: tmp/inc/controller-config.php:61
65
  msgid "Italic"
66
  msgstr ""
67
 
68
- #: tmp/inc/controller-config.php:70
69
  msgid "Text Decoration"
70
  msgstr ""
71
 
72
- #: tmp/inc/controller-config.php:76
73
  msgid "Underline"
74
  msgstr ""
75
 
76
- #: tmp/inc/controller-config.php:77
77
  msgid "Overline"
78
  msgstr ""
79
 
80
- #: tmp/inc/controller-config.php:78
81
  msgid "Line Through"
82
  msgstr ""
83
 
84
- #: tmp/inc/controller-config.php:88
85
  msgid "Font Variant"
86
  msgstr ""
87
 
88
- #: tmp/inc/controller-config.php:94
89
  msgid "Small Caps"
90
  msgstr ""
91
 
92
- #: tmp/inc/controller-config.php:99
93
  msgid "Text Transform"
94
  msgstr ""
95
 
96
- #: tmp/inc/controller-config.php:105
97
  msgid "Capitalize"
98
  msgstr ""
99
 
100
- #: tmp/inc/controller-config.php:106
101
  msgid "Uppercase"
102
  msgstr ""
103
 
104
- #: tmp/inc/controller-config.php:107
105
  msgid "Lowercase"
106
  msgstr ""
107
 
108
- #: tmp/inc/controller-config.php:112
109
  msgid "Font Family"
110
  msgstr ""
111
 
112
- #: tmp/inc/controller-config.php:119
113
  msgid "Text Align"
114
  msgstr ""
115
 
116
- #: tmp/inc/controller-config.php:124, tmp/inc/controller-config.php:425, tmp/inc/controller-config.php:437
117
  msgid "Left"
118
  msgstr ""
119
 
120
- #: tmp/inc/controller-config.php:125, tmp/inc/controller-config.php:426, tmp/inc/controller-config.php:438
121
  msgid "Right"
122
  msgstr ""
123
 
124
- #: tmp/inc/controller-config.php:126
125
  msgid "Center"
126
  msgstr ""
127
 
128
- #: tmp/inc/controller-config.php:127
129
  msgid "Justify"
130
  msgstr ""
131
 
132
- #: tmp/inc/controller-config.php:138
133
  msgid "Text Indent"
134
  msgstr ""
135
 
136
- #: tmp/inc/controller-config.php:145
137
  msgid "Letter Spacing"
138
  msgstr ""
139
 
140
- #: tmp/inc/controller-config.php:152
141
  msgid "Word Spacing"
142
  msgstr ""
143
 
144
- #: tmp/inc/controller-config.php:159
145
  msgid "White Space"
146
  msgstr ""
147
 
148
- #: tmp/inc/controller-config.php:165
149
  msgid "Encountered"
150
  msgstr ""
151
 
152
- #: tmp/inc/controller-config.php:166
153
  msgid "Pre"
154
  msgstr ""
155
 
156
- #: tmp/inc/controller-config.php:167
157
  msgid "Pre Line"
158
  msgstr ""
159
 
160
- #: tmp/inc/controller-config.php:168
161
  msgid "Pre Wrap"
162
  msgstr ""
163
 
164
- #: tmp/inc/controller-config.php:173
165
  msgid "Text Shadow"
166
  msgstr ""
167
 
168
- #: tmp/inc/controller-config.php:185
169
  msgid "Decoration"
170
  msgstr ""
171
 
172
- #: tmp/inc/controller-config.php:189
173
  msgid "Background Color"
174
  msgstr ""
175
 
176
- #: tmp/inc/controller-config.php:196
177
  msgid "Background image"
178
  msgstr ""
179
 
180
- #: tmp/inc/controller-config.php:204
181
  msgid "Background Position"
182
  msgstr ""
183
 
184
- #: tmp/inc/controller-config.php:211
185
  msgid "Background Repeat"
186
  msgstr ""
187
 
188
- #: tmp/inc/controller-config.php:216
189
  msgid "repeat"
190
  msgstr ""
191
 
192
- #: tmp/inc/controller-config.php:217
193
  msgid "repeat-x"
194
  msgstr ""
195
 
196
- #: tmp/inc/controller-config.php:218
197
  msgid "repeat-y"
198
  msgstr ""
199
 
200
- #: tmp/inc/controller-config.php:219
201
  msgid "no-repeat"
202
  msgstr ""
203
 
204
- #: tmp/inc/controller-config.php:224
205
  msgid "Background Size"
206
  msgstr ""
207
 
208
- #: tmp/inc/controller-config.php:229
209
  msgid "auto"
210
  msgstr ""
211
 
212
- #: tmp/inc/controller-config.php:230
213
  msgid "length"
214
  msgstr ""
215
 
216
- #: tmp/inc/controller-config.php:231
217
  msgid "percentage"
218
  msgstr ""
219
 
220
- #: tmp/inc/controller-config.php:232
221
  msgid "cover"
222
  msgstr ""
223
 
224
- #: tmp/inc/controller-config.php:233
225
  msgid "contain"
226
  msgstr ""
227
 
228
- #: tmp/inc/controller-config.php:239
229
  msgid "Box Shadow"
230
  msgstr ""
231
 
232
- #: tmp/inc/controller-config.php:247
233
  msgid "Opacity"
234
  msgstr ""
235
 
236
- #: tmp/inc/controller-config.php:260
237
  msgid "Borders"
238
  msgstr ""
239
 
240
- #: tmp/inc/controller-config.php:308
241
  msgid "Layout"
242
  msgstr ""
243
 
244
- #: tmp/inc/controller-config.php:312
245
  msgid "Margin"
246
  msgstr ""
247
 
248
- #: tmp/inc/controller-config.php:329
249
  msgid "Padding"
250
  msgstr ""
251
 
252
- #: tmp/inc/controller-config.php:346
253
  msgid "Position"
254
  msgstr ""
255
 
256
- #: tmp/inc/controller-config.php:351
257
  msgid "Absolute"
258
  msgstr ""
259
 
260
- #: tmp/inc/controller-config.php:352
261
  msgid "Fixed"
262
  msgstr ""
263
 
264
- #: tmp/inc/controller-config.php:353
265
  msgid "Relative"
266
  msgstr ""
267
 
268
- #: tmp/inc/controller-config.php:354
269
  msgid "Static"
270
  msgstr ""
271
 
272
- #: tmp/inc/controller-config.php:355
273
  msgid "Inherit"
274
  msgstr ""
275
 
276
- #: tmp/inc/controller-config.php:360
277
  msgid "Absolute Position"
278
  msgstr ""
279
 
280
- #: tmp/inc/controller-config.php:376
281
  msgid "Width"
282
  msgstr ""
283
 
284
- #: tmp/inc/controller-config.php:384
285
  msgid "Height"
286
  msgstr ""
287
 
288
- #: tmp/inc/controller-config.php:392
289
  msgid "Display"
290
  msgstr ""
291
 
292
- #: tmp/inc/controller-config.php:398
293
  msgid "Inline"
294
  msgstr ""
295
 
296
- #: tmp/inc/controller-config.php:399
297
  msgid "Block"
298
  msgstr ""
299
 
300
- #: tmp/inc/controller-config.php:400
301
  msgid "Flex"
302
  msgstr ""
303
 
304
- #: tmp/inc/controller-config.php:401
305
  msgid "Inline Block"
306
  msgstr ""
307
 
308
- #: tmp/inc/controller-config.php:402
309
  msgid "Inline Flex"
310
  msgstr ""
311
 
312
- #: tmp/inc/controller-config.php:403
313
  msgid "Inline Table"
314
  msgstr ""
315
 
316
- #: tmp/inc/controller-config.php:404
317
  msgid "List Item"
318
  msgstr ""
319
 
320
- #: tmp/inc/controller-config.php:405
321
  msgid "Run In"
322
  msgstr ""
323
 
324
- #: tmp/inc/controller-config.php:406
325
  msgid "Table"
326
  msgstr ""
327
 
328
- #: tmp/inc/controller-config.php:407
329
  msgid "Table Caption"
330
  msgstr ""
331
 
332
- #: tmp/inc/controller-config.php:408
333
  msgid "Table Column Group"
334
  msgstr ""
335
 
336
- #: tmp/inc/controller-config.php:409
337
  msgid "Table Header Group"
338
  msgstr ""
339
 
340
- #: tmp/inc/controller-config.php:410
341
  msgid "Table Footer Group"
342
  msgstr ""
343
 
344
- #: tmp/inc/controller-config.php:411
345
  msgid "Table Row Group"
346
  msgstr ""
347
 
348
- #: tmp/inc/controller-config.php:412
349
  msgid "Table Cell"
350
  msgstr ""
351
 
352
- #: tmp/inc/controller-config.php:413
353
  msgid "Table Column"
354
  msgstr ""
355
 
356
- #: tmp/inc/controller-config.php:414
357
  msgid "Table Row"
358
  msgstr ""
359
 
360
- #: tmp/inc/controller-config.php:419
361
  msgid "Float"
362
  msgstr ""
363
 
364
- #: tmp/inc/controller-config.php:431
365
  msgid "Clear"
366
  msgstr ""
367
 
368
- #: tmp/inc/controller-config.php:439
369
  msgid "Both"
370
  msgstr ""
371
 
372
- #: tmp/inc/controller-config.php:444
373
  msgid "Visibility"
374
  msgstr ""
375
 
376
- #: tmp/inc/controller-config.php:449, tmp/inc/controller-config.php:461, tmp/inc/controller-config.php:474, tmp/inc/controller-config.php:487
377
  msgid "Visible"
378
  msgstr ""
379
 
380
- #: tmp/inc/controller-config.php:450, tmp/inc/controller-config.php:462, tmp/inc/controller-config.php:475, tmp/inc/controller-config.php:488
381
  msgid "Hidden"
382
  msgstr ""
383
 
384
- #: tmp/inc/controller-config.php:451
385
  msgid "Collapse"
386
  msgstr ""
387
 
388
- #: tmp/inc/controller-config.php:456
389
  msgid "Overflow"
390
  msgstr ""
391
 
392
- #: tmp/inc/controller-config.php:463, tmp/inc/controller-config.php:476, tmp/inc/controller-config.php:489
393
  msgid "Scroll"
394
  msgstr ""
395
 
396
- #: tmp/inc/controller-config.php:464, tmp/inc/controller-config.php:477, tmp/inc/controller-config.php:490
397
  msgid "Auto"
398
  msgstr ""
399
 
400
- #: tmp/inc/controller-config.php:469
401
  msgid "Overflow X"
402
  msgstr ""
403
 
404
- #: tmp/inc/controller-config.php:482
405
  msgid "Overflow Y"
406
  msgstr ""
407
 
408
- #: tmp/inc/controller-config.php:495
409
  msgid "Z-Index"
410
  msgstr ""
411
 
412
- #: tmp/so-css.php:525, tmp/so-css.php:525, tmp/so-css.php:587
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
413
  msgid "Custom CSS"
414
  msgstr ""
415
 
416
- #: tmp/so-css.php:591
417
  msgid "SiteOrigin CSS adds any custom CSS you enter here into your site's header. "
418
  msgstr ""
419
 
420
- #: tmp/so-css.php:593
421
  msgid "These changes will persist across updates so it's best to make all your changes here. "
422
  msgstr ""
423
 
424
- #: tmp/so-css.php:771
425
  msgid "Unchanged"
426
  msgstr ""
427
 
428
- #: tmp/so-css.php:773
429
  msgid "Select"
430
  msgstr ""
431
 
432
- #: tmp/so-css.php:775
433
  msgid "Select Image"
434
  msgstr ""
435
 
436
- #: tmp/so-css.php:777
437
  msgid "Are you sure you want to leave without saving?"
438
  msgstr ""
439
 
440
- #: tmp/so-css.php:845
441
  msgid "CSS Editor"
442
  msgstr ""
443
 
444
- #: tmp/so-css.php:847
445
  msgid "Support"
446
  msgstr ""
447
 
448
- #: tmp/so-css.php:869
449
- msgid "SiteOrigin CSS"
450
- msgstr ""
451
-
452
- #: tmp/so-css.php:875
453
  msgid "Changes apply to %s and its child themes"
454
  msgstr ""
455
 
456
- #: tmp/so-css.php:877
457
  msgid "Save CSS"
458
  msgstr ""
459
 
460
- #: tmp/so-css.php:891
461
  msgid "Editing CSS for: %s"
462
  msgstr ""
463
 
464
- #: tmp/so-css.php:901
465
  msgid "Changes apply to the %s %s when the current theme is %s or its child themes"
466
  msgstr ""
467
 
468
- #: tmp/so-css.php:915
469
  msgid "Save %s CSS"
470
  msgstr ""
471
 
472
- #: tmp/so-css.php:941
473
  msgid "Revert to this revision"
474
  msgstr ""
475
 
476
- #: tmp/so-css.php:1159
477
  msgid "%d chars"
478
  msgstr ""
479
 
480
- #: tmp/so-css.php:1159
481
  msgid "Latest"
482
  msgstr ""
483
 
484
- #: tmp/so-css.php:1171
485
  msgid "No revisions yet."
486
  msgstr ""
487
 
488
- #: tmp/tpl/inspector-templates.php:4
489
  msgid "Navigate To: "
490
  msgstr ""
491
 
492
- #: tmp/tpl/js-templates.php:15
493
  msgid "CSS Snippets"
494
  msgstr ""
495
 
496
- #: tmp/tpl/js-templates.php:27
497
  msgid "Search Snippets"
498
  msgstr ""
499
 
500
- #: tmp/tpl/js-templates.php:51
501
  msgid "Insert Snippet"
502
  msgstr ""
503
 
504
- #: tmp/tpl/js-templates.php:101
505
  msgid "Invalid URI. Please make sure you're using a URL from the same site."
506
  msgstr ""
507
 
508
- #: tmp/tpl/js-templates.php:121
509
  msgid "Get a %sGoogle Font%s selector."
510
  msgstr ""
511
 
512
- #: tmp/tpl/page.php:55
513
  msgid "Site design updated."
514
  msgstr ""
515
 
516
- #: tmp/tpl/page.php:65
517
  msgid "Editing revision dated %s. Click %sRevert to this revision%s to keep using it."
518
  msgstr ""
519
 
520
- #: tmp/tpl/page.php:83
521
  msgid "Get The Full Experience"
522
  msgstr ""
523
 
524
- #: tmp/tpl/page.php:87
525
  msgid "%sSiteOrigin Premium%s adds a <strong>Google Web Font</strong> selector to SiteOrigin CSS so you can easily change any font."
526
  msgstr ""
527
 
528
- #: tmp/tpl/page.php:103
529
  msgid "Getting Started Video"
530
  msgstr ""
531
 
532
- #: tmp/tpl/page.php:105
533
  msgid "Dismiss"
534
  msgstr ""
535
 
536
- #: tmp/tpl/page.php:123
537
  msgid "CSS Revisions"
538
  msgstr ""
539
 
540
- #: tmp/tpl/page.php:127
541
  msgid "Are you sure you want to load this revision?"
542
  msgstr ""
1
+ # Copyright (C) 2019 so-css
2
  # This file is distributed under the same license as the so-css package.
3
  msgid ""
4
  msgstr ""
5
  "Project-Id-Version: so-css\n"
 
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
 
 
9
  "Language-Team: SiteOrigin <support@siteorigin.com>\n"
10
+ "Last-Translator: SiteOrigin <support@siteorigin.com>\n"
11
+ "Report-Msgid-Bugs-To: http://www.siteorigin.com/thread\n"
12
  "X-Poedit-Basepath: ..\n"
13
+ "X-Poedit-KeywordsList: __;_e;_ex:1,2c;_n:1,2;_n_noop:1,2;_nx:1,2,4c;_nx_noop:1,2,3c;_x:1,2c;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
 
14
  "X-Poedit-SearchPath-0: .\n"
15
  "X-Poedit-SearchPathExcluded-0: *.js\n"
16
+ "X-Poedit-SourceCharset: UTF-8\n"
17
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
 
19
+ #: inc/controller-config.php:5
20
  msgid "Text"
21
  msgstr ""
22
 
23
+ #: inc/controller-config.php:9
24
  msgid "Text Color"
25
  msgstr ""
26
 
27
+ #: inc/controller-config.php:16
28
  msgid "Font Size"
29
  msgstr ""
30
 
31
+ #: inc/controller-config.php:24
32
  msgid "Line Height"
33
  msgstr ""
34
 
35
+ #: inc/controller-config.php:32
36
  msgid "Font Weight"
37
  msgstr ""
38
 
39
+ #: inc/controller-config.php:37, inc/controller-config.php:60, inc/controller-config.php:93, inc/controller-config.php:164
40
  msgid "Normal"
41
  msgstr ""
42
 
43
+ #: inc/controller-config.php:38
44
  msgid "Bold"
45
  msgstr ""
46
 
47
+ #: inc/controller-config.php:39
48
  msgid "Bolder"
49
  msgstr ""
50
 
51
+ #: inc/controller-config.php:40
52
  msgid "Lighter"
53
  msgstr ""
54
 
55
+ #: inc/controller-config.php:54
56
  msgid "Font Style"
57
  msgstr ""
58
 
59
+ #: inc/controller-config.php:59, inc/controller-config.php:75, inc/controller-config.php:104, inc/controller-config.php:397, inc/controller-config.php:424, inc/controller-config.php:436
60
  msgid "None"
61
  msgstr ""
62
 
63
+ #: inc/controller-config.php:61
64
  msgid "Italic"
65
  msgstr ""
66
 
67
+ #: inc/controller-config.php:70
68
  msgid "Text Decoration"
69
  msgstr ""
70
 
71
+ #: inc/controller-config.php:76
72
  msgid "Underline"
73
  msgstr ""
74
 
75
+ #: inc/controller-config.php:77
76
  msgid "Overline"
77
  msgstr ""
78
 
79
+ #: inc/controller-config.php:78
80
  msgid "Line Through"
81
  msgstr ""
82
 
83
+ #: inc/controller-config.php:88
84
  msgid "Font Variant"
85
  msgstr ""
86
 
87
+ #: inc/controller-config.php:94
88
  msgid "Small Caps"
89
  msgstr ""
90
 
91
+ #: inc/controller-config.php:99
92
  msgid "Text Transform"
93
  msgstr ""
94
 
95
+ #: inc/controller-config.php:105
96
  msgid "Capitalize"
97
  msgstr ""
98
 
99
+ #: inc/controller-config.php:106
100
  msgid "Uppercase"
101
  msgstr ""
102
 
103
+ #: inc/controller-config.php:107
104
  msgid "Lowercase"
105
  msgstr ""
106
 
107
+ #: inc/controller-config.php:112
108
  msgid "Font Family"
109
  msgstr ""
110
 
111
+ #: inc/controller-config.php:119
112
  msgid "Text Align"
113
  msgstr ""
114
 
115
+ #: inc/controller-config.php:124, inc/controller-config.php:425, inc/controller-config.php:437
116
  msgid "Left"
117
  msgstr ""
118
 
119
+ #: inc/controller-config.php:125, inc/controller-config.php:426, inc/controller-config.php:438
120
  msgid "Right"
121
  msgstr ""
122
 
123
+ #: inc/controller-config.php:126
124
  msgid "Center"
125
  msgstr ""
126
 
127
+ #: inc/controller-config.php:127
128
  msgid "Justify"
129
  msgstr ""
130
 
131
+ #: inc/controller-config.php:138
132
  msgid "Text Indent"
133
  msgstr ""
134
 
135
+ #: inc/controller-config.php:145
136
  msgid "Letter Spacing"
137
  msgstr ""
138
 
139
+ #: inc/controller-config.php:152
140
  msgid "Word Spacing"
141
  msgstr ""
142
 
143
+ #: inc/controller-config.php:159
144
  msgid "White Space"
145
  msgstr ""
146
 
147
+ #: inc/controller-config.php:165
148
  msgid "Encountered"
149
  msgstr ""
150
 
151
+ #: inc/controller-config.php:166
152
  msgid "Pre"
153
  msgstr ""
154
 
155
+ #: inc/controller-config.php:167
156
  msgid "Pre Line"
157
  msgstr ""
158
 
159
+ #: inc/controller-config.php:168
160
  msgid "Pre Wrap"
161
  msgstr ""
162
 
163
+ #: inc/controller-config.php:173
164
  msgid "Text Shadow"
165
  msgstr ""
166
 
167
+ #: inc/controller-config.php:185
168
  msgid "Decoration"
169
  msgstr ""
170
 
171
+ #: inc/controller-config.php:189
172
  msgid "Background Color"
173
  msgstr ""
174
 
175
+ #: inc/controller-config.php:196
176
  msgid "Background image"
177
  msgstr ""
178
 
179
+ #: inc/controller-config.php:204
180
  msgid "Background Position"
181
  msgstr ""
182
 
183
+ #: inc/controller-config.php:211
184
  msgid "Background Repeat"
185
  msgstr ""
186
 
187
+ #: inc/controller-config.php:216
188
  msgid "repeat"
189
  msgstr ""
190
 
191
+ #: inc/controller-config.php:217
192
  msgid "repeat-x"
193
  msgstr ""
194
 
195
+ #: inc/controller-config.php:218
196
  msgid "repeat-y"
197
  msgstr ""
198
 
199
+ #: inc/controller-config.php:219
200
  msgid "no-repeat"
201
  msgstr ""
202
 
203
+ #: inc/controller-config.php:224
204
  msgid "Background Size"
205
  msgstr ""
206
 
207
+ #: inc/controller-config.php:229
208
  msgid "auto"
209
  msgstr ""
210
 
211
+ #: inc/controller-config.php:230
212
  msgid "length"
213
  msgstr ""
214
 
215
+ #: inc/controller-config.php:231
216
  msgid "percentage"
217
  msgstr ""
218
 
219
+ #: inc/controller-config.php:232
220
  msgid "cover"
221
  msgstr ""
222
 
223
+ #: inc/controller-config.php:233
224
  msgid "contain"
225
  msgstr ""
226
 
227
+ #: inc/controller-config.php:239
228
  msgid "Box Shadow"
229
  msgstr ""
230
 
231
+ #: inc/controller-config.php:247
232
  msgid "Opacity"
233
  msgstr ""
234
 
235
+ #: inc/controller-config.php:260
236
  msgid "Borders"
237
  msgstr ""
238
 
239
+ #: inc/controller-config.php:308
240
  msgid "Layout"
241
  msgstr ""
242
 
243
+ #: inc/controller-config.php:312
244
  msgid "Margin"
245
  msgstr ""
246
 
247
+ #: inc/controller-config.php:329
248
  msgid "Padding"
249
  msgstr ""
250
 
251
+ #: inc/controller-config.php:346
252
  msgid "Position"
253
  msgstr ""
254
 
255
+ #: inc/controller-config.php:351
256
  msgid "Absolute"
257
  msgstr ""
258
 
259
+ #: inc/controller-config.php:352
260
  msgid "Fixed"
261
  msgstr ""
262
 
263
+ #: inc/controller-config.php:353
264
  msgid "Relative"
265
  msgstr ""
266
 
267
+ #: inc/controller-config.php:354
268
  msgid "Static"
269
  msgstr ""
270
 
271
+ #: inc/controller-config.php:355
272
  msgid "Inherit"
273
  msgstr ""
274
 
275
+ #: inc/controller-config.php:360
276
  msgid "Absolute Position"
277
  msgstr ""
278
 
279
+ #: inc/controller-config.php:376
280
  msgid "Width"
281
  msgstr ""
282
 
283
+ #: inc/controller-config.php:384
284
  msgid "Height"
285
  msgstr ""
286
 
287
+ #: inc/controller-config.php:392
288
  msgid "Display"
289
  msgstr ""
290
 
291
+ #: inc/controller-config.php:398
292
  msgid "Inline"
293
  msgstr ""
294
 
295
+ #: inc/controller-config.php:399
296
  msgid "Block"
297
  msgstr ""
298
 
299
+ #: inc/controller-config.php:400
300
  msgid "Flex"
301
  msgstr ""
302
 
303
+ #: inc/controller-config.php:401
304
  msgid "Inline Block"
305
  msgstr ""
306
 
307
+ #: inc/controller-config.php:402
308
  msgid "Inline Flex"
309
  msgstr ""
310
 
311
+ #: inc/controller-config.php:403
312
  msgid "Inline Table"
313
  msgstr ""
314
 
315
+ #: inc/controller-config.php:404
316
  msgid "List Item"
317
  msgstr ""
318
 
319
+ #: inc/controller-config.php:405
320
  msgid "Run In"
321
  msgstr ""
322
 
323
+ #: inc/controller-config.php:406
324
  msgid "Table"
325
  msgstr ""
326
 
327
+ #: inc/controller-config.php:407
328
  msgid "Table Caption"
329
  msgstr ""
330
 
331
+ #: inc/controller-config.php:408
332
  msgid "Table Column Group"
333
  msgstr ""
334
 
335
+ #: inc/controller-config.php:409
336
  msgid "Table Header Group"
337
  msgstr ""
338
 
339
+ #: inc/controller-config.php:410
340
  msgid "Table Footer Group"
341
  msgstr ""
342
 
343
+ #: inc/controller-config.php:411
344
  msgid "Table Row Group"
345
  msgstr ""
346
 
347
+ #: inc/controller-config.php:412
348
  msgid "Table Cell"
349
  msgstr ""
350
 
351
+ #: inc/controller-config.php:413
352
  msgid "Table Column"
353
  msgstr ""
354
 
355
+ #: inc/controller-config.php:414
356
  msgid "Table Row"
357
  msgstr ""
358
 
359
+ #: inc/controller-config.php:419
360
  msgid "Float"
361
  msgstr ""
362
 
363
+ #: inc/controller-config.php:431
364
  msgid "Clear"
365
  msgstr ""
366
 
367
+ #: inc/controller-config.php:439
368
  msgid "Both"
369
  msgstr ""
370
 
371
+ #: inc/controller-config.php:444
372
  msgid "Visibility"
373
  msgstr ""
374
 
375
+ #: inc/controller-config.php:449, inc/controller-config.php:461, inc/controller-config.php:474, inc/controller-config.php:487
376
  msgid "Visible"
377
  msgstr ""
378
 
379
+ #: inc/controller-config.php:450, inc/controller-config.php:462, inc/controller-config.php:475, inc/controller-config.php:488
380
  msgid "Hidden"
381
  msgstr ""
382
 
383
+ #: inc/controller-config.php:451
384
  msgid "Collapse"
385
  msgstr ""
386
 
387
+ #: inc/controller-config.php:456
388
  msgid "Overflow"
389
  msgstr ""
390
 
391
+ #: inc/controller-config.php:463, inc/controller-config.php:476, inc/controller-config.php:489
392
  msgid "Scroll"
393
  msgstr ""
394
 
395
+ #: inc/controller-config.php:464, inc/controller-config.php:477, inc/controller-config.php:490
396
  msgid "Auto"
397
  msgstr ""
398
 
399
+ #: inc/controller-config.php:469
400
  msgid "Overflow X"
401
  msgstr ""
402
 
403
+ #: inc/controller-config.php:482
404
  msgid "Overflow Y"
405
  msgstr ""
406
 
407
+ #: inc/controller-config.php:495
408
  msgid "Z-Index"
409
  msgstr ""
410
 
411
+ #: so-css.php:3, so-css.php:435
412
+ msgid "SiteOrigin CSS"
413
+ msgstr ""
414
+
415
+ #: so-css.php:4
416
+ msgid "An advanced CSS editor from SiteOrigin."
417
+ msgstr ""
418
+
419
+ #: so-css.php:6
420
+ msgid "SiteOrigin"
421
+ msgstr ""
422
+
423
+ #: so-css.php:7
424
+ msgid "https://siteorigin.com"
425
+ msgstr ""
426
+
427
+ #: so-css.php:8
428
+ msgid "https://siteorigin.com/css/"
429
+ msgstr ""
430
+
431
+ #: so-css.php:263, so-css.php:263, so-css.php:294
432
  msgid "Custom CSS"
433
  msgstr ""
434
 
435
+ #: so-css.php:296
436
  msgid "SiteOrigin CSS adds any custom CSS you enter here into your site's header. "
437
  msgstr ""
438
 
439
+ #: so-css.php:297
440
  msgid "These changes will persist across updates so it's best to make all your changes here. "
441
  msgstr ""
442
 
443
+ #: so-css.php:386
444
  msgid "Unchanged"
445
  msgstr ""
446
 
447
+ #: so-css.php:387
448
  msgid "Select"
449
  msgstr ""
450
 
451
+ #: so-css.php:388
452
  msgid "Select Image"
453
  msgstr ""
454
 
455
+ #: so-css.php:389
456
  msgid "Are you sure you want to leave without saving?"
457
  msgstr ""
458
 
459
+ #: so-css.php:423
460
  msgid "CSS Editor"
461
  msgstr ""
462
 
463
+ #: so-css.php:424
464
  msgid "Support"
465
  msgstr ""
466
 
467
+ #: so-css.php:438
 
 
 
 
468
  msgid "Changes apply to %s and its child themes"
469
  msgstr ""
470
 
471
+ #: so-css.php:439
472
  msgid "Save CSS"
473
  msgstr ""
474
 
475
+ #: so-css.php:446
476
  msgid "Editing CSS for: %s"
477
  msgstr ""
478
 
479
+ #: so-css.php:451
480
  msgid "Changes apply to the %s %s when the current theme is %s or its child themes"
481
  msgstr ""
482
 
483
+ #: so-css.php:458
484
  msgid "Save %s CSS"
485
  msgstr ""
486
 
487
+ #: so-css.php:471
488
  msgid "Revert to this revision"
489
  msgstr ""
490
 
491
+ #: so-css.php:580
492
  msgid "%d chars"
493
  msgstr ""
494
 
495
+ #: so-css.php:580
496
  msgid "Latest"
497
  msgstr ""
498
 
499
+ #: so-css.php:586
500
  msgid "No revisions yet."
501
  msgstr ""
502
 
503
+ #: tpl/inspector-templates.php:4
504
  msgid "Navigate To: "
505
  msgstr ""
506
 
507
+ #: tpl/js-templates.php:8
508
  msgid "CSS Snippets"
509
  msgstr ""
510
 
511
+ #: tpl/js-templates.php:14
512
  msgid "Search Snippets"
513
  msgstr ""
514
 
515
+ #: tpl/js-templates.php:26
516
  msgid "Insert Snippet"
517
  msgstr ""
518
 
519
+ #: tpl/js-templates.php:51
520
  msgid "Invalid URI. Please make sure you're using a URL from the same site."
521
  msgstr ""
522
 
523
+ #: tpl/js-templates.php:61
524
  msgid "Get a %sGoogle Font%s selector."
525
  msgstr ""
526
 
527
+ #: tpl/page.php:28
528
  msgid "Site design updated."
529
  msgstr ""
530
 
531
+ #: tpl/page.php:33
532
  msgid "Editing revision dated %s. Click %sRevert to this revision%s to keep using it."
533
  msgstr ""
534
 
535
+ #: tpl/page.php:42
536
  msgid "Get The Full Experience"
537
  msgstr ""
538
 
539
+ #: tpl/page.php:44
540
  msgid "%sSiteOrigin Premium%s adds a <strong>Google Web Font</strong> selector to SiteOrigin CSS so you can easily change any font."
541
  msgstr ""
542
 
543
+ #: tpl/page.php:52
544
  msgid "Getting Started Video"
545
  msgstr ""
546
 
547
+ #: tpl/page.php:53
548
  msgid "Dismiss"
549
  msgstr ""
550
 
551
+ #: tpl/page.php:62
552
  msgid "CSS Revisions"
553
  msgstr ""
554
 
555
+ #: tpl/page.php:64
556
  msgid "Are you sure you want to load this revision?"
557
  msgstr ""
readme.txt CHANGED
@@ -1,9 +1,9 @@
1
  === SiteOrigin CSS ===
2
  Tags: css, design, edit, customize
3
  Requires at least: 3.9
4
- Tested up to: 4.9
5
- Stable tag: 1.2.3
6
- Build time: 2018-06-25T09:47:44+02:00
7
  License: GPLv2 or later
8
  Contributors: gpriday
9
  Donate link: https://siteorigin.com/downloads/contribution/
@@ -65,6 +65,10 @@ We offer free support on the [SiteOrigin support forums](https://siteorigin.com/
65
 
66
  == Changelog ==
67
 
 
 
 
 
68
  = 1.2.3 - 25 June 2018 =
69
  * Add preview iframe 'load' event listener in `render` function.
70
  * Reverted change to stylesheet hook.
1
  === SiteOrigin CSS ===
2
  Tags: css, design, edit, customize
3
  Requires at least: 3.9
4
+ Tested up to: 5.0
5
+ Stable tag: 1.2.4
6
+ Build time: 2019-01-17T16:42:20-08:00
7
  License: GPLv2 or later
8
  Contributors: gpriday
9
  Donate link: https://siteorigin.com/downloads/contribution/
65
 
66
  == Changelog ==
67
 
68
+ = 1.2.4 - 17 January 2019 =
69
+ * Prefix so-css for all codemirror assets.
70
+ * Prevent JS error when attempting to set active element to null.
71
+
72
  = 1.2.3 - 25 June 2018 =
73
  * Add preview iframe 'load' event listener in `render` function.
74
  * Reverted change to stylesheet hook.
so-css.php CHANGED
@@ -2,7 +2,7 @@
2
  /*
3
  Plugin Name: SiteOrigin CSS
4
  Description: An advanced CSS editor from SiteOrigin.
5
- Version: 1.2.3
6
  Author: SiteOrigin
7
  Author URI: https://siteorigin.com
8
  Plugin URI: https://siteorigin.com/css/
@@ -14,7 +14,7 @@ Text Domain: so-css
14
  // Handle the legacy CSS editor that came with SiteOrigin themes
15
  include plugin_dir_path( __FILE__ ) . 'inc/legacy.php';
16
 
17
- define( 'SOCSS_VERSION', '1.2.3' );
18
  define( 'SOCSS_JS_SUFFIX', '.min' );
19
 
20
  /**
@@ -308,40 +308,40 @@ class SiteOrigin_CSS {
308
  wp_enqueue_media();
309
 
310
  // Enqueue the codemirror scripts. Call Underscore and Backbone dependencies so they're enqueued first to prevent conflicts.
311
- wp_enqueue_script( 'codemirror', plugin_dir_url( __FILE__ ) . 'lib/codemirror/lib/codemirror' . SOCSS_JS_SUFFIX . '.js', array(
312
  'underscore',
313
  'backbone'
314
  ), '5.2.0' );
315
- wp_enqueue_script( 'codemirror-mode-css', plugin_dir_url( __FILE__ ) . 'lib/codemirror/mode/css/css' . SOCSS_JS_SUFFIX . '.js', array(), '5.2.0' );
316
 
317
  // Add in all the linting libs
318
- wp_enqueue_script( 'codemirror-lint', plugin_dir_url( __FILE__ ) . 'lib/codemirror/addon/lint/lint' . SOCSS_JS_SUFFIX . '.js', array( 'codemirror' ), '5.2.0' );
319
- wp_enqueue_script( 'codemirror-lint-css', plugin_dir_url( __FILE__ ) . 'lib/codemirror/addon/lint/css-lint' . SOCSS_JS_SUFFIX . '.js', array(
320
- 'codemirror',
321
- 'codemirror-lint-css-lib'
322
  ), '5.2.0' );
323
- wp_enqueue_script( 'codemirror-lint-css-lib', plugin_dir_url( __FILE__ ) . 'js/csslint' . SOCSS_JS_SUFFIX . '.js', array(), '0.10.0' );
324
 
325
  // The CodeMirror autocomplete library
326
- wp_enqueue_script( 'codemirror-show-hint', plugin_dir_url(__FILE__) . 'lib/codemirror/addon/hint/show-hint' . SOCSS_JS_SUFFIX . '.js', array( 'codemirror' ), '5.2.0' );
327
 
328
  // CodeMirror search and dialog addons
329
- wp_enqueue_script( 'codemirror-dialog', plugin_dir_url(__FILE__) . 'lib/codemirror/addon/dialog/dialog' . SOCSS_JS_SUFFIX . '.js', array( 'codemirror' ), '5.2.0' );
330
 
331
- wp_enqueue_script( 'codemirror-search', plugin_dir_url(__FILE__) . 'lib/codemirror/addon/search/search' . SOCSS_JS_SUFFIX . '.js', array( 'codemirror' ), '5.37.0' );
332
- wp_enqueue_script( 'codemirror-search-searchcursor', plugin_dir_url(__FILE__) . 'lib/codemirror/addon/search/searchcursor' . SOCSS_JS_SUFFIX . '.js', array( 'codemirror', 'codemirror-search' ), '5.37.0' );
333
- wp_enqueue_script( 'codemirror-search-match-cursor', plugin_dir_url(__FILE__) . 'lib/codemirror/addon/search/match-highlighter' . SOCSS_JS_SUFFIX . '.js', array( 'codemirror', 'codemirror-search' ), '5.37.0' );
334
- wp_enqueue_script( 'codemirror-search-matchesonscrollbar', plugin_dir_url(__FILE__) . 'lib/codemirror/addon/search/matchesonscrollbar' . SOCSS_JS_SUFFIX . '.js', array( 'codemirror', 'codemirror-search' ), '5.37.0' );
335
- wp_enqueue_script( 'codemirror-scroll-annotatescrollbar', plugin_dir_url(__FILE__) . 'lib/codemirror/addon/scroll/annotatescrollbar' . SOCSS_JS_SUFFIX . '.js', array( 'codemirror', 'codemirror-search', 'codemirror-search-matchesonscrollbar' ), '5.37.0' );
336
- wp_enqueue_script( 'codemirror-jump-to-line', plugin_dir_url(__FILE__) . 'lib/codemirror/addon/search/jump-to-line' . SOCSS_JS_SUFFIX . '.js', array( 'codemirror', 'codemirror-search' ), '5.37.0' );
337
 
338
  // All the CodeMirror styles
339
- wp_enqueue_style( 'codemirror', plugin_dir_url( __FILE__ ) . 'lib/codemirror/lib/codemirror.css', array(), '5.2.0' );
340
- wp_enqueue_style( 'codemirror-theme-neat', plugin_dir_url( __FILE__ ) . 'lib/codemirror/theme/neat.css', array(), '5.2.0' );
341
- wp_enqueue_style( 'codemirror-lint-css', plugin_dir_url( __FILE__ ) . 'lib/codemirror/addon/lint/lint.css', array(), '5.2.0' );
342
- wp_enqueue_style( 'codemirror-show-hint', plugin_dir_url( __FILE__ ) . 'lib/codemirror/addon/hint/show-hint.css', array(), '5.2.0' );
343
- wp_enqueue_style( 'codemirror-dialog', plugin_dir_url(__FILE__) . 'lib/codemirror/addon/dialog/dialog.css', '5.2.0' );
344
- wp_enqueue_style( 'codemirror-search-matchesonscrollbar', plugin_dir_url(__FILE__) . 'lib/codemirror/addon/search/matchesonscrollbar.css', array(), '5.37.0' );
345
 
346
  // Enqueue the scripts for theme CSS processing
347
  wp_enqueue_script( 'siteorigin-css-parser-lib', plugin_dir_url( __FILE__ ) . 'js/css' . SOCSS_JS_SUFFIX . '.js', array( 'jquery' ), SOCSS_VERSION );
@@ -357,7 +357,7 @@ class SiteOrigin_CSS {
357
  wp_enqueue_script( 'siteorigin-uri', plugin_dir_url( __FILE__ ) . 'js/URI' . SOCSS_JS_SUFFIX . '.js', array(), SOCSS_VERSION, true );
358
 
359
  // All the custom SiteOrigin CSS stuff
360
- wp_enqueue_script( 'siteorigin-custom-css', plugin_dir_url(__FILE__) . 'js/editor' . SOCSS_JS_SUFFIX . '.js', array( 'jquery', 'underscore', 'backbone', 'siteorigin-css-parser-lib', 'codemirror' ), SOCSS_VERSION, true );
361
  wp_enqueue_style( 'siteorigin-custom-css', plugin_dir_url(__FILE__) . 'css/admin.css', array( ), SOCSS_VERSION );
362
 
363
 
2
  /*
3
  Plugin Name: SiteOrigin CSS
4
  Description: An advanced CSS editor from SiteOrigin.
5
+ Version: 1.2.4
6
  Author: SiteOrigin
7
  Author URI: https://siteorigin.com
8
  Plugin URI: https://siteorigin.com/css/
14
  // Handle the legacy CSS editor that came with SiteOrigin themes
15
  include plugin_dir_path( __FILE__ ) . 'inc/legacy.php';
16
 
17
+ define( 'SOCSS_VERSION', '1.2.4' );
18
  define( 'SOCSS_JS_SUFFIX', '.min' );
19
 
20
  /**
308
  wp_enqueue_media();
309
 
310
  // Enqueue the codemirror scripts. Call Underscore and Backbone dependencies so they're enqueued first to prevent conflicts.
311
+ wp_enqueue_script( 'socss-codemirror', plugin_dir_url( __FILE__ ) . 'lib/codemirror/lib/codemirror' . SOCSS_JS_SUFFIX . '.js', array(
312
  'underscore',
313
  'backbone'
314
  ), '5.2.0' );
315
+ wp_enqueue_script( 'socss-codemirror-mode-css', plugin_dir_url( __FILE__ ) . 'lib/codemirror/mode/css/css' . SOCSS_JS_SUFFIX . '.js', array(), '5.2.0' );
316
 
317
  // Add in all the linting libs
318
+ wp_enqueue_script( 'socss-codemirror-lint', plugin_dir_url( __FILE__ ) . 'lib/codemirror/addon/lint/lint' . SOCSS_JS_SUFFIX . '.js', array( 'socss-codemirror' ), '5.2.0' );
319
+ wp_enqueue_script( 'socss-codemirror-lint-css', plugin_dir_url( __FILE__ ) . 'lib/codemirror/addon/lint/css-lint' . SOCSS_JS_SUFFIX . '.js', array(
320
+ 'socss-codemirror',
321
+ 'socss-codemirror-lint-css-lib'
322
  ), '5.2.0' );
323
+ wp_enqueue_script( 'socss-codemirror-lint-css-lib', plugin_dir_url( __FILE__ ) . 'js/csslint' . SOCSS_JS_SUFFIX . '.js', array(), '0.10.0' );
324
 
325
  // The CodeMirror autocomplete library
326
+ wp_enqueue_script( 'socss-codemirror-show-hint', plugin_dir_url(__FILE__) . 'lib/codemirror/addon/hint/show-hint' . SOCSS_JS_SUFFIX . '.js', array( 'socss-codemirror' ), '5.2.0' );
327
 
328
  // CodeMirror search and dialog addons
329
+ wp_enqueue_script( 'socss-codemirror-dialog', plugin_dir_url(__FILE__) . 'lib/codemirror/addon/dialog/dialog' . SOCSS_JS_SUFFIX . '.js', array( 'socss-codemirror' ), '5.2.0' );
330
 
331
+ wp_enqueue_script( 'socss-codemirror-search', plugin_dir_url(__FILE__) . 'lib/codemirror/addon/search/search' . SOCSS_JS_SUFFIX . '.js', array( 'socss-codemirror' ), '5.37.0' );
332
+ wp_enqueue_script( 'socss-codemirror-search-searchcursor', plugin_dir_url(__FILE__) . 'lib/codemirror/addon/search/searchcursor' . SOCSS_JS_SUFFIX . '.js', array( 'socss-codemirror', 'socss-codemirror-search' ), '5.37.0' );
333
+ wp_enqueue_script( 'socss-codemirror-search-match-cursor', plugin_dir_url(__FILE__) . 'lib/codemirror/addon/search/match-highlighter' . SOCSS_JS_SUFFIX . '.js', array( 'socss-codemirror', 'socss-codemirror-search' ), '5.37.0' );
334
+ wp_enqueue_script( 'socss-codemirror-search-matchesonscrollbar', plugin_dir_url(__FILE__) . 'lib/codemirror/addon/search/matchesonscrollbar' . SOCSS_JS_SUFFIX . '.js', array( 'socss-codemirror', 'socss-codemirror-search' ), '5.37.0' );
335
+ wp_enqueue_script( 'socss-codemirror-scroll-annotatescrollbar', plugin_dir_url(__FILE__) . 'lib/codemirror/addon/scroll/annotatescrollbar' . SOCSS_JS_SUFFIX . '.js', array( 'socss-codemirror', 'socss-codemirror-search', 'socss-codemirror-search-matchesonscrollbar' ), '5.37.0' );
336
+ wp_enqueue_script( 'socss-codemirror-jump-to-line', plugin_dir_url(__FILE__) . 'lib/codemirror/addon/search/jump-to-line' . SOCSS_JS_SUFFIX . '.js', array( 'socss-codemirror', 'socss-codemirror-search' ), '5.37.0' );
337
 
338
  // All the CodeMirror styles
339
+ wp_enqueue_style( 'socss-codemirror', plugin_dir_url( __FILE__ ) . 'lib/codemirror/lib/codemirror.css', array(), '5.2.0' );
340
+ wp_enqueue_style( 'socss-codemirror-theme-neat', plugin_dir_url( __FILE__ ) . 'lib/codemirror/theme/neat.css', array(), '5.2.0' );
341
+ wp_enqueue_style( 'socss-codemirror-lint-css', plugin_dir_url( __FILE__ ) . 'lib/codemirror/addon/lint/lint.css', array(), '5.2.0' );
342
+ wp_enqueue_style( 'socss-codemirror-show-hint', plugin_dir_url( __FILE__ ) . 'lib/codemirror/addon/hint/show-hint.css', array(), '5.2.0' );
343
+ wp_enqueue_style( 'socss-codemirror-dialog', plugin_dir_url(__FILE__) . 'lib/codemirror/addon/dialog/dialog.css', '5.2.0' );
344
+ wp_enqueue_style( 'socss-codemirror-search-matchesonscrollbar', plugin_dir_url(__FILE__) . 'lib/codemirror/addon/search/matchesonscrollbar.css', array(), '5.37.0' );
345
 
346
  // Enqueue the scripts for theme CSS processing
347
  wp_enqueue_script( 'siteorigin-css-parser-lib', plugin_dir_url( __FILE__ ) . 'js/css' . SOCSS_JS_SUFFIX . '.js', array( 'jquery' ), SOCSS_VERSION );
357
  wp_enqueue_script( 'siteorigin-uri', plugin_dir_url( __FILE__ ) . 'js/URI' . SOCSS_JS_SUFFIX . '.js', array(), SOCSS_VERSION, true );
358
 
359
  // All the custom SiteOrigin CSS stuff
360
+ wp_enqueue_script( 'siteorigin-custom-css', plugin_dir_url(__FILE__) . 'js/editor' . SOCSS_JS_SUFFIX . '.js', array( 'jquery', 'underscore', 'backbone', 'siteorigin-css-parser-lib', 'socss-codemirror' ), SOCSS_VERSION, true );
361
  wp_enqueue_style( 'siteorigin-custom-css', plugin_dir_url(__FILE__) . 'css/admin.css', array( ), SOCSS_VERSION );
362
 
363