~michael.nelson/ubuntu-webcatalog/1267731-import-sca-apps-error

« back to all changes in this revision

Viewing changes to src/webcatalog/static/yui/3.10.3/build/selector-css3/selector-css3-debug.js

  • Committer: Tarmac
  • Author(s): Stephen Stewart
  • Date: 2013-06-26 09:19:32 UTC
  • mfrom: (184.1.4 ubuntu-global-nav)
  • Revision ID: tarmac-20130626091932-8urtuli368k8p7ds
[r=beuno,jonas-drange] add ubuntu global nav to apps.ubuntu.com

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
YUI 3.10.3 (build 2fb5187)
 
3
Copyright 2013 Yahoo! Inc. All rights reserved.
 
4
Licensed under the BSD License.
 
5
http://yuilibrary.com/license/
 
6
*/
 
7
 
 
8
YUI.add('selector-css3', function (Y, NAME) {
 
9
 
 
10
/**
 
11
 * The selector css3 module provides support for css3 selectors.
 
12
 * @module dom
 
13
 * @submodule selector-css3
 
14
 * @for Selector
 
15
 */
 
16
 
 
17
/*
 
18
    an+b = get every _a_th node starting at the _b_th
 
19
    0n+b = no repeat ("0" and "n" may both be omitted (together) , e.g. "0n+1" or "1", not "0+1"), return only the _b_th element
 
20
    1n+b =  get every element starting from b ("1" may may be omitted, e.g. "1n+0" or "n+0" or "n")
 
21
    an+0 = get every _a_th element, "0" may be omitted 
 
22
*/
 
23
 
 
24
Y.Selector._reNth = /^(?:([\-]?\d*)(n){1}|(odd|even)$)*([\-+]?\d*)$/;
 
25
 
 
26
Y.Selector._getNth = function(node, expr, tag, reverse) {
 
27
    Y.Selector._reNth.test(expr);
 
28
    var a = parseInt(RegExp.$1, 10), // include every _a_ elements (zero means no repeat, just first _a_)
 
29
        n = RegExp.$2, // "n"
 
30
        oddeven = RegExp.$3, // "odd" or "even"
 
31
        b = parseInt(RegExp.$4, 10) || 0, // start scan from element _b_
 
32
        result = [],
 
33
        siblings = Y.DOM._children(node.parentNode, tag),
 
34
        op;
 
35
 
 
36
    if (oddeven) {
 
37
        a = 2; // always every other
 
38
        op = '+';
 
39
        n = 'n';
 
40
        b = (oddeven === 'odd') ? 1 : 0;
 
41
    } else if ( isNaN(a) ) {
 
42
        a = (n) ? 1 : 0; // start from the first or no repeat
 
43
    }
 
44
 
 
45
    if (a === 0) { // just the first
 
46
        if (reverse) {
 
47
            b = siblings.length - b + 1; 
 
48
        }
 
49
 
 
50
        if (siblings[b - 1] === node) {
 
51
            return true;
 
52
        } else {
 
53
            return false;
 
54
        }
 
55
 
 
56
    } else if (a < 0) {
 
57
        reverse = !!reverse;
 
58
        a = Math.abs(a);
 
59
    }
 
60
 
 
61
    if (!reverse) {
 
62
        for (var i = b - 1, len = siblings.length; i < len; i += a) {
 
63
            if ( i >= 0 && siblings[i] === node ) {
 
64
                return true;
 
65
            }
 
66
        }
 
67
    } else {
 
68
        for (var i = siblings.length - b, len = siblings.length; i >= 0; i -= a) {
 
69
            if ( i < len && siblings[i] === node ) {
 
70
                return true;
 
71
            }
 
72
        }
 
73
    }
 
74
    return false;
 
75
};
 
76
 
 
77
Y.mix(Y.Selector.pseudos, {
 
78
    'root': function(node) {
 
79
        return node === node.ownerDocument.documentElement;
 
80
    },
 
81
 
 
82
    'nth-child': function(node, expr) {
 
83
        return Y.Selector._getNth(node, expr);
 
84
    },
 
85
 
 
86
    'nth-last-child': function(node, expr) {
 
87
        return Y.Selector._getNth(node, expr, null, true);
 
88
    },
 
89
 
 
90
    'nth-of-type': function(node, expr) {
 
91
        return Y.Selector._getNth(node, expr, node.tagName);
 
92
    },
 
93
     
 
94
    'nth-last-of-type': function(node, expr) {
 
95
        return Y.Selector._getNth(node, expr, node.tagName, true);
 
96
    },
 
97
     
 
98
    'last-child': function(node) {
 
99
        var children = Y.DOM._children(node.parentNode);
 
100
        return children[children.length - 1] === node;
 
101
    },
 
102
 
 
103
    'first-of-type': function(node) {
 
104
        return Y.DOM._children(node.parentNode, node.tagName)[0] === node;
 
105
    },
 
106
     
 
107
    'last-of-type': function(node) {
 
108
        var children = Y.DOM._children(node.parentNode, node.tagName);
 
109
        return children[children.length - 1] === node;
 
110
    },
 
111
     
 
112
    'only-child': function(node) {
 
113
        var children = Y.DOM._children(node.parentNode);
 
114
        return children.length === 1 && children[0] === node;
 
115
    },
 
116
 
 
117
    'only-of-type': function(node) {
 
118
        var children = Y.DOM._children(node.parentNode, node.tagName);
 
119
        return children.length === 1 && children[0] === node;
 
120
    },
 
121
 
 
122
    'empty': function(node) {
 
123
        return node.childNodes.length === 0;
 
124
    },
 
125
 
 
126
    'not': function(node, expr) {
 
127
        return !Y.Selector.test(node, expr);
 
128
    },
 
129
 
 
130
    'contains': function(node, expr) {
 
131
        var text = node.innerText || node.textContent || '';
 
132
        return text.indexOf(expr) > -1;
 
133
    },
 
134
 
 
135
    'checked': function(node) {
 
136
        return (node.checked === true || node.selected === true);
 
137
    },
 
138
 
 
139
    enabled: function(node) {
 
140
        return (node.disabled !== undefined && !node.disabled);
 
141
    },
 
142
 
 
143
    disabled: function(node) {
 
144
        return (node.disabled);
 
145
    }
 
146
});
 
147
 
 
148
Y.mix(Y.Selector.operators, {
 
149
    '^=': '^{val}', // Match starts with value
 
150
    '$=': '{val}$', // Match ends with value
 
151
    '*=': '{val}' // Match contains value as substring 
 
152
});
 
153
 
 
154
Y.Selector.combinators['~'] = {
 
155
    axis: 'previousSibling'
 
156
};
 
157
 
 
158
 
 
159
}, '3.10.3', {"requires": ["selector-native", "selector-css2"]});