summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEgil Moeller <egil.moller@freecode.no>2012-04-01 22:55:04 +0200
committerEgil Moeller <egil.moller@freecode.no>2012-04-01 22:55:04 +0200
commit434252a321ff06361426e745940482df04f13d66 (patch)
tree389da54e74c01e819848b6e6e2d2cf3e346c2848 /src
parentba00144bcd0e0cb16bccc7d59a3ed6ec033e9d82 (diff)
downloadetherpad-lite-434252a321ff06361426e745940482df04f13d66.zip
Removed prefixfree as it breaks @import in css files
Diffstat (limited to 'src')
-rw-r--r--src/node/utils/tar.json1
-rw-r--r--src/static/js/pad.js1
-rw-r--r--src/static/js/prefixfree.js419
3 files changed, 0 insertions, 421 deletions
diff --git a/src/node/utils/tar.json b/src/node/utils/tar.json
index adb6e2b2..af31fb80 100644
--- a/src/node/utils/tar.json
+++ b/src/node/utils/tar.json
@@ -22,7 +22,6 @@
, "chat.js"
, "excanvas.js"
, "farbtastic.js"
- , "prefixfree.js"
]
, "timeslider.js": [
"jquery.js"
diff --git a/src/static/js/pad.js b/src/static/js/pad.js
index 176911ac..426eb089 100644
--- a/src/static/js/pad.js
+++ b/src/static/js/pad.js
@@ -31,7 +31,6 @@ require('./farbtastic');
require('./excanvas');
JSON = require('./json2');
require('./undo-xpopup');
-require('./prefixfree');
var chat = require('./chat').chat;
var getCollabClient = require('./collab_client').getCollabClient;
diff --git a/src/static/js/prefixfree.js b/src/static/js/prefixfree.js
deleted file mode 100644
index b5b23466..00000000
--- a/src/static/js/prefixfree.js
+++ /dev/null
@@ -1,419 +0,0 @@
-/**
- * StyleFix 1.0.2
- * @author Lea Verou
- * MIT license
- */
-
-(function(){
-
-if(!window.addEventListener) {
- return;
-}
-
-var self = window.StyleFix = {
- link: function(link) {
- try {
- // Ignore stylesheets with data-noprefix attribute as well as alternate stylesheets
- if(link.rel !== 'stylesheet' || link.hasAttribute('data-noprefix')) {
- return;
- }
- }
- catch(e) {
- return;
- }
-
- var url = link.href || link.getAttribute('data-href'),
- base = url.replace(/[^\/]+$/, ''),
- parent = link.parentNode,
- xhr = new XMLHttpRequest();
-
- xhr.open('GET', url);
-
- xhr.onreadystatechange = function() {
- if(xhr.readyState === 4) {
- var css = xhr.responseText;
-
- if(css && link.parentNode) {
- css = self.fix(css, true, link);
-
- // Convert relative URLs to absolute, if needed
- if(base) {
- css = css.replace(/url\(('?|"?)(.+?)\1\)/gi, function($0, quote, url) {
- if(!/^([a-z]{3,10}:|\/|#)/i.test(url)) { // If url not absolute & not a hash
- // May contain sequences like /../ and /./ but those DO work
- return 'url("' + base + url + '")';
- }
-
- return $0;
- });
-
- // behavior URLs shoudn’t be converted (Issue #19)
- css = css.replace(RegExp('\\b(behavior:\\s*?url\\(\'?"?)' + base, 'gi'), '$1');
- }
-
- var style = document.createElement('style');
- style.textContent = css;
- style.media = link.media;
- style.disabled = link.disabled;
- style.setAttribute('data-href', link.getAttribute('href'));
-
- parent.insertBefore(style, link);
- parent.removeChild(link);
- }
- }
- };
-
- xhr.send(null);
-
- link.setAttribute('data-inprogress', '');
- },
-
- styleElement: function(style) {
- var disabled = style.disabled;
-
- style.textContent = self.fix(style.textContent, true, style);
-
- style.disabled = disabled;
- },
-
- styleAttribute: function(element) {
- var css = element.getAttribute('style');
-
- css = self.fix(css, false, element);
-
- element.setAttribute('style', css);
- },
-
- process: function() {
- // Linked stylesheets
- $('link[rel="stylesheet"]:not([data-inprogress])').forEach(StyleFix.link);
-
- // Inline stylesheets
- $('style').forEach(StyleFix.styleElement);
-
- // Inline styles
- $('[style]').forEach(StyleFix.styleAttribute);
- },
-
- register: function(fixer, index) {
- (self.fixers = self.fixers || [])
- .splice(index === undefined? self.fixers.length : index, 0, fixer);
- },
-
- fix: function(css, raw) {
- for(var i=0; i<self.fixers.length; i++) {
- css = self.fixers[i](css, raw) || css;
- }
-
- return css;
- },
-
- camelCase: function(str) {
- return str.replace(/-([a-z])/g, function($0, $1) { return $1.toUpperCase(); }).replace('-','');
- },
-
- deCamelCase: function(str) {
- return str.replace(/[A-Z]/g, function($0) { return '-' + $0.toLowerCase() });
- }
-};
-
-/**************************************
- * Process styles
- **************************************/
-(function(){
- setTimeout(function(){
- $('link[rel="stylesheet"]').forEach(StyleFix.link);
- }, 10);
-
- document.addEventListener('DOMContentLoaded', StyleFix.process, false);
-})();
-
-function $(expr, con) {
- return [].slice.call((con || document).querySelectorAll(expr));
-}
-
-})();
-
-/**
- * PrefixFree 1.0.4
- * @author Lea Verou
- * MIT license
- */
-(function(root, undefined){
-
-if(!window.StyleFix || !window.getComputedStyle) {
- return;
-}
-
-var self = window.PrefixFree = {
- prefixCSS: function(css, raw) {
- var prefix = self.prefix;
-
- function fix(what, before, after, replacement) {
- what = self[what];
-
- if(what.length) {
- var regex = RegExp(before + '(' + what.join('|') + ')' + after, 'gi');
-
- css = css.replace(regex, replacement);
- }
- }
-
- fix('functions', '(\\s|:|,)', '\\s*\\(', '$1' + prefix + '$2(');
- fix('keywords', '(\\s|:)', '(\\s|;|\\}|$)', '$1' + prefix + '$2$3');
- fix('properties', '(^|\\{|\\s|;)', '\\s*:', '$1' + prefix + '$2:');
-
- // Prefix properties *inside* values (issue #8)
- if (self.properties.length) {
- var regex = RegExp('\\b(' + self.properties.join('|') + ')(?!:)', 'gi');
-
- fix('valueProperties', '\\b', ':(.+?);', function($0) {
- return $0.replace(regex, prefix + "$1")
- });
- }
-
- if(raw) {
- fix('selectors', '', '\\b', self.prefixSelector);
- fix('atrules', '@', '\\b', '@' + prefix + '$1');
- }
-
- // Fix double prefixing
- css = css.replace(RegExp('-' + prefix, 'g'), '-');
-
- return css;
- },
-
- // Warning: prefixXXX functions prefix no matter what, even if the XXX is supported prefix-less
- prefixSelector: function(selector) {
- return selector.replace(/^:{1,2}/, function($0) { return $0 + self.prefix })
- },
-
- prefixProperty: function(property, camelCase) {
- var prefixed = self.prefix + property;
-
- return camelCase? StyleFix.camelCase(prefixed) : prefixed;
- }
-};
-
-/**************************************
- * Properties
- **************************************/
-(function() {
- var prefixes = {},
- properties = [],
- shorthands = {},
- style = getComputedStyle(document.documentElement, null),
- dummy = document.createElement('div').style;
-
- // Why are we doing this instead of iterating over properties in a .style object? Cause Webkit won't iterate over those.
- var iterate = function(property) {
- if(property.charAt(0) === '-') {
- properties.push(property);
-
- var parts = property.split('-'),
- prefix = parts[1];
-
- // Count prefix uses
- prefixes[prefix] = ++prefixes[prefix] || 1;
-
- // This helps determining shorthands
- while(parts.length > 3) {
- parts.pop();
-
- var shorthand = parts.join('-');
-
- if(supported(shorthand) && properties.indexOf(shorthand) === -1) {
- properties.push(shorthand);
- }
- }
- }
- },
- supported = function(property) {
- return StyleFix.camelCase(property) in dummy;
- }
-
- // Some browsers have numerical indices for the properties, some don't
- if(style.length > 0) {
- for(var i=0; i<style.length; i++) {
- iterate(style[i])
- }
- }
- else {
- for(var property in style) {
- iterate(StyleFix.deCamelCase(property));
- }
- }
-
- // Find most frequently used prefix
- var highest = {uses:0};
- for(var prefix in prefixes) {
- var uses = prefixes[prefix];
-
- if(highest.uses < uses) {
- highest = {prefix: prefix, uses: uses};
- }
- }
-
- self.prefix = '-' + highest.prefix + '-';
- self.Prefix = StyleFix.camelCase(self.prefix);
-
- self.properties = [];
-
- // Get properties ONLY supported with a prefix
- for(var i=0; i<properties.length; i++) {
- var property = properties[i];
-
- if(property.indexOf(self.prefix) === 0) { // we might have multiple prefixes, like Opera
- var unprefixed = property.slice(self.prefix.length);
-
- if(!supported(unprefixed)) {
- self.properties.push(unprefixed);
- }
- }
- }
-
- // IE fix
- if(self.Prefix == 'Ms'
- && !('transform' in dummy)
- && !('MsTransform' in dummy)
- && ('msTransform' in dummy)) {
- self.properties.push('transform', 'transform-origin');
- }
-
- self.properties.sort();
-})();
-
-/**************************************
- * Values
- **************************************/
-(function() {
-// Values that might need prefixing
-var functions = {
- 'linear-gradient': {
- property: 'backgroundImage',
- params: 'red, teal'
- },
- 'calc': {
- property: 'width',
- params: '1px + 5%'
- },
- 'element': {
- property: 'backgroundImage',
- params: '#foo'
- }
-};
-
-
-functions['repeating-linear-gradient'] =
-functions['repeating-radial-gradient'] =
-functions['radial-gradient'] =
-functions['linear-gradient'];
-
-var keywords = {
- 'initial': 'color',
- 'zoom-in': 'cursor',
- 'zoom-out': 'cursor',
- 'box': 'display',
- 'flexbox': 'display',
- 'inline-flexbox': 'display'
-};
-
-self.functions = [];
-self.keywords = [];
-
-var style = document.createElement('div').style;
-
-function supported(value, property) {
- style[property] = '';
- style[property] = value;
-
- return !!style[property];
-}
-
-for (var func in functions) {
- var test = functions[func],
- property = test.property,
- value = func + '(' + test.params + ')';
-
- if (!supported(value, property)
- && supported(self.prefix + value, property)) {
- // It's supported, but with a prefix
- self.functions.push(func);
- }
-}
-
-for (var keyword in keywords) {
- var property = keywords[keyword];
-
- if (!supported(keyword, property)
- && supported(self.prefix + keyword, property)) {
- // It's supported, but with a prefix
- self.keywords.push(keyword);
- }
-}
-
-})();
-
-/**************************************
- * Selectors and @-rules
- **************************************/
-(function() {
-
-var
-selectors = {
- ':read-only': null,
- ':read-write': null,
- ':any-link': null,
- '::selection': null
-},
-
-atrules = {
- 'keyframes': 'name',
- 'viewport': null,
- 'document': 'regexp(".")'
-};
-
-self.selectors = [];
-self.atrules = [];
-
-var style = root.appendChild(document.createElement('style'));
-
-function supported(selector) {
- style.textContent = selector + '{}'; // Safari 4 has issues with style.innerHTML
-
- return !!style.sheet.cssRules.length;
-}
-
-for(var selector in selectors) {
- var test = selector + (selectors[selector]? '(' + selectors[selector] + ')' : '');
-
- if(!supported(test) && supported(self.prefixSelector(test))) {
- self.selectors.push(selector);
- }
-}
-
-for(var atrule in atrules) {
- var test = atrule + ' ' + (atrules[atrule] || '');
-
- if(!supported('@' + test) && supported('@' + self.prefix + test)) {
- self.atrules.push(atrule);
- }
-}
-
-root.removeChild(style);
-
-})();
-
-// Properties that accept properties as their value
-self.valueProperties = [
- 'transition',
- 'transition-property'
-]
-
-// Add class for current prefix
-root.className += ' ' + self.prefix;
-
-StyleFix.register(self.prefixCSS);
-
-
-})(document.documentElement);