aboutsummaryrefslogtreecommitdiff
path: root/js/controllers/styles-controller.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/controllers/styles-controller.js')
-rwxr-xr-x[-rw-r--r--]js/controllers/styles-controller.js87
1 files changed, 83 insertions, 4 deletions
diff --git a/js/controllers/styles-controller.js b/js/controllers/styles-controller.js
index 011caec5..885d710f 100644..100755
--- a/js/controllers/styles-controller.js
+++ b/js/controllers/styles-controller.js
@@ -128,7 +128,7 @@ var stylesController = exports.StylesController = Montage.create(Component, {
128 } else { 128 } else {
129 this._defaultStylesheet = sheets[lastIndex]; 129 this._defaultStylesheet = sheets[lastIndex];
130 } 130 }
131 131
132 } 132 }
133 } 133 }
134 }, 134 },
@@ -179,10 +179,14 @@ var stylesController = exports.StylesController = Montage.create(Component, {
179 this.styleSheetModified(stylesheet); 179 this.styleSheetModified(stylesheet);
180 180
181 rule = stylesheet.rules[index]; 181 rule = stylesheet.rules[index];
182 182
183 ///// attach specificity to rule object 183 ///// attach specificity to rule object
184 ///// if rule is css keyframes, return rule and don't attach specificity
185 if (rule instanceof WebKitCSSKeyframesRule) {
186 return rule;
187 }
184 rule[this.CONST.SPECIFICITY_KEY] = this.getSpecificity(rule.selectorText); 188 rule[this.CONST.SPECIFICITY_KEY] = this.getSpecificity(rule.selectorText);
185 189
186 ///// return the rule we just inserted 190 ///// return the rule we just inserted
187 return rule; 191 return rule;
188 } 192 }
@@ -567,6 +571,10 @@ var stylesController = exports.StylesController = Montage.create(Component, {
567 rules = [], 571 rules = [],
568 win = element.ownerDocument.defaultView, 572 win = element.ownerDocument.defaultView,
569 self = this; 573 self = this;
574
575 if(!win) {
576 return null;
577 }
570 578
571 if(!omitPseudos) { 579 if(!omitPseudos) {
572 pseudos.concat(['link', 'visited', 'active', 'hover', 'focus', 'first-letter', 580 pseudos.concat(['link', 'visited', 'active', 'hover', 'focus', 'first-letter',
@@ -670,8 +678,9 @@ var stylesController = exports.StylesController = Montage.create(Component, {
670 } 678 }
671 679
672 var matchingElements, i; 680 var matchingElements, i;
681
673 for(i = 0; i < specArr.length; i++) { 682 for(i = 0; i < specArr.length; i++) {
674 matchingElements = win.document.querySelectorAll(specArr[i].selector); 683 matchingElements = element.ownerDocument.querySelectorAll(specArr[i].selector);
675 if(nj.toArray(matchingElements).indexOf(element) !== -1) { 684 if(nj.toArray(matchingElements).indexOf(element) !== -1) {
676 return specArr[i]; 685 return specArr[i];
677 } 686 }
@@ -840,6 +849,61 @@ var stylesController = exports.StylesController = Montage.create(Component, {
840 } 849 }
841 }, 850 },
842 851
852 ///// Get Animation Rule With Name
853 ///// Returns the CSSKeyframesRule with given name
854
855 getAnimationRuleWithName : {
856 value: function(name, document) {
857 var doc = document || this._activeDocument._document,
858 animRules = this.getDocumentAnimationRules(doc),
859 rule, i;
860
861 for(i = 0; i < animRules.length; i++) {
862 rule = animRules[i];
863 if(rule.name === name) {
864 return rule;
865 }
866 }
867
868 return;
869 }
870 },
871
872 ///// Get Document Animation Rules
873 ///// Returns all CSSKeyframesRules in active document, or in
874 ///// optionally passed-in document
875 ///// If none are found, returns an empty array
876
877 getDocumentAnimationRules : {
878 value: function(document) {
879 var sheets = (document) ? document.styleSheets : this._activeDocument._document.styleSheets,
880 rules = [];
881
882 nj.toArray(sheets).forEach(function(sheet) {
883 rules = rules.concat(this.getStyleSheetAnimationRules(sheet));
884 }, this);
885
886 return rules;
887 }
888 },
889
890 ///// Get Style Sheet Animation Rules
891 ///// Returns all CSSKeyframesRules from the given stylesheet
892 ///// If none are found, returns an empty array
893
894 getStyleSheetAnimationRules : {
895 value: function(sheet) {
896 var rules = [];
897
898 if(sheet.rules) {
899 rules = rules.concat(nj.toArray(sheet.rules).filter(function(rule) {
900 return rule instanceof WebKitCSSKeyframesRule;
901 }));
902 }
903
904 return rules;
905 }
906 },
843 907
844 ///// Delete style 908 ///// Delete style
845 ///// Removes the property from the style declaration/rule 909 ///// Removes the property from the style declaration/rule
@@ -1045,6 +1109,21 @@ var stylesController = exports.StylesController = Montage.create(Component, {
1045 } 1109 }
1046 }, 1110 },
1047 1111
1112 ///// Get Element Animation Rule
1113 ///// Returns the CSSKeyframesRule applied to an element
1114
1115 getElementAnimationRule : {
1116 value: function(element) {
1117 var animationName = this.getElementStyle(element, '-webkit-animation-name');
1118
1119 if(!animationName) {
1120 return null;
1121 }
1122
1123 return this.getAnimationRuleWithName(animationName);
1124 }
1125 },
1126
1048 ///// Create Rule From Inline Style 1127 ///// Create Rule From Inline Style
1049 ///// Creates a rule for an inline style with a specified, or partially random selector. 1128 ///// Creates a rule for an inline style with a specified, or partially random selector.
1050 1129