yzt
2023-05-26 2f70f6727314edd84d8ec2bfe3ce832803f1ea77
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
define(["./kernel", "../query", "./array", "./html", "../NodeList-dom"], function(dojo, query, array){
    // module:
    //      dojo/_base/NodeList
 
    /*=====
    return {
        // summary:
        //      This module extends dojo/NodeList with the legacy connect(), coords(),
        //      blur(), focus(), change(), click(), error(), keydown(), keypress(),
        //      keyup(), load(), mousedown(), mouseenter(), mouseleave(), mousemove(),
        //      mouseout(), mouseover(), mouseup(), and submit() methods.
    };
    =====*/
 
    var NodeList = query.NodeList,
        nlp = NodeList.prototype;
 
    nlp.connect = NodeList._adaptAsForEach(function(){
        // don't bind early to dojo.connect since we no longer explicitly depend on it
        return dojo.connect.apply(this, arguments);
    });
    /*=====
    nlp.connect = function(methodName, objOrFunc, funcName){
        // summary:
        //      Attach event handlers to every item of the NodeList. Uses dojo.connect()
        //      so event properties are normalized.
        //
        //      Application must manually require() "dojo/_base/connect" before using this method.
        // methodName: String
        //      the name of the method to attach to. For DOM events, this should be
        //      the lower-case name of the event
        // objOrFunc: Object|Function|String
        //      if 2 arguments are passed (methodName, objOrFunc), objOrFunc should
        //      reference a function or be the name of the function in the global
        //      namespace to attach. If 3 arguments are provided
        //      (methodName, objOrFunc, funcName), objOrFunc must be the scope to
        //      locate the bound function in
        // funcName: String?
        //      optional. A string naming the function in objOrFunc to bind to the
        //      event. May also be a function reference.
        // example:
        //      add an onclick handler to every button on the page
        //      |   query("div:nth-child(odd)").connect("onclick", function(e){
        //      |       console.log("clicked!");
        //      |   });
        // example:
        //      attach foo.bar() to every odd div's onmouseover
        //      |   query("div:nth-child(odd)").connect("onmouseover", foo, "bar");
 
        return null;    // NodeList
    };
    =====*/
 
    nlp.coords = NodeList._adaptAsMap(dojo.coords);
    /*=====
    nlp.coords = function(){
        // summary:
        //      Deprecated: Use position() for border-box x/y/w/h
        //      or marginBox() for margin-box w/h/l/t.
        //      Returns the box objects of all elements in a node list as
        //      an Array (*not* a NodeList). Acts like `domGeom.coords`, though assumes
        //      the node passed is each node in this list.
 
        return []; // Array
    };
    =====*/
 
    NodeList.events = [
        // summary:
        //      list of all DOM events used in NodeList
        "blur", "focus", "change", "click", "error", "keydown", "keypress",
        "keyup", "load", "mousedown", "mouseenter", "mouseleave", "mousemove",
        "mouseout", "mouseover", "mouseup", "submit"
    ];
 
    // FIXME: pseudo-doc the above automatically generated on-event functions
 
    // syntactic sugar for DOM events
    array.forEach(NodeList.events, function(evt){
            var _oe = "on" + evt;
            nlp[_oe] = function(a, b){
                return this.connect(_oe, a, b);
            };
                // FIXME: should these events trigger publishes?
                /*
                return (a ? this.connect(_oe, a, b) :
                            this.forEach(function(n){
                                // FIXME:
                                //      listeners get buried by
                                //      addEventListener and can't be dug back
                                //      out to be triggered externally.
                                // see:
                                //      http://developer.mozilla.org/en/docs/DOM:element
 
                                console.log(n, evt, _oe);
 
                                // FIXME: need synthetic event support!
                                var _e = { target: n, faux: true, type: evt };
                                // dojo._event_listener._synthesizeEvent({}, { target: n, faux: true, type: evt });
                                try{ n[evt](_e); }catch(e){ console.log(e); }
                                try{ n[_oe](_e); }catch(e){ console.log(e); }
                            })
                );
                */
        }
    );
 
    dojo.NodeList = NodeList;
    return NodeList;
});