<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>src/style.js - Mokit API</title>
    <link rel="stylesheet" href="http://yui.yahooapis.com/3.9.1/build/cssgrids/cssgrids-min.css">
    <link rel="stylesheet" href="../assets/vendor/prettify/prettify-min.css">
    <link rel="stylesheet" href="../assets/css/main.css" id="site_styles">
    <link rel="shortcut icon" type="image/png" href="../assets/favicon.png">
    <script src="http://yui.yahooapis.com/combo?3.9.1/build/yui/yui-min.js"></script>
</head>
<body class="yui3-skin-sam">

<div id="doc">
    <div id="hd" class="yui3-g header">
        <div class="yui3-u-3-4">
            
                <h1><img src="../logo.png" title="Mokit API"></h1>
            
        </div>
        <div class="yui3-u-1-4 version">
            <em>API Docs for: v2.0 Beta 34</em>
        </div>
    </div>
    <div id="bd" class="yui3-g">

        <div class="yui3-u-1-4">
            <div id="docs-sidebar" class="sidebar apidocs">
                <div id="api-list">
    <h2 class="off-left">APIs</h2>
    <div id="api-tabview" class="tabview">
        <ul class="tabs">
            <li><a href="#api-classes">Classes</a></li>
            <li><a href="#api-modules">Modules</a></li>
        </ul>

        <div id="api-tabview-filter">
            <input type="search" id="api-filter" placeholder="Type to filter APIs">
        </div>

        <div id="api-tabview-panel">
            <ul id="api-classes" class="apis classes">
            
                <li><a href="../classes/Ajax.html">Ajax</a></li>
            
                <li><a href="../classes/App.html">App</a></li>
            
                <li><a href="../classes/Base64.html">Base64</a></li>
            
                <li><a href="../classes/Class.html">Class</a></li>
            
                <li><a href="../classes/Console.html">Console</a></li>
            
                <li><a href="../classes/Context.html">Context</a></li>
            
                <li><a href="../classes/Controller.html">Controller</a></li>
            
                <li><a href="../classes/Event.html">Event</a></li>
            
                <li><a href="../classes/Grid.html">Grid</a></li>
            
                <li><a href="../classes/Json.html">Json</a></li>
            
                <li><a href="../classes/Language.html">Language</a></li>
            
                <li><a href="../classes/Mask.html">Mask</a></li>
            
                <li><a href="../classes/Model.html">Model</a></li>
            
                <li><a href="../classes/Move.html">Move</a></li>
            
                <li><a href="../classes/Navigation.html">Navigation</a></li>
            
                <li><a href="../classes/Route.html">Route</a></li>
            
                <li><a href="../classes/Sortable.html">Sortable</a></li>
            
                <li><a href="../classes/Store.html">Store</a></li>
            
                <li><a href="../classes/Style.html">Style</a></li>
            
                <li><a href="../classes/Task.html">Task</a></li>
            
                <li><a href="../classes/Utils.html">Utils</a></li>
            
                <li><a href="../classes/View.html">View</a></li>
            
            </ul>

            <ul id="api-modules" class="apis modules">
            
                <li><a href="../modules/mokit.html">mokit</a></li>
            
            </ul>
        </div>
    </div>
</div>

            </div>
        </div>
        <div class="yui3-u-3-4">
                <div id="api-options">
        Show:
        <label for="api-show-inherited">
            <input type="checkbox" id="api-show-inherited" checked>
            Inherited
        </label>

        <label for="api-show-protected">
            <input type="checkbox" id="api-show-protected">
            Protected
        </label>

        <label for="api-show-private">
            <input type="checkbox" id="api-show-private">
            Private
        </label>
        <label for="api-show-deprecated">
            <input type="checkbox" id="api-show-deprecated">
            Deprecated
        </label>

    </div>


            <div class="apidocs">
                <div id="docs-main">
                    <div class="content">
                        <h1 class="file-heading">File: src/style.js</h1>

<div class="file">
    <pre class="code prettyprint linenums">
/**
 * 风格主题管理模块
 * @module mokit
 * @class Style
 */
define(function(require, exports, module) {
    &quot;require:nomunge,exports:nomunge,module:nomunge&quot;;
    &quot;use strict&quot;;

    var $ = require(&#x27;./jquery&#x27;),
        utils = require(&#x27;./utils&#x27;),
        store = require(&#x27;./store&#x27;),
        eventMgr = require(&#x27;./event&#x27;);

    var styleTable = store.dataCache[&quot;$style&quot;] = {};

    exports.styleChange = eventMgr.create(exports, &#x27;styleChange&#x27;);

    exports.storeKey = &quot;current-name&quot;;
    var currentName = null;
    utils.defineProperty(exports, &#x27;currentName&#x27;, {
        get: function() {
            currentName = currentName || store.local.get(&#x27;style:&#x27; + exports.storeKey);
            return currentName;
        },
        set: function(name) {
            currentName = name;
            return currentName;
            //return store.local.set(&#x27;style:&#x27; + exports.storeKey, name);
        }
    }, true);

    utils.defineProperty(exports, &#x27;defaultName&#x27;, {
        get: function() {
            return Object.getOwnPropertyNames(styleTable)[0];
        }
    }, true);

    /**
     * 添加风格
     * @method addStyle
     * @param {Object} styles 风格配置表
     * @param {Module} srcModule 当前模块
     * @static
     */
    exports.addStyle = function(styles, srcModule) {
        utils.each(styles, function(name) {
            styleTable[name] = (srcModule &amp;&amp; srcModule.resovleUri) ? srcModule.resovleUri(this) : this;
        });
    };

    /**
     * 设置风格
     * @method setStyle
     * @param {String} name 设置当前风格
     * @static
     */
    exports.setStyle = function(name, callback) {
        if (!utils.isString(name)) return callback();
        if (styleTable[name]) {
            module.unload(styleTable[exports.currentName()]);
            require(styleTable[name], function(rs) {
                exports.currentName(name);
                exports.styleChange.trigger(name, rs);
                utils.async(function() {
                    if (callback) callback(name, rs);
                }, 45);
            });
        } else {
            console.error(&#x27;style &quot;&#x27; + name + &#x27;&quot; not found.&#x27;);
        }
    };

    exports.save = function() {
        return store.local.set(&#x27;style:&#x27; + exports.storeKey, currentName);
    };

    exports.clear = function() {
        return store.local.set(&#x27;style:&#x27; + exports.storeKey, &quot;&quot;);
    };
});
    </pre>
</div>

                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="../assets/vendor/prettify/prettify-min.js"></script>
<script>prettyPrint();</script>
<script src="../assets/js/yui-prettify.js"></script>
<script src="../assets/../api.js"></script>
<script src="../assets/js/api-filter.js"></script>
<script src="../assets/js/api-list.js"></script>
<script src="../assets/js/api-search.js"></script>
<script src="../assets/js/apidocs.js"></script>
</body>
</html>