/* This file contains proprietary software owned by Motorola Mobility, Inc.
No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.
(c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved.
*/ var Montage = require("montage/core/core").Montage, Component = require("montage/ui/component").Component; exports.PresetsController = Montage.create(Component, { hasTemplate : { value: false }, transitionClass : { value : "nj-preset-transition" }, addTransition: { value: function(element) { element.classList.add(this.transitionClass); element.addEventListener("webkitTransitionEnd", this, true); } }, captureWebkitTransitionEnd : { value : function(e) { var el = e.target; el.classList.remove(this.transitionClass); el.removeEventListener("webkitTransitionEnd", this, true); } }, applyPreset : { value: function(presetData, useTransition) { var selection = this.application.ninja.selectedElements; if(!selection || !selection.length || selection.length === 0) { return false; } var stylesController = this.application.ninja.stylesController, selectorBase = presetData.selectorBase, rules = []; selectorBase = stylesController.generateClassName(selectorBase); presetData.rules.forEach(function(rule, i) { ///// Treat keyframed rules differently if(rule.isKeyFrameRule) { this.application.ninja.stylesController.addRule( '@-webkit-keyframes ' + presetData.selectorBase, this.stringifyKeys(rule.keys) ); } else { var suffix = rule.selectorSuffix || ''; rules.push(stylesController.addRule('.'+selectorBase + suffix, rule.styles)); } }, this); selection.forEach(function(element) { var el = element._element; if(useTransition) { this.addTransition(el); } el.classList.add(selectorBase); //// Keep track of elements with presets and don't add duplicates this.setCachedPreset(el, presetData.id, rules); }, this); } }, setCachedPreset : { value: function(el, presetId, rules) { } }, getPresets : { value: function(element) { } }, stringifyKeys : { value: function(keysArray) { var keysString = ''; keysArray.forEach(function(key) { var styles = '', style; for(style in key.styles) { styles += style + ':' + key.styles[style] + '; '; } keysString += key.keyText + ' {' + styles + ' }'; }); return keysString; } } });