Permalink
Browse files

New engine

  • Loading branch information...
1 parent 4a3463c commit f92a6b8dc65d9b7f18238429ce8034e4946d6b48 @mikeescobedo mikeescobedo committed Feb 1, 2010
Showing with 6,884 additions and 260 deletions.
  1. +239 −0 css/stylesheet.css
  2. +264 −260 index.html
  3. +303 −0 javascript/javascript.js
  4. +6,078 −0 javascript/jquery-1.4.1.js
View
239 css/stylesheet.css
@@ -0,0 +1,239 @@
+/* --------------------------------
+ Normalize CSS Reset v1.2
+ Firefox IE Safari Chrome Opera
+ Jonathan Neal
+ jneal@liferay.com
+ 01-28-2010
+--------------------------------*/
+
+/* Global */
+
+html {
+ overflow-y: scroll;
+}
+
+article,
+aside,
+figure,
+footer,
+header,
+hgroup,
+nav,
+section {
+ display: block;
+}
+
+a {
+ cursor: pointer;
+ outline: none;
+}
+
+q:before,
+q:after {
+ content: "";
+}
+
+img {
+ border: 0;
+ vertical-align: text-bottom;
+}
+
+table {
+ border-collapse: collapse;
+}
+
+/* Box Model */
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ margin: 20px 0;
+}
+
+blockquote,
+dl,
+ol,
+menu,
+p,
+pre,
+ul {
+ margin: 16px 0;
+}
+
+body {
+ margin: 8px;
+}
+
+ol,
+ul ol {
+ list-style: decimal outside;
+}
+
+ul,
+ol ul {
+ list-style: disc outside;
+}
+
+ul ul {
+ list-style: circle;
+}
+
+ol ol {
+ list-style: upper-roman;
+}
+
+/* Color */
+
+abbr {
+ border-bottom: 1px dotted;
+ border-bottom-color: inherit;
+}
+
+body {
+ background: #FFF;
+ color: #000;
+}
+
+hr {
+ border: 0 solid #808080;
+ border-width: 0 0 1px;
+ height: 0;
+}
+
+/* Fonts */
+
+body {
+ font: 16px/20px Times, "Times New Roman", Georgia, serif;
+}
+
+code,
+h3,
+h4,
+h5,
+h6,
+kbd,
+listing,
+pre,
+samp,
+tt {
+ line-height: 20px;
+}
+
+h1 {
+ font-size: 32px;
+ line-height: 40px;
+}
+
+h2 {
+ font-size: 24px;
+ line-height: 30px;
+}
+
+h3 {
+ font-size: 18px;
+}
+
+h4,
+h5,
+h6 {
+ font-size: 16px;
+}
+
+sub,
+sup {
+ font-size: 12px;
+ line-height: 0;
+}
+
+code,
+kbd,
+listing,
+pre,
+samp,
+tt {
+ font-size: 13px;
+}
+
+dfn {
+ font-style: italic;
+}
+
+/* --------------------------------
+ CSS34All Theme
+ Jonathan Neal
+ jneal@liferay.com
+ 01-28-2010
+--------------------------------*/
+
+body {
+ background: #0c1021;
+ color: #f8f8f8;
+}
+
+#sandbox {
+ background: #555;
+ border: 5px solid #888;
+ overflow: hidden;
+ padding: 20px;
+ position: fixed;
+ right: 75px;
+ top: 50px;
+ width: 400px;
+ z-index: 2;
+}
+
+.rule,
+.rule input {
+ font: 14px/20px Consolas, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", Monaco, "Courier New", Courier, monospace;
+ white-space: pre;
+ margin: 0;
+}
+
+.rule .comment {
+ color: #d8d8d8;
+}
+
+.rule .selector {
+ color: #ff6400;
+}
+
+.rule .property {
+ color: #8da6ce;
+}
+
+.rule .value {
+ color: #61ce3c;
+}
+
+.rule b {
+ border-bottom: 1px dotted #808080;
+ color: #d8fa3c;
+ font-weight: normal;
+ padding: 0 0 1px;
+ position: relative;
+}
+
+.rule b input {
+ background: none;
+ border: 0;
+ color: inherit;
+ display: none;
+ left: -1px;
+ min-width: 2em;
+ outline: 0;
+ padding: 0;
+ position: absolute;
+ top: 0;
+ width: 200%;
+}
+
+.rule b.edit span {
+ visibility: hidden;
+}
+
+.rule b.edit input {
+ display: inline;
+}
View
524 index.html
@@ -1,290 +1,294 @@
-<!doctype html>
-<html>
-<head>
-<title>Cross Browser CSS3 Rule Generator Hawtness</title>
+<!DOCTYPE HTML>
-<style type="text/css" media="screen">
- /*... white we're playing with weird formating for css rules ...*/
- body {background: #444;color: #BBB;}
- body,pre,input {font: 15px/20px "Palatino Linotype", "Book Antiqua", Palatino, serif;}
- pre {background:transparent; position:relative; padding: 0 0 0 20px; font-family: 'AnonymousPro';}
- u {text-decoration: none;}
- b {font-weight: normal;}
- i {border-radius: 5px;border: 0;color: #fff;font-style: normal;overflow: hidden;position: relative;border-bottom: 2px solid #eee;}
- i input {background: none;border: 0;color: inherit;left: 0;min-width: 2em;outline: 0;padding: 0;position: absolute;top: 0;width: 200%;font-family: AnonymousPro;}
- i.edit {background: #eee;color: #222;}
- input[type=checkbox] {left:-6px;position:absolute;top:21px;}
- /*... for the sliders ...*/
- #previewContainer{position: fixed;top: 0px;right: 0px;width: 350px;height: 200px;background: #f4f4f4;}
- #previewButton{position: absolute;top: 0px;left: 0px;width: 25px;height: 200px;background: #c4c4c4;cursor: pointer;}
- #previewButtonText{position: absolute; margin: 0; padding: 0; color: #000;top: 80px;left:-15px;transform: rotate(90deg);-moz-transform: rotate(90deg);-o-transform: rotate(90deg);-webkit-transform: rotate(90deg);filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";}
- #preview{position: absolute;top: 0px;left: 25px;width: 325px;height: 200px;background: #f4f4f4;}
- #previewBox{position: absolute;top: 50px;left: 60px;width:170px;height:110px;}
- #codeContainer{position: fixed;top: 205px;right: 0px;width: 350px;height: 200px;background: #f4f4f4;}
- #codeButton{position: absolute;top: 0px;left: 0px;width: 35px;height: 200px;background: #c4c4c4;cursor: pointer;}
- #codeButtonText{position: absolute; margin: 0; padding: 0;color: #000;top: 80px;left:-5px;transform: rotate(90deg);-moz-transform: rotate(90deg);-o-transform: rotate(90deg);-webkit-transform: rotate(90deg);filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";}
- #code {position: absolute;top: 0px;left: 25px;width: 325px;height: 200px;margin: 0; padding: 0;font-size:12px;background: #777;}
- /*... classes for previewBox, hard coded for now ...*/
- #previewBox.box_round {-moz-border-radius: 5px;-webkit-border-radius: 5px;border-radius: 5px;}
- #previewBox.box_shadow {-moz-box-shadow: 2px 2px 1px #000;-webkit-box-shadow: 2px 2px 1px #000;box-shadow: 2px 2px 1px #000;filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=2px, OffY=2px, Color='#000000');-ms-filter: "progid:DXImageTransform.Microsoft.dropshadow(OffX=2px, OffY=2px, Color='#000000')";}
- /*...! the code for the webkit gradient is NOT the code from the text, that code didn't work for me at all !...*/
- #previewBox.box_gradient {background-image: -moz-linear-gradient(top, #FFF, #000);background-image: -webkit-gradient(linear,left bottom,left top,color-stop(0, rgb(255,255,255)),color-stop(1, rgb(0,0,0)));filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFF', endColorstr='#000000');-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFF', endColorstr='#000000')";}
- #previewBox.box_rgba {background-color: transparent;background-color: rgba(255, 0, 255, 0.5);filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF00FF80',endColorstr='#FF00FF80');-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF00FF',endColorstr='#FF00FF')";}
- #previewBox.box_rotate {transform: rotate(90deg);-moz-transform: rotate(90deg);-o-transform: rotate(90deg);-webkit-transform: rotate(90deg);filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";}
-</style>
+<html>
-<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js" type="text/javascript"></script>
-<script type="text/javascript" src="ZeroClipboard.js"></script>
-<script type="text/javascript">
-cssfn = {
- matchRgba: /^rgba\s{0,}\(\s{0,}(\d+)\s{0,},\s{0,}(\d+)\s{0,},\s{0,}(\d+)\s{0,},\s{0,}(\d+)\s{0,}\)/,
- matchHexa: /^#{0,}([A-f0-9]{2,2})([A-f0-9]{2,2})([A-f0-9]{2,2})([A-f0-9]{2,2})/,
- matchShortHex: /^#{0,}([A-f0-9])([A-f0-9])([A-f0-9])$/,
- matchLongHex: /#{0,}([A-f0-9])\1([A-f0-9])\2([A-f0-9])\3$/,
- basicImageToDeg: function (d) {
- return (d * 90) || 0;
- },
- degToBasicImage: function (d) {
- return Math.round(((d / 90) || 0) * 100) / 100;
- },
- decimalToHex: function (d) {
- return ('0' + parseInt(d, 10).toString(16)).substr(-2).toUpperCase();
- },
- hexToDecimal: function (d) {
- return parseInt(d, 16);
- },
- longHex: function (h) {
- return (h.toUpperCase().match(this.matchShortHex)) ? h.toUpperCase().replace(this.matchShortHex, '#$1$1$2$2$3$3') : h.toUpperCase();
- },
- shortHex: function (h) {
- return (h.toUpperCase().match(this.matchLongHex)) ? h.toUpperCase().replace(this.matchLongHex, '#$1$2$3').toUpperCase() : h.toUpperCase();
- },
- rgbaToHexa: function (c) {
- var i = 0,
- h = '#',
- m = ((c = c.toLowerCase().match(this.matchRgba)) !== null) ? c : [null, 0, 0, 0, 0];
-
- while (++i < 5) {
- h += this.decimalToHex(m[i]);
- }
-
- return h.toUpperCase();
- },
- hexaToRgba: function (c) {
- var i = 0,
- h = [],
- m = ((c = c.toUpperCase().match(this.matchHexa)) !== null) ? c : [null, '00', '00', '00', '00'];
-
- while (++i < 5) {
- h.push(this.hexToDecimal(m[i]));
- }
-
- return 'rgba(' + h.join(', ') + ')';
- }
-};
-
+<head>
+ <meta charset="UTF-8" />
-// Checkbox Clicked >
-// Clear all classes from #previewBox >
-// applies parents of checked checkboxen's class to #previewBox
-function previewBox(){
- $("input:checkbox").click(function(){
- $("#previewBox").attr('class',"");
- $(this).parent().css('background','transparent');
- $("#code").html('');
- $("input:checked").each(function(){
- $("#previewBox").addClass($(this).parent().attr("class"));
- $(this).parent().css('background','#666666');
- $(this).parent().find('span').each(function(){
- $("#code").append($(this).html()+'<br/>');
- })
- });
- });
+ <title>Cross-Browser CSS3 Rule Generator</title>
+
+ <link rel="stylesheet" href="css/stylesheet.css" type="text/css" media="screen" title="Stylesheet" />
+
+ <script src="javascript/jquery-1.4.1.js" type="text/javascript"></script>
+ <script src="javascript/javascript.js" type="text/javascript"></script>
+</head>
+
+<body>
+
+<div id="sandbox">
+ <h1>
+ Fun with CSS3
+ </h1>
+ <p>
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+ </p>
+</div>
+
+<pre class="rule">
+/* -------------------------------------------------------------
+ Cross-Browser CSS3 Rule Generator
+ =================================
+
+ You can edit the underlined values in this css file,
+ but don't worry about making sure the corresponding
+ values match, that's all done automagically for you.
+
+ Whenever you want, you can copy the whole or part of
+ this page and paste it into your own stylesheets.
+------------------------------------------------------------- */
+
+</pre>
+
+<pre class="rule">
+.box_round {
+ -moz-border-radius: <b g="0">12px</b>;
+ -webkit-border-radius: <b g="0">12px</b>;
+ border-radius: <b g="0">12px</b>;
}
-function previewSlider(){
- var sliderPos = 0;
- var sliderMoving = 0;
- $("#previewContainer").animate({right: -325}, 0);
- $("#previewButton").live("click", function(){
- if (sliderMoving == 0){
- sliderMoving = 1;
- if (sliderPos == 0){$("#previewContainer").animate({right: 0}, 450, function(){sliderPos=1;sliderMoving=0;});}
- if (sliderPos == 1){$("#previewContainer").animate({right: -325}, 450, function(){sliderPos=0;sliderMoving=0;});}
- } else {return(false)}
- });
+</pre>
+
+<pre class="rule">
+.box_shadow {
+ -moz-box-shadow: <b g="0">2px</b> <b g="1">5px</b> <b g="2">5px</b> <b g="3" i="s2Hex" o="sHex">#8AC</b>;
+ -webkit-box-shadow: <b g="0">2px</b> <b g="1">5px</b> <b g="2">5px</b> <b g="3" i="s2Hex" o="sHex">#8AC</b>;
+ box-shadow: <b g="0">2px</b> <b g="1">5px</b> <b g="2">5px</b> <b g="3" i="s2Hex" o="sHex">#8AC</b>;
+ filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=<b g="0">5px</b>, OffY=<b g="1">5px</b>, Color='<b g="3" i="s2Hex" o="lHex">#88AACC</b>');
+ -ms-filter: "progid:DXImageTransform.Microsoft.dropshadow(OffX=<b g="0">5px</b>, OffY=<b g="1">5px</b>, Color='<b g="3" i="s2Hex" o="lHex">#88AACC</b>')";
}
-function codeSlider(){
- var sliderPos = 0;
- var sliderMoving = 0;
- $("#codeContainer").animate({right: -325}, 0);
- $("#codeButton").live("click", function(){
- if (sliderMoving == 0){
- sliderMoving = 1;
- if (sliderPos == 0){$("#codeContainer").animate({right: 0}, 450, function(){sliderPos=1;sliderMoving=0;});}
- if (sliderPos == 1){$("#codeContainer").animate({right: -325}, 450, function(){sliderPos=0;sliderMoving=0;});}
- } else {return(false)}
- });
+</pre>
+
+<pre class="rule">
+.box_gradient {
+ background-image: -moz-linear-gradient(top, <b g="0" i="s2Hex">#FFF</b>, <b g="1" i="s2Hex">#000</b>);
+ background-image: -webkit-gradient(linear,left bottom,left top,color-stop(0, <b g="0" i="s2Hex">#FFF</b>),color-stop(1, <b g="1" i="s2Hex">#000</b>));
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='<b g="0" i="s2Hex">#FFFFFF</b>', endColorstr='<b g="1" i="s2Hex">#000000</b>');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='<b g="0" i="s2Hex">#FFFFFF</b>', endColorstr='<b g="1" i="s2Hex">#000000</b>')";
}
-function copyPasta(){
- var boxround = new ZeroClipboard.Client();
- boxround.setText( $(".box_round .code").text() );
- boxround.glue( 'box_round_copypaste_button', 'box_round_copypaste' );
- var boxround = new ZeroClipboard.Client();
- boxround.setText( $(".box_shadow .code").text() );
- boxround.glue( 'box_shadow_copypaste_button', 'box_shadow_copypaste' );
- var boxround = new ZeroClipboard.Client();
- boxround.setText( $(".box_gradient .code").text() );
- boxround.glue( 'box_gradient_copypaste_button', 'box_gradient_copypaste' );
- var boxround = new ZeroClipboard.Client();
- boxround.setText( $(".box_rgba .code").text() );
- boxround.glue( 'box_rgba_copypaste_button', 'box_rgba_copypaste' );
- var boxround = new ZeroClipboard.Client();
- boxround.setText( $(".box_rotate .code").text() );
- boxround.glue( 'box_rotate_copypaste_button', 'box_rotate_copypaste' );
+</pre>
+
+<pre class="rule">
+.box_rgba {
+ background-color: transparent;
+ background-color: <b g="0" i="s2aHex" o="aCh">rgba(255, 0, 255, 128)</b>;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='<b g="0" i="s2aHex">#80FF00FF</b>',endColorstr='<b g="0" i="s2aHex">#80FF00FF</b>');
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='<b g="0" i="s2aHex">#80FF00FF</b>',endColorstr='<b g="0" i="s2aHex">#80FF00FF</b>')";
+}
+
+</pre>
+
+<pre class="rule">
+.box_rotate {
+ -moz-transform: rotate(<b g="0">-4.5</b>deg);
+ -o-transform: rotate(<b g="0">-4.5</b>deg);
+ -webkit-transform: rotate(<b g="0">-4.5</b>deg);
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=<b g="0" i="s2deg" o="rot">-0.05</b>);
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=<b g="0" i="s2deg" o="rot">-0.05</b>)";
}
+</pre>
+
+
+</body>
+
+</html>
+<!--
+<!doctype html>
+<html>
+<head>
+ <title>Cross Browser CSS3 Rule Generator</title>
+ <style type="text/css" media="screen">
+/*Styles*/
+body {
+ background: #353535;
+ color: #BBB;
+}
+
+body,
+pre,
+input {
+ font: 15px/20px "Palatino Linotype", "Book Antiqua", Palatino, serif;
+}
+
+pre {
+ background: transparent;
+ border: 5px solid #EEE;
+ padding: 20px;
+}
+
+u {
+ text-decoration: none;
+}
+
+b {
+ font-weight: normal;
+}
+
+i {
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ border-radius: 5px;
+ border: 0;
+ background: #3B3B3B;
+ font-style: normal;
+ overflow: hidden;
+ position: relative;
+}
+
+i input {
+ background: none;
+ border: 0;
+ color: inherit;
+ left: 0;
+ min-width: 2em;
+ outline: 0;
+ padding: 0;
+ position: absolute;
+ top: 0;
+ width: 200%;
+}
+
+i.edit {
+ background: #222;
+ color: #FFF;
+}
+
+ </style>
+ <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js" type="text/javascript"></script>
+ <script type="text/javascript">
+
+cssfn = {
+ matchRgba: /^rgba\s{0,}\(\s{0,}(\d+)\s{0,},\s{0,}(\d+)\s{0,},\s{0,}(\d+)\s{0,},\s{0,}(\d+)\s{0,}\)/,
+ matchHexa: /^#{0,}([A-f0-9]{2,2})([A-f0-9]{2,2})([A-f0-9]{2,2})([A-f0-9]{2,2})/,
+ matchShortHex: /^#{0,}([A-f0-9])([A-f0-9])([A-f0-9])$/,
+ matchLongHex: /#{0,}([A-f0-9])\1([A-f0-9])\2([A-f0-9])\3$/,
+ basicImageToDeg: function (d) {
+ return (d * 90) || 0;
+ },
+ degToBasicImage: function (d) {
+ return Math.round(((d / 90) || 0) * 100) / 100;
+ },
+ decimalToHex: function (d) {
+ return ('0' + parseInt(d, 10).toString(16)).substr(-2).toUpperCase();
+ },
+ hexToDecimal: function (d) {
+ return parseInt(d, 16);
+ },
+ longHex: function (h) {
+ return (h.toUpperCase().match(this.matchShortHex)) ? h.toUpperCase().replace(this.matchShortHex, '#$1$1$2$2$3$3') : h.toUpperCase();
+ },
+ shortHex: function (h) {
+ return (h.toUpperCase().match(this.matchLongHex)) ? h.toUpperCase().replace(this.matchLongHex, '#$1$2$3').toUpperCase() : h.toUpperCase();
+ },
+ rgbaToHexa: function (c) {
+ var i = 0,
+ h = '#',
+ m = ((c = c.toLowerCase().match(this.matchRgba)) !== null) ? c : [null, 0, 0, 0, 0];
+
+ while (++i < 5) {
+ h += this.decimalToHex(m[i]);
+ }
+
+ return h.toUpperCase();
+ },
+ hexaToRgba: function (c) {
+ var i = 0,
+ h = [],
+ m = ((c = c.toUpperCase().match(this.matchHexa)) !== null) ? c : [null, '00', '00', '00', '00'];
+
+ while (++i < 5) {
+ h.push(this.hexToDecimal(m[i]));
+ }
+
+ return 'rgba(' + h.join(', ') + ')';
+ }
+};
+
$(function () {
- var fn = function () {
- };
- previewSlider();
- codeSlider();
- previewBox();
- copyPasta();
- $('i').live('click', function () {
- var $out = $(this),
- $in = $(document.createElement('input'));
+ var fn = function () {
+ };
+ $('i').live('click', function () {
+ var $out = $(this),
+ $in = $(document.createElement('input'));
- if ($out.hasClass('edit')) {
- return;
- } else {
- $in.val($out.addClass('edit').wrapInner('<span>').children().attr('to', $out.attr('to') || '').css('visibility', 'hidden').html());
- }
+ if ($out.hasClass('edit')) {
+ return;
+ } else {
+ $in.val($out.addClass('edit').wrapInner('<span>').children().attr('to', $out.attr('to') || '').css('visibility', 'hidden').html());
+ }
- $out.append($in);
+ $out.append($in);
- $in.focus().bind('keydown keypress keyup', function () {
- var $in = $(this),
- $out = $in.parent(),
- val = $in.val();
+ $in.focus().bind('keydown keypress keyup', function () {
+ var $in = $(this),
+ $out = $in.parent(),
+ val = $in.val();
- $out.children('span').html($in.val());
+ $out.children('span').html($in.val());
- val = ($out.attr('is')) ? eval($out.attr('is')) : val;
+ val = ($out.attr('is')) ? eval($out.attr('is')) : val;
- $out.parent().find('i[group=' + $out.attr('group') + ']:not(.edit)').each(function () {
- this.innerHTML = (this.getAttribute('to')) ? eval(this.getAttribute('to')) : val;
- });
- }).bind('blur change', function () {
- var $in = $(this),
- $out = $in.parent().removeClass('edit'),
- val = $in.val();
+ $out.parent().find('i[group=' + $out.attr('group') + ']:not(.edit)').each(function () {
+ this.innerHTML = (this.getAttribute('to')) ? eval(this.getAttribute('to')) : val;
+ });
+ }).bind('blur change', function () {
+ var $in = $(this),
+ $out = $in.parent().removeClass('edit'),
+ val = $in.val();
- val = ($out.attr('is')) ? eval($out.attr('is')) : val;
+ val = ($out.attr('is')) ? eval($out.attr('is')) : val;
- val = ($out.attr('to')) ? eval($out.attr('to')) : val;
+ val = ($out.attr('to')) ? eval($out.attr('to')) : val;
- $out.html(val);
+ $out.html(val);
- $in.remove();
- });
- });
+ $in.remove();
+ });
+ });
});
- </script>
+
+ </script>
</head>
<body>
-
-<pre class="box_round">
-<input type="checkbox"/>
-<div id="box_round_copypaste" style="position:relative"><div id="box_round_copypaste_button">Copy to Clipboard</div></div>
-<span class="code">
-<u>.box_round</u> {
- <span><b>-moz-border-radius</b>: <i group="1">5px</i>;</span>
- <span><b>-webkit-border-radius</b>: <i group="1">5px</i>;</span>
- <span><b>border-radius</b>: <i group="1">5px</i>;</span>
-}
-</span>
-</pre>
-<pre class="box_shadow">
-<input type="checkbox"/>
-<div id="box_shadow_copypaste" style="position:relative"><div id="box_shadow_copypaste_button">Copy to Clipboard</div></div>
-<span class="code">
-<u>.box_shadow</u> {
- <span><b>-moz-box-shadow</b>: <i group="1">2px</i> <i group="2">2px</i> <i group="3">1px</i> <i group="4" is="cssfn.shortHex(val)">#000</i>;</span>
- <span><b>-webkit-box-shadow</b>: <i group="1">2px</i> <i group="2">2px</i> <i group="3">1px</i> <i group="4" is="cssfn.shortHex(val)">#000</i>;</span>
- <span><b>box-shadow</b>: <i group="1">2px</i> <i group="2">2px</i> <i group="3">1px</i> <i group="4" is="cssfn.shortHex(val)">#000</i>;</span>
- <span><b>filter</b>: progid:DXImageTransform.Microsoft.dropshadow(OffX=<i group="1">2px</i>, OffY=<i group="2">2px</i>, Color='<i group="4" to="cssfn.longHex(val)" is="cssfn.shortHex(val)">#000000</i>');</span>
- <span><b>-ms-filter</b>: "progid:DXImageTransform.Microsoft.dropshadow(OffX=<i group="1">2px</i>, OffY=<i group="2">2px</i>, Color='<i group="4" to="cssfn.longHex(val)" is="cssfn.shortHex(val)">#000000</i>')";</span>
-}
-</span>
-</pre>
+<pre><u>.box_round</u> {
+ <b>-moz-border-radius</b>: <i group="0">5px</i>;
+ <b>-webkit-border-radius</b>: <i group="0">5px</i>;
+ <b>border-radius</b>: <i group="0">5px</i>;
+}</pre>
-<pre class="box_gradient">
-<input type="checkbox"/>
-<div id="box_gradient_copypaste" style="position:relative"><div id="box_gradient_copypaste_button">Copy to Clipboard</div></div>
-<span class="code">
-<u>.box_gradient</u> {
- <span><b>background-image</b>: -moz-linear-gradient(top, <i group="1" is="cssfn.shortHex(val)">#FFF</i>, <i group="2" is="cssfn.shortHex(val)">#000</i>);</span>
- <span><b>background-image</b>: -webkit-gradient(linear,left bottom,left top,color-stop(0, rgb(255,255,255)),color-stop(1, rgb(0,0,0)));</span>
- <span><b>filter</b>: progid:DXImageTransform.Microsoft.gradient(startColorstr='<i group="1" to="cssfn.longHex(val)" is="cssfn.shortHex(val)">#FFFFFF</i>', endColorstr='<i group="2" to="cssfn.longHex(val)" is="cssfn.shortHex(val)">#000000</i>');</span>
- <span><b>-ms-filter</b>: "progid:DXImageTransform.Microsoft.gradient(startColorstr='<i group="1" to="cssfn.longHex(val)" is="cssfn.shortHex(val)">#FFFFFF</i>', endColorstr='<i group="2" to="cssfn.longHex(val)" is="cssfn.shortHex(val)">#000000</i>')";</span>
-}
-</span>
-</pre>
+<pre><u>.box_shadow</u> {
+ <b>-moz-box-shadow</b>: <i group="0">2px</i> <i group="1">2px</i> <i group="2">1px</i> <i group="3" is="cssfn.shortHex(val)">#000</i>;
+ <b>-webkit-box-shadow</b>: <i group="0">2px</i> <i group="1">2px</i> <i group="2">1px</i> <i group="3" is="cssfn.shortHex(val)">#000</i>;
+ <b>box-shadow</b>: <i group="0">2px</i> <i group="1">2px</i> <i group="2">1px</i> <i group="3" is="cssfn.shortHex(val)">#000</i>;
+ <b>filter</b>: progid:DXImageTransform.Microsoft.dropshadow(OffX=<i group="0">2px</i>, OffY=<i group="1">2px</i>, Color='<i group="3" to="cssfn.longHex(val)" is="cssfn.shortHex(val)">#000000</i>');
+ <b>-ms-filter</b>: "progid:DXImageTransform.Microsoft.dropshadow(OffX=<i group="0">2px</i>, OffY=<i group="1">2px</i>, Color='<i group="3" to="cssfn.longHex(val)" is="cssfn.shortHex(val)">#000000</i>')";
+}</pre>
-<pre class="box_rgba">
-<input type="checkbox"/>
-<div id="box_rgba_copypaste" style="position:relative"><div id="box_rgba_copypaste_button">Copy to Clipboard</div></div>
-<span class="code">
-<u>.box_rgba</u> {
- <span><b>background-color</b>: transparent;</span>
- <span><b>background-color</b>: <i group="1" is="cssfn.rgbaToHexa(val)" to="cssfn.hexaToRgba(val)">rgba(255, 0, 255, 0.5)</i>;</span>
- <span><b>filter</b>: progid:DXImageTransform.Microsoft.gradient(startColorstr='<i group="1">#FF00FF</i>',endColorstr='<i group="1">#FF00FF</i>');</span>
- <span><b>-ms-filter</b>: "progid:DXImageTransform.Microsoft.gradient(startColorstr='<i group="1">#FF00FF</i>',endColorstr='<i group="1">#FF00FF</i>')";</span>
-}
-</span>
-</pre>
+<pre><u>.box_gradient</u> {
+ <b>background-image</b>: -moz-linear-gradient(top, <i group="0" is="cssfn.shortHex(val)">#FFF</i>, <i group="1" is="cssfn.shortHex(val)">#000</i>);
+ <b>background-image</b>: -webkit-gradient(linear, left top, left bottom, from(<i group="0" is="cssfn.shortHex(val)">#FFF</i>) to(<i group="1" is="cssfn.shortHex(val)">#000</i>);
+ <b>filter</b>: progid:DXImageTransform.Microsoft.gradient(startColorstr='<i group="0" to="cssfn.longHex(val)" is="cssfn.shortHex(val)">#FFFFFF</i>', endColorstr='<i group="1" to="cssfn.longHex(val)" is="cssfn.shortHex(val)">#000000</i>');
+ <b>-ms-filter</b>: "progid:DXImageTransform.Microsoft.gradient(startColorstr='<i group="0" to="cssfn.longHex(val)" is="cssfn.shortHex(val)">#FFFFFF</i>', endColorstr='<i group="1" to="cssfn.longHex(val)" is="cssfn.shortHex(val)">#000000</i>')";
+}</pre>
+
+<pre><u>.box_rgba</u> {
+ <b>background-color</b>: transparent;
+ <b>background-color</b>: <i group="0" is="cssfn.rgbaToHexa(val)" to="cssfn.hexaToRgba(val)">rgba(255, 0, 255, 128)</i>;
+ <b>filter</b>: progid:DXImageTransform.Microsoft.gradient(startColorstr='<i group="0">#FF00FF80</i>',endColorstr='<i group="0">#FF00FF80</i>');
+ <b>-ms-filter</b>: "progid:DXImageTransform.Microsoft.gradient(startColorstr='<i group="0">#FF00FF80</i>',endColorstr='<i group="0">#FF00FF80</i>')";
+}</pre>
+
+<pre><u>.box_rotate</u> {
+ -moz-transform: rotate(<i group="0">90</i>deg);
+ -o-transform: rotate(<i group="0">90</i>deg);
+ -webkit-transform: rotate(<i group="0">90</i>deg);
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=<i group="0" is="cssfn.basicImageToDeg(val)" to="cssfn.degToBasicImage(val)">1</i>);
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=<i group="0" is="cssfn.basicImageToDeg(val)" to="cssfn.degToBasicImage(val)">1</i>)";
+}</pre>
-<pre class="box_rotate">
-<input type="checkbox"/>
-<div id="box_rotate_copypaste" style="position:relative"><div id="box_rotate_copypaste_button">Copy to Clipboard</div></div>
-<span class="code">
-<u>.box_rotate</u> {
- <span><b>transform</b>: rotate(<i group="1">90</i>deg);</span>
- <span><b>-moz-transform</b>: rotate(<i group="1">90</i>deg);</span>
- <span><b>-o-transform</b>: rotate(<i group="1">90</i>deg);</span>
- <span><b>-webkit-transform</b>: rotate(<i group="1">90</i>deg);</span>
- <span><b>filter</b>: progid:DXImageTransform.Microsoft.BasicImage(rotation=<i group="1" is="cssfn.basicImageToDeg(val)" to="cssfn.degToBasicImage(val)">1</i>);</span>
- <span><b>-ms-filter</b>: "progid:DXImageTransform.Microsoft.BasicImage(rotation=<i group="1" is="cssfn.basicImageToDeg(val)" to="cssfn.degToBasicImage(val)">1</i>)";</span>
-}
-</span>
-</pre>
-
-<div id="previewContainer">
- <div id="previewButton">
- <div id="previewButtonText">Preview</div>
- </div>
- <div id="preview">
- <div id="previewBox">
- </div>
- Check a box, any box!
- </div>
-</div>
-
-<div id="codeContainer">
- <div id="codeButton">
- <div id="codeButtonText">Code</div>
- </div>
- <pre id="code">
-
- </pre>
-</div>
-
-<style type="text/css" media="screen">
- @font-face {font-family: 'AnonymousPro';src: url('Anonymous_Pro.eot'); src: local('Anonymous Pro Regular'), local('AnonymousPro'), url('Anonymous_Pro.woff') format('woff'), url(data:font/truetype;charset=utf-8;base64,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) format('truetype');}
-</style>
</body>
-</html>
+</html>
+-->
View
303 javascript/javascript.js
@@ -0,0 +1,303 @@
+cssMath = {
+ /* Number rounded by Length */
+ round: function (n, l) {
+ l = Math.pow(10, l);
+
+ return Math.round(n * l) / l;
+ },
+ /* X and Y coordinates to Rotation and Strength */
+ xy2rs: function (x, y, p) {
+ return {
+ r: this.round(Math.atan2(x, y * -1) * 180 / Math.PI, 3),
+ s: this.round(Math.sqrt((x * x) + (y * y)), 3)
+ };
+ },
+ /* Rotation and Strength to X and Y coordinates */
+ rs2xy: function (r, s) {
+ return {
+ x: this.round(Math.sin(r * Math.PI / 180) * s, 3),
+ y: this.round(Math.cos(r * Math.PI / 180) * s * -1, 3)
+ };
+ },
+ /* Rotation to Degree */
+ r2d: function (r) {
+ return r * 90;
+ },
+ /* Degree to Rotation */
+ d2r: function (d) {
+ return d / 90;
+ },
+ /* Hexadecimal to Decimal */
+ h2d: function (h) {
+ return '' + parseInt(h, 16);
+ },
+ /* Decimal to Hexadecimal */
+ d2h: function (d) {
+ return ('0' + parseInt(d, 10).toString(16)).substr(-2).toUpperCase();
+ },
+ /* Decimal Array to Hexadecimal Array */
+ da2ha: function (da) {
+ var a,
+ ha = [];
+ while ((a = da.shift())) {
+ ha.push(this.d2h(a));
+ }
+ return ha;
+ },
+ /* Hexadecimal Array to Decimal Array */
+ ha2da: function (ha) {
+ var a,
+ da = [];
+
+ while ((a = ha.shift())) {
+ da.push(this.h2d(a));
+ }
+
+ return da;
+ },
+ /* Alpha + Decimal Array to Alpha + Hexadecimal Array */
+ ada2aha: function (da) {
+ var a,
+ ha = [];
+
+ while ((a = da.shift())) {
+ ha.push(this.d2h(a));
+ }
+
+ ha.splice(0, 0, ha.pop());
+
+ return ha;
+ },
+ /* Alpha + Hexadecimal Array to Alpha + Decimal Array */
+ aha2ada: function (ha) {
+ var a,
+ da = [];
+
+ while ((a = ha.shift())) {
+ da.push(this.h2d(a));
+ }
+
+ da.splice(0, 0, da.pop());
+
+ return da;
+ },
+ /* Hexadecimals to Short Hexadecimals */
+ h2sh: function (h) {
+ return h.replace(/^#?([A-z0-9])\1(.)\2(.)\3$/, '#$1$2$3');
+ },
+ /* Hexadecimals to Long Hexadecimals */
+ h2lh: function (h) {
+ return h.replace(/^#?([A-z0-9])(.)(.)$/, '#$1$1$2$2$3$3');
+ },
+ /* Color channels to Hexadecimals */
+ c2h: function (c) {
+ return '#' + this.da2ha(c.replace(/^rgb\s?\(\s?(.*?)\s?\)$/, '$1').split(/,\s?/)).join('');
+ },
+ /* Hexadecimals to Color channels */
+ h2c: function (h) {
+ return 'rgb(' + this.ha2da(h.replace(/^#?(.{1,2})(.{1,2})(.{1,2})$/, '$1,$2,$3').split(',')).join(', ') + ')';
+ },
+ /* Alpha + Color channels to Alpha + Hexadecimals */
+ ac2ah: function (c) {
+ return '#' + this.ada2aha(c.replace(/^rgba\s?\(\s?(.*?)\s?\)$/, '$1').split(/,\s?/)).join('');
+ },
+ /* Alpha + Hexadecimals to Alpha + Color channels */
+ ah2ac: function (h) {
+ return 'rgba(' + this.aha2ada(h.replace(/^#?(.{1,2})(.{1,2})(.{1,2})(.{1,2})$/, '$3,$4,$1,$2').split(',')).join(', ') + ')';
+ },
+ eval: {
+ /* String to Hexadecimals */
+ s2Hex: function (value, allValues) {
+ if (value.indexOf('rgb') > -1) {
+ return '#' + cssMath.da2ha(c.replace(/^rgb\s?\(\s?(.*?)\s?\)$/, '$1').split(/,\s?/)).join('');
+ }
+ else {
+ return cssMath.h2lh(value);
+ }
+ },
+ /* String to Alpha + Hexadecimals */
+ s2aHex: function (value, allValues) {
+ if (value.indexOf('rgba') > -1) {
+ return cssMath.ac2ah(value);
+ }
+ else {
+ return value;
+ }
+ },
+ /* Hexadecimals to Short Hexadecimals */
+ sHex: function (value, allValues) {
+ return cssMath.h2sh(value);
+ },
+ /* Hexadecimals to Long Hexadecimals */
+ lHex: function (value, allValues) {
+ return cssMath.h2lh(value);
+ },
+ /* Hexadecimals to Color channels */
+ ch: function (value, allValues) {
+ return cssMath.h2c(value);
+ },
+ /* Alpha + Hexadecimals to Alpha + Color channels */
+ aCh: function (value, allValues) {
+ return cssMath.ah2ac(value);
+ },
+ s2deg: function (value, allValues) {
+ if (value > 4) {
+ return value;
+ }
+ else {
+ return cssMath.round(cssMath.r2d(value), 3);
+ }
+ },
+ rot: function (value, allValues) {
+ return cssMath.round(cssMath.d2r(value), 3);
+ }
+ }
+};
+
+generator = {
+ styleAllRules: function (ruleList) {
+ var item = -1,
+ innerHTML;
+
+ while (++item < ruleList.length) {
+ innerHTML = ruleList[item].innerHTML;
+
+ innerHTML = innerHTML.replace(/(\/\*((\n|.)+)\*\/)/, '<span class="comment">$1</span>');
+ innerHTML = innerHTML.replace(/{((\n|.)+)}/, '{<span class="declaration-block">$1</span>}');
+ innerHTML = innerHTML.replace(/(.*?) {/, '<span class="selector">$1</span> <span class="bracket">{</span>');
+ innerHTML = innerHTML.replace(/(.*?):\s?(.*?);/mg, '<span class="declaration"><span class="property">$1</span>: <span class="value">$2</span>;</span>');
+ innerHTML = innerHTML.replace(/}/m, '<span class="bracket">}</span>');
+
+ ruleList[item].innerHTML = innerHTML;
+ }
+ },
+ makeEditable: function (editList) {
+ var item = -1;
+
+ while (++item < editList.length) {
+ editList[item].innerHTML = '<span>' + editList[item].innerHTML + '</span><input type="text" value="' + editList[item].innerHTML + '" />';
+ }
+ },
+ collectAllValues: function (rule) {
+ var item = -1,
+ editables = rule.getElementsByTagName('b'),
+ values = [];
+
+ while (++item < editables.length) {
+ values.push(
+ {
+ styleProperty: editables[item].parentNode.parentNode.getElementsByTagName('span')[0].innerHTML.replace(/^\s+|\s+$/g, ''),
+ styleValue: editables[item].parentNode.parentNode.getElementsByTagName('span')[1][(document.all) ? 'innerText' : 'textContent'].replace(/^\s+|\s+$/g, ''),
+ node: editables[item].getElementsByTagName('span')[0],
+ group: editables[item].getAttribute('g'),
+ output: editables[item].getAttribute('o'),
+ value: editables[item].getElementsByTagName('span')[0].innerHTML
+ }
+ );
+ }
+
+ return values;
+ }
+};
+
+$(document).ready(
+ function () {
+ generator.styleAllRules(document.getElementsByTagName('pre'));
+
+ generator.makeEditable(document.getElementsByTagName('b'));
+
+ $(document.getElementsByTagName('pre')).each(
+ function () {
+ $(this).find('b').bind(
+ 'click',
+ function () {
+ $(this).addClass('edit').find('input').val(this.getElementsByTagName('span')[0].innerHTML).focus();
+ }
+ );
+
+ $(this).find('input').bind(
+ 'keydown keypress keyup',
+ function () {
+ var item = -1;
+ allValues = generator.collectAllValues(this.parentNode.parentNode.parentNode.parentNode),
+ group = this.parentNode.getAttribute('g'),
+ input = this.parentNode.getAttribute('i'),
+ value = this.value,
+ itemValue = '';
+
+ if (input) {
+ value = eval('cssMath.eval.' + input + '(value, allValues);');
+ }
+
+ while (++item < allValues.length) {
+ if (allValues[item].group == group) {
+ if (allValues[item].output) {
+ itemValue = eval('cssMath.eval.' + allValues[item].output + '(value, allValues);');
+ } else {
+ itemValue = value;
+ }
+
+ allValues[item].node.innerHTML = itemValue;
+
+ $('#sandbox').css(allValues[item].styleProperty, allValues[item].styleValue);
+ }
+ }
+
+ this.parentNode.getElementsByTagName('span')[0].innerHTML = this.value;
+ }
+ ).bind(
+ 'blur change',
+ function () {
+ $(this).parent().removeClass('edit');
+
+ var item = -1;
+ allValues = generator.collectAllValues(this.parentNode.parentNode.parentNode.parentNode),
+ group = this.parentNode.getAttribute('g'),
+ input = this.parentNode.getAttribute('i'),
+ value = this.value,
+ itemValue = '';
+
+ if (input) {
+ value = eval('cssMath.eval.' + input + '(value, allValues);');
+ }
+
+ while (++item < allValues.length) {
+ if (allValues[item].group == group) {
+ if (allValues[item].output) {
+ itemValue = eval('cssMath.eval.' + allValues[item].output + '(value, allValues);');
+ } else {
+ itemValue = value;
+ }
+
+ allValues[item].node.innerHTML = itemValue;
+
+ $('#sandbox').css(allValues[item].styleProperty, allValues[item].styleValue);
+ }
+ }
+ }
+ );
+
+ var item = -1,
+ allValues = generator.collectAllValues(this);
+
+ while (++item < allValues.length) {
+ $('#sandbox').css(allValues[item].styleProperty, allValues[item].styleValue);
+ }
+ }
+ );
+ }
+);
+
+css = {
+ 'text-shadow': '2px 2px 2px #000;',
+ 'filter': 'Shadow(Color=#666666, Direction=135, Strength=5);'
+};
+
+
+/*
+rule
+ selector
+ declaration
+ property
+ value
+*/
View
6,078 javascript/jquery-1.4.1.js
6,078 additions, 0 deletions not shown because the diff is too large. Please use a local Git client to view these changes.

0 comments on commit f92a6b8

Please sign in to comment.