-
Notifications
You must be signed in to change notification settings - Fork 0
/
_loader.js
59 lines (55 loc) · 1.89 KB
/
_loader.js
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
define(["../has", "require"],
function(has, require){
"use strict";
if (typeof document !== "undefined") {
var testDiv = document.createElement("div");
has.add("dom-qsa2.1", !!testDiv.querySelectorAll);
has.add("dom-qsa3", function(){
// test to see if we have a reasonable native selector engine available
try{
testDiv.innerHTML = "<p class='TEST'></p>"; // test kind of from sizzle
// Safari can't handle uppercase or unicode characters when
// in quirks mode, IE8 can't handle pseudos like :empty
return testDiv.querySelectorAll(".TEST:empty").length == 1;
}catch(e){}
});
}
var fullEngine;
var acme = "./acme", lite = "./lite";
return {
// summary:
// This module handles loading the appropriate selector engine for the given browser
load: function(id, parentRequire, loaded, config){
if (config && config.isBuild) {
//Indicate that the optimizer should not wait
//for this resource any more and complete optimization.
//This resource will be resolved dynamically during
//run time in the web browser.
loaded();
return;
}
var req = require;
// here we implement the default logic for choosing a selector engine
id = id == "default" ? has("config-selectorEngine") || "css3" : id;
id = id == "css2" || id == "lite" ? lite :
id == "css2.1" ? has("dom-qsa2.1") ? lite : acme :
id == "css3" ? has("dom-qsa3") ? lite : acme :
id == "acme" ? acme : (req = parentRequire) && id;
if(id.charAt(id.length-1) == '?'){
id = id.substring(0,id.length - 1);
var optionalLoad = true;
}
// the query engine is optional, only load it if a native one is not available or existing one has not been loaded
if(optionalLoad && (has("dom-compliant-qsa") || fullEngine)){
return loaded(fullEngine);
}
// load the referenced selector engine
req([id], function(engine){
if(id != "./lite"){
fullEngine = engine;
}
loaded(engine);
});
}
};
});