Blame view

bower_components/prism/plugins/previewer-easing/prism-previewer-easing.js 3.28 KB
eb240478   Luigi Serra   public room cards...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
  (function() {
  
  	if (
  		typeof self !== 'undefined' && !self.Prism ||
  		typeof global !== 'undefined' && !global.Prism
  	) {
  		return;
  	}
  
  	var languages = {
  		'css': true,
  		'less': true,
  		'sass': [
  			{
  				lang: 'sass',
  				inside: 'inside',
  				before: 'punctuation',
  				root: Prism.languages.sass && Prism.languages.sass['variable-line']
  			},
  			{
  				lang: 'sass',
  				inside: 'inside',
  				root: Prism.languages.sass && Prism.languages.sass['property-line']
  			}
  		],
  		'scss': true,
  		'stylus': [
  			{
  				lang: 'stylus',
  				before: 'hexcode',
  				inside: 'rest',
  				root: Prism.languages.stylus && Prism.languages.stylus['property-declaration'].inside
  			},
  			{
  				lang: 'stylus',
  				before: 'hexcode',
  				inside: 'rest',
  				root: Prism.languages.stylus && Prism.languages.stylus['variable-declaration'].inside
  			}
  		]
  	};
  
  	Prism.hooks.add('before-highlight', function (env) {
  		if (env.language && languages[env.language] && !languages[env.language].initialized) {
  			var lang = languages[env.language];
  			if (Prism.util.type(lang) !== 'Array') {
  				lang = [lang];
  			}
  			lang.forEach(function(lang) {
  				var before, inside, root, skip;
  				if (lang === true) {
  					before = 'important';
  					inside = env.language;
  					lang = env.language;
  				} else {
  					before = lang.before || 'important';
  					inside = lang.inside || lang.lang;
  					root = lang.root || Prism.languages;
  					skip = lang.skip;
  					lang = env.language;
  				}
  
  				if (!skip && Prism.languages[lang]) {
  					Prism.languages.insertBefore(inside, before, {
  						'easing': /\bcubic-bezier\((?:-?\d*\.?\d+,\s*){3}-?\d*\.?\d+\)\B|\b(?:linear|ease(?:-in)?(?:-out)?)(?=\s|[;}]|$)/i
  					}, root);
  					env.grammar = Prism.languages[lang];
  
  					languages[env.language] = {initialized: true};
  				}
  			});
  		}
  	});
  
  	if (Prism.plugins.Previewer) {
  		new Prism.plugins.Previewer('easing', function (value) {
  
  			value = {
  				'linear': '0,0,1,1',
  				'ease': '.25,.1,.25,1',
  				'ease-in': '.42,0,1,1',
  				'ease-out': '0,0,.58,1',
  				'ease-in-out':'.42,0,.58,1'
  			}[value] || value;
  
  			var p = value.match(/-?\d*\.?\d+/g);
  
  			if(p.length === 4) {
  				p = p.map(function(p, i) { return (i % 2? 1 - p : p) * 100; });
  
  				this.querySelector('path').setAttribute('d', 'M0,100 C' + p[0] + ',' + p[1] + ', ' + p[2] + ',' + p[3] + ', 100,0');
  
  				var lines = this.querySelectorAll('line');
  				lines[0].setAttribute('x2', p[0]);
  				lines[0].setAttribute('y2', p[1]);
  				lines[1].setAttribute('x2', p[2]);
  				lines[1].setAttribute('y2', p[3]);
  
  				return true;
  			}
  
  			return false;
  		}, '*', function () {
  			this._elt.innerHTML = '<svg viewBox="-20 -20 140 140" width="100" height="100">' +
  				'<defs>' +
  					'<marker id="prism-previewer-easing-marker" viewBox="0 0 4 4" refX="2" refY="2" markerUnits="strokeWidth">' +
  						'<circle cx="2" cy="2" r="1.5" />' +
  					'</marker>' +
  				'</defs>' +
  				'<path d="M0,100 C20,50, 40,30, 100,0" />' +
  				'<line x1="0" y1="100" x2="20" y2="50" marker-start="url(' + location.href + '#prism-previewer-easing-marker)" marker-end="url(' + location.href + '#prism-previewer-easing-marker)" />' +
  				'<line x1="100" y1="0" x2="40" y2="30" marker-start="url(' + location.href + '#prism-previewer-easing-marker)" marker-end="url(' + location.href + '#prism-previewer-easing-marker)" />' +
  			'</svg>';
  		});
  	}
  
  }());