<commit_before>/*
---
name: Fx.CSS3
script: Fx.CSS3.js
license: MIT-style license.
description: Provides the CSS3 implementations of Tween, Morph and Elements
copyright: Copyright (c) 2010, Dipl.-Ing. (FH) <NAME> <kontakt at visualdrugs dot net>, based on code by eskimoblood (mootools users group)
copyright: Copyright (c) 2011 <NAME> <EMAIL>
authors: [<NAME>, <NAME>, eskimoblood]

requires: [Core/Class.Extras, Core/Element.Event, Core/Element.Style, Core/Fx, Core/Fx.Tween, Core/Fx.Morph, More/Array.Extras, More/Fx.Elements]

provides: [Fx.Tween.CSS3, Fx.Morph.CSS3, Fx.Elements.CSS3]
...
*/

(function() {
	
	Object.extend({

		isEqual: function(a, b){
			// Check object identity.
			if (a === b) return true;
			// Different types?
			var atype = typeOf(a), btype = typeOf(b);
			if (atype != btype) return false;
			// Basic equality test (watch out for coercions).
			if (a == b) return true;
			// One is falsy and the other truthy.
			if ((!a && b) || (a && !b)) return false;
			// One of them implements an isEqual()?
			if (a.isEqual) return a.isEqual(b);
			if (b.isEqual) return b.isEqual(a);
			// Both are NaN?
			if ((a !== a) && (b !== b)) return false;
			// Check dates' integer values.
			if (atype == 'date') return a.getTime() === b.getTime();
			if (atype == 'function') return true;
			// Compare regular expressions.
			if (atype == 'regexp')
			  return a.source     === b.source &&
			         a.global     === b.global &&
			         a.ignoreCase === b.ignoreCase &&
			         a.multiline  === b.multiline;
			// If a is not an object by this point, we can't handle it.
			if (atype !== 'object' && atype !== 'array') return false;
			// Check for different array lengths before comparing contents.
			if (a.length && (a.length !== b.length)) return false;
			// Nothing else worked, deep compare the contents.
			var aKeys = Object.keys(a), bKeys = Object.keys(b);
			// Different object sizes?
			if (aKeys.length != bKeys.length) return false;
			// Recursive comparison of contents.
			for (var key in a) if (!(key in b) || !Object.isEqual(a[key], b[key])) return false;
			return true;
		}

	});
	
	var css3Features = (function(){

		var prefix = (function(){
			var prefixes = ['ms', 'O', 'Moz', 'webkit'],
				style = document.documentElement.style;
			for (var l = prefixes.length; l--;){
				var prefix = prefixes[l];
				if (typeof style[prefix + 'Transition'] != 'undefined') return prefix;
			}
			return false;
		})();
		
		if(prefix) {
			return {
				transition: prefix + 'Transition',
				transitionProperty: prefix + 'TransitionProperty',
				transitionDuration: prefix + 'TransitionDuration',
				transitionTimingFunction : prefix + 'TransitionTimingFunction',
				transitionend: prefix == 'Moz' ? 'transitionend' : (prefix == 'ms' ? 'MS' : prefix) + 'TransitionEnd'
			}
		}
		return false;
	})();
	
	Element.NativeEvents[css3Features.transitionend] = 2;
	
	Event.implement({
		getPropertyName: function(){
			return this.event.propertyName;
		},

		getElapsedTime: function(nativeTime){
			return nativeTime ? this.event.elapsedTime : (this.event.elapsedTime * 1000).toInt();
		}
	});

	Array.implement({
		containsArray: function(array) {
			return array.every(function(v) {
				return this.contains(v);
			}, this);
		}
	});

	var transitionTimings = {
		'linear'		: '0,0,1,1',
		'expo:in'		: '0.71,0.01,0.83,0',
		'expo:out'		: '0.14,1,0.32,0.99',
		'expo:in:out'	: '0.85,0,0.15,1',
		'circ:in'		: '0.34,0,0.96,0.23',
		'circ:out'		: '0,0.5,0.37,0.98',
		'circ:in:out'	: '0.88,0.1,0.12,0.9',
		'sine:in'		: '0.22,0.04,0.36,0',
		'sine:out'		: '0.04,0,0.5,1',
		'sine:in:out'	: '0.37,0.01,0.63,1',
		'quad:in'		: '0.14,0.01,0.49,0',
		'quad:out'		: '0.01,0,0.43,1',<commit_msg>Compatibility MooTools 1.4 Strict<commit_after>/*
---
name: Fx.CSS3
script: Fx.CSS3.js
license: MIT-style license.
description: Provides the CSS3 implementations of Tween, Morph and Elements
copyright: Copyright (c) 2010, Dipl.-Ing. (FH) <NAME> <kontakt at visualdrugs dot net>, based on code by eskimoblood (mootools users group)
copyright: Copyright (c) 2011 <NAME> <EMAIL>
authors: [<NAME>, <NAME>, eskimoblood]

requires: [Core/Class.Extras, Core/Element.Event, Core/Element.Style, Core/Fx, Core/Fx.Tween, Core/Fx.Morph, More/Array.Extras, More/Fx.Elements]

provides: [Fx.Tween.CSS3, Fx.Morph.CSS3, Fx.Elements.CSS3]
...
*/

(function() {
	
	Object.extend({

		isEqual: function(a, b){
			// Check object identity.
			if (a === b) return true;
			// Different types?
			var atype = typeOf(a), btype = typeOf(b);
			if (atype != btype) return false;
			// Basic equality test (watch out for coercions).
			if (a == b) return true;
			// One is falsy and the other truthy.
			if ((!a && b) || (a && !b)) return false;
			// One of them implements an isEqual()?
			if (a.isEqual) return a.isEqual(b);
			if (b.isEqual) return b.isEqual(a);
			// Both are NaN?
			if ((a !== a) && (b !== b)) return false;
			// Check dates' integer values.
			if (atype == 'date') return a.getTime() === b.getTime();
			if (atype == 'function') return true;
			// Compare regular expressions.
			if (atype == 'regexp')
			  return a.source     === b.source &&
			         a.global     === b.global &&
			         a.ignoreCase === b.ignoreCase &&
			         a.multiline  === b.multiline;
			// If a is not an object by this point, we can't handle it.
			if (atype !== 'object' && atype !== 'array') return false;
			// Check for different array lengths before comparing contents.
			if (a.length && (a.length !== b.length)) return false;
			// Nothing else worked, deep compare the contents.
			var aKeys = Object.keys(a), bKeys = Object.keys(b);
			// Different object sizes?
			if (aKeys.length != bKeys.length) return false;
			// Recursive comparison of contents.
			for (var key in a) if (!(key in b) || !Object.isEqual(a[key], b[key])) return false;
			return true;
		}

	});
	
	var css3Features = (function(){

		var prefix = (function(){
			var prefixes = ['ms', 'O', 'Moz', 'webkit'],
				style = document.documentElement.style;
			for (var l = prefixes.length; l--;){
				var prefix = prefixes[l];
				if (typeof style[prefix + 'Transition'] != 'undefined') return prefix;
			}
			return false;
		})();
		
		if(prefix) {
			return {
				transition: prefix + 'Transition',
				transitionProperty: prefix + 'TransitionProperty',
				transitionDuration: prefix + 'TransitionDuration',
				transitionTimingFunction : prefix + 'TransitionTimingFunction',
				transitionend: prefix == 'Moz' ? 'transitionend' : (prefix == 'ms' ? 'MS' : prefix) + 'TransitionEnd'
			}
		}
		return false;
	})();
	
	Element.NativeEvents[css3Features.transitionend] = 2;
	
	(window.DOMEvent||window.Event).implement({
		getPropertyName: function(){
			return this.event.propertyName;
		},

		getElapsedTime: function(nativeTime){
			return nativeTime ? this.event.elapsedTime : (this.event.elapsedTime * 1000).toInt();
		}
	});

	Array.implement({
		containsArray: function(array) {
			return array.every(function(v) {
				return this.contains(v);
			}, this);
		}
	});

	var transitionTimings = {
		'linear'		: '0,0,1,1',
		'expo:in'		: '0.71,0.01,0.83,0',
		'expo:out'		: '0.14,1,0.32,0.99',
		'expo:in:out'	: '0.85,0,0.15,1',
		'circ:in'		: '0.34,0,0.96,0.23',
		'circ:out'		: '0,0.5,0.37,0.98',
		'circ:in:out'	: '0.88,0.1,0.12,0.9',
		'sine:in'		: '0.22,0.04,0.36,0',
		'sine:out'		: '0.04,0,0.5,1',
		'sine:in:out'	: '0.37,0.01,0.63,1',
		'quad:in'		: '0.14,0.01,0.49,0',
		'quad:out'		: '0.01,0,0.43,1',
{'fraction_non_alphanumeric': 0.18091054313099042, 'fraction_numerical': 0.03407880724174654, 'mean_word_length': 3.232676056338028, 'pattern_counts': {'":': 0, '<': 15, '<?xml version=': 0, '>': 15, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3989738', 'n_tokens_mistral': 3192, 'n_tokens_neox': 2755, 'n_words': 688}