src/cm/media/js/lib/yui/yui_3.10.3/docs/promise/plugin-example.html
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 525 89ef5ed3c48b
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
<!DOCTYPE html>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
<html lang="en">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
<head>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
    <meta charset="utf-8">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
    <title>Example: Creating a Node Plugin that chains transitions</title>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
    <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=PT+Sans:400,700,400italic,700italic">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
    <link rel="stylesheet" href="../../build/cssgrids/cssgrids-min.css">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
    <link rel="stylesheet" href="../assets/css/main.css">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
    <link rel="stylesheet" href="../assets/vendor/prettify/prettify-min.css">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
    <link rel="shortcut icon" type="image/png" href="../assets/favicon.png">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
    <script src="../../build/yui/yui-min.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
</head>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
<body>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
<!--
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
<a href="https://github.com/yui/yui3"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub"></a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
-->
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
<div id="doc">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
    <div id="hd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
        <h1><img src="http://yuilibrary.com/img/yui-logo.png"></h1>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
        <a href="#toc" class="jump">Jump to Table of Contents</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
            <h1>Example: Creating a Node Plugin that chains transitions</h1>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
    <div class="yui3-g">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
        <div class="yui3-u-3-4">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
            <div id="main">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
                <div class="content"><style scoped>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
    #square {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
        width: 100px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
        height: 100px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
        background: gray;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
        position: relative;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
        margin: 20px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
</style>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
<div class="intro">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
    <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
        In order to run transitions sequentially, you would normally have to use the callback provided by <code>node.transition()</code>. This example shows how to create your own Node plugin based on promises that lets you chain CSS transitions.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
    </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
<div class="example yui3-skin-sam">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
    <button id="without-plugin">Without Plugin</button>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
<button id="with-plugin">With Plugin</button>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
<div id="square"></div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
    <script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
YUI().use('promise', 'transition', 'node-pluginhost', function (Y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
// NodePromise will represent a YUI Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
function NodePromise() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
    NodePromise.superclass.constructor.apply(this, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
Y.extend(NodePromise, Y.Promise);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
// This method takes the same "config" parameter as Node's transition method
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
// but returns a NodePromise instead
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
NodePromise.prototype.transition = function (config) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
    // We call this.then to ensure the promise is fulfilled.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
    // Since we will be creating a chain of transitions this means we will be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
    // waiting for the previous transition to end
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
    return this.then(function (node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
        // As noted in the user guide, returning a promise inside the then()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
        // callback causes the promise returned by then() to be synced with this
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
        // new promise. This is a way to control when the returned promise is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
        // fulfilled
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
        return new Y.Promise(function (fulfill, reject) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
            node.transition(config, function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
                // The transition is done, signal the promise that all is ready
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
                // by fulfilling it with the same node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
                fulfill(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
function PromisePlugin(config) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
    // Create a private NodePromise instance that points to the plugin host
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
    this._promise = new NodePromise(function (fulfill) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
        // Since this is a Node plugin, config.host will be an instance of Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
        fulfill(config.host);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
// Set up the plugin's namespace
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
PromisePlugin.NS = 'promise';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
PromisePlugin.prototype.transition = function (config) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
    // Simply point to the private promise's transition method
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
    return this._promise.transition(config);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
var square = Y.one('#square');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
square.plug(PromisePlugin);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
function resetStyles() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
    square.setStyles({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
        width: '100px',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
        height: '100px',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
        left: '0'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
Y.one('#without-plugin').on('click', function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
    resetStyles();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
    square
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
        .transition({width: '300px'})
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
        .transition({height: '300px'})
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
        .transition({left: '200px'});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
Y.one('#with-plugin').on('click', function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
    resetStyles();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
    square.promise
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
        .transition({width: '300px'})
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
        .transition({height: '300px'})
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
        .transition({left: '200px'});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
</script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
<h2 id="using-promises-to-chain-css-transitions">Using Promises to Chain CSS Transitions</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
<h3 id="the-plan">The plan</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
<p>Plugins are a way to add functionality to Node without modifying its existing methods. They also are usually subclasses of Plugin.Base that contain various methods to interact with in a different way with a node. In our case we will skip the use of Plugin.Base to focus on returning promises from a plugin method.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
<p>The plan is to create a Promise subclass that represents a Node and store one of these promises in the plugin instance. Then the plugin's <code>transition</code> method will return a new promise based on the one already stored.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
<h3 id="creating-a-promise-subclass">Creating a Promise Subclass</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
<p>Promises represent a value. Since we want to chain transitions on a Node we need to create a Promise sublcass that represents a Node. Promises can be extended the same way as any other YUI class by using <a href="http://yuilibrary.com/yui/docs/api//classes/YUI.html#method_extend"><code>Y.extend</code></a>.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
<pre class="code prettyprint">&#x2F;&#x2F; NodePromise will represent a YUI Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
function NodePromise() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
    NodePromise.superclass.constructor.apply(this, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
Y.extend(NodePromise, Y.Promise);</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
<p>The next step is to add the <code>transition()</code> method to this promise and have it return a promise that is fulfilled when the transition is completed.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
<pre class="code prettyprint">&#x2F;&#x2F; This method takes the same &quot;config&quot; parameter as Node&#x27;s transition method
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
&#x2F;&#x2F; but returns a NodePromise instead
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
NodePromise.prototype.transition = function (config) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
    &#x2F;&#x2F; We call this.then to ensure the promise is fulfilled.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
    &#x2F;&#x2F; Since we will be creating a chain of transitions this means we will be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
    &#x2F;&#x2F; waiting for the previous transition to end
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
    return this.then(function (node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
        &#x2F;&#x2F; As noted in the user guide, returning a promise inside the then()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
        &#x2F;&#x2F; callback causes the promise returned by then() to be synced with this
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
        &#x2F;&#x2F; new promise. This is a way to control when the returned promise is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
        &#x2F;&#x2F; fulfilled
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
        return new Y.Promise(function (fulfill, reject) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
            node.transition(config, function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
                &#x2F;&#x2F; The transition is done, signal the promise that all is ready
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
                &#x2F;&#x2F; by fulfilling it with the same node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
                fulfill(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
};</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
<h3 id="creating-the-plugin">Creating the Plugin</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
<p>Our plugin is a very simple class that contains a NodePromise. In order for it to let us write chains of transitions like <code>node.promise.transition(config1).transition(config2)</code> we will add a <code>transition</code> method to it that simply points to the NodePromise's same method.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
<pre class="code prettyprint">function PromisePlugin(config) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
    &#x2F;&#x2F; Create a private NodePromise instance that points to the plugin host
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
    this._promise = new NodePromise(function (fulfill) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
        &#x2F;&#x2F; Since this is a Node plugin, config.host will be an instance of Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
        fulfill(config.host);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
&#x2F;&#x2F; Set up the plugin&#x27;s namespace
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
PromisePlugin.NS = &#x27;promise&#x27;;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
PromisePlugin.prototype.transition = function (config) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
    &#x2F;&#x2F; Simply point to the private promise&#x27;s transition method
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
    return this._promise.transition(config);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
};</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
<h3 id="using-the-plugin">Using the Plugin</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
<p>Now that we have the plugin ready, we can easily chain transitions from the plugin instance:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
<pre class="code prettyprint">var square = Y.one(&#x27;#square&#x27;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
square.plug(PromisePlugin);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
&#x2F;&#x2F; run a sequence of transitions
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
square.promise
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
    .transition({width: &#x27;300px&#x27;})
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
    .transition({height: &#x27;300px&#x27;})
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
    .transition({left: &#x27;200px&#x27;});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
<h3 id="fullcode">Full Code Listing</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
<h4 id="html">HTML</h4>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
<pre class="code prettyprint">&lt;button id=&quot;without-plugin&quot;&gt;Without Plugin&lt;&#x2F;button&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
&lt;button id=&quot;with-plugin&quot;&gt;With Plugin&lt;&#x2F;button&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
&lt;div id=&quot;square&quot;&gt;&lt;&#x2F;div&gt;</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
<h4 id="css">CSS</h4>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
<pre class="code prettyprint">&lt;style scoped&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
    #square {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
        width: 100px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
        height: 100px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
        background: gray;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
        position: relative;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
        margin: 20px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
&lt;&#x2F;style&gt;</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
<h4 id="javascript">JavaScript</h4>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
<pre class="code prettyprint">&lt;script&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
YUI().use(&#x27;promise&#x27;, &#x27;transition&#x27;, &#x27;node-pluginhost&#x27;, function (Y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
&#x2F;&#x2F; NodePromise will represent a YUI Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
function NodePromise() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
    NodePromise.superclass.constructor.apply(this, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
Y.extend(NodePromise, Y.Promise);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
&#x2F;&#x2F; This method takes the same &quot;config&quot; parameter as Node&#x27;s transition method
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
&#x2F;&#x2F; but returns a NodePromise instead
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
NodePromise.prototype.transition = function (config) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
    &#x2F;&#x2F; We call this.then to ensure the promise is fulfilled.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
    &#x2F;&#x2F; Since we will be creating a chain of transitions this means we will be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
    &#x2F;&#x2F; waiting for the previous transition to end
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
    return this.then(function (node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
        &#x2F;&#x2F; As noted in the user guide, returning a promise inside the then()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
        &#x2F;&#x2F; callback causes the promise returned by then() to be synced with this
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
        &#x2F;&#x2F; new promise. This is a way to control when the returned promise is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
        &#x2F;&#x2F; fulfilled
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
        return new Y.Promise(function (fulfill, reject) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
            node.transition(config, function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
                &#x2F;&#x2F; The transition is done, signal the promise that all is ready
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
                &#x2F;&#x2F; by fulfilling it with the same node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
                fulfill(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
function PromisePlugin(config) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
    &#x2F;&#x2F; Create a private NodePromise instance that points to the plugin host
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
    this._promise = new NodePromise(function (fulfill) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
        &#x2F;&#x2F; Since this is a Node plugin, config.host will be an instance of Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
        fulfill(config.host);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
&#x2F;&#x2F; Set up the plugin&#x27;s namespace
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
PromisePlugin.NS = &#x27;promise&#x27;;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
PromisePlugin.prototype.transition = function (config) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
    &#x2F;&#x2F; Simply point to the private promise&#x27;s transition method
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
    return this._promise.transition(config);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
var square = Y.one(&#x27;#square&#x27;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
square.plug(PromisePlugin);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
function resetStyles() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
    square.setStyles({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
        width: &#x27;100px&#x27;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
        height: &#x27;100px&#x27;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
        left: &#x27;0&#x27;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
Y.one(&#x27;#without-plugin&#x27;).on(&#x27;click&#x27;, function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
    resetStyles();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
    square
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
        .transition({width: &#x27;300px&#x27;})
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
        .transition({height: &#x27;300px&#x27;})
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
        .transition({left: &#x27;200px&#x27;});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
Y.one(&#x27;#with-plugin&#x27;).on(&#x27;click&#x27;, function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
    resetStyles();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
    square.promise
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
        .transition({width: &#x27;300px&#x27;})
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
        .transition({height: &#x27;300px&#x27;})
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
        .transition({left: &#x27;200px&#x27;});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
&lt;&#x2F;script&gt;</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
            </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
        <div class="yui3-u-1-4">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
            <div class="sidebar">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
                    <div id="toc" class="sidebox">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
                        <div class="hd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
                            <h2 class="no-toc">Table of Contents</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
                        <div class="bd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
                            <ul class="toc">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
<a href="#using-promises-to-chain-css-transitions">Using Promises to Chain CSS Transitions</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
<ul class="toc">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
<a href="#the-plan">The plan</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
<a href="#creating-a-promise-subclass">Creating a Promise Subclass</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
<a href="#creating-the-plugin">Creating the Plugin</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
<a href="#using-the-plugin">Using the Plugin</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
<a href="#fullcode">Full Code Listing</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
<ul class="toc">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
<a href="#html">HTML</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
<a href="#css">CSS</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
<a href="#javascript">JavaScript</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
</ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
</ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
</ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
                    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
                    <div class="sidebox">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
                        <div class="hd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
                            <h2 class="no-toc">Examples</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
                        <div class="bd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
                            <ul class="examples">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
                                        <li data-description="Wrapping async transactions with promises">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
                                            <a href="basic-example.html">Wrapping async transactions with promises</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
                                        <li data-description="Extend Y.Promise to create classes that encapsulate standard transaction logic in descriptive method names">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
                                            <a href="subclass-example.html">Subclassing Y.Promise</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
                                        <li data-description="Extend the Promise class to create your own Node plugin that chains transitions">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
                                            <a href="plugin-example.html">Creating a Node Plugin that chains transitions</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
                            </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
                    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
            </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
<script src="../assets/vendor/prettify/prettify-min.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
<script>prettyPrint();</script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
<script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
YUI.Env.Tests = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
    examples: [],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
    project: '../assets',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
    assets: '../assets/promise',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
    name: 'plugin-example',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
    title: 'Creating a Node Plugin that chains transitions',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
    newWindow: '',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
    auto:  false 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
YUI.Env.Tests.examples.push('basic-example');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
YUI.Env.Tests.examples.push('subclass-example');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
YUI.Env.Tests.examples.push('plugin-example');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
</script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
<script src="../assets/yui/test-runner.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
</body>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
</html>