]> git.proxmox.com Git - extjs.git/blame - extjs/classic/touch-sizing/.sencha/package/Microloader.js
add extjs 6.0.1 sources
[extjs.git] / extjs / classic / touch-sizing / .sencha / package / Microloader.js
CommitLineData
6527f429
DM
1// here, the extra check for window['Ext'] is needed for use with cmd-test\r
2// code injection. we need to make that this file will sync up with page global\r
3// scope to avoid duplicate Ext.Boot state. That check is after the initial Ext check\r
4// to allow the sandboxing template to inject an appropriate Ext var and prevent the\r
5// global detection.\r
6var Ext = Ext || window['Ext'] || {};\r
7\r
8\r
9//<editor-fold desc="Microloader">\r
10/**\r
11 * @Class Ext.Microloader\r
12 * @singleton\r
13 */\r
14Ext.Microloader = Ext.Microloader || (function () {\r
15 var Boot = Ext.Boot,\r
16 _listeners = [],\r
17 _loaded = false,\r
18\r
19 Microloader = {\r
20 detectPlatformTags: function () {\r
21 if (Ext.beforeLoad) {\r
22 Ext.beforeLoad(Ext.platformTags);\r
23 }\r
24 },\r
25\r
26 initPlatformTags: function () {\r
27 Microloader.detectPlatformTags();\r
28 },\r
29\r
30 init: function () {\r
31 Microloader.initPlatformTags();\r
32 var readyHandler = Ext._beforereadyhandler;\r
33 Ext._beforereadyhandler = function () {\r
34 if (Ext.Boot !== Boot) {\r
35 Ext.apply(Ext.Boot, Boot);\r
36 Ext.Boot = Boot;\r
37 }\r
38 if(readyHandler) {\r
39 readyHandler();\r
40 }\r
41 };\r
42 },\r
43\r
44 run: function() {\r
45 Microloader.init();\r
46 var manifest = Ext.manifest;\r
47\r
48 if (typeof manifest === "string") {\r
49 var extension = ".json",\r
50 url = manifest.indexOf(extension) === manifest.length - extension.length\r
51 ? manifest\r
52 : manifest + ".json";\r
53\r
54 Boot.fetch(url, function(result){\r
55 manifest = Ext.manifest = JSON.parse(result.content);\r
56 Microloader.load(manifest);\r
57 });\r
58 } else {\r
59 Microloader.load(manifest);\r
60 }\r
61 },\r
62\r
63 /**\r
64 *\r
65 * @param manifestDef\r
66 */\r
67 load: function (manifest) {\r
68 var loadOrder = manifest.loadOrder,\r
69 loadOrderMap = (loadOrder) ? Boot.createLoadOrderMap(loadOrder) : null,\r
70 urls = [],\r
71 js = manifest.js || [],\r
72 css = manifest.css || [],\r
73 resource, i, len, include,\r
74 loadedFn = function () {\r
75 _loaded = true;\r
76 Microloader.notify();\r
77 },\r
78 loadResources = function(resources, addLoadedFn){\r
79 for (len = resources.length, i = 0; i < len; i++) {\r
80 resource = resources[i];\r
81 include = true;\r
82 if (resource.platform && !Boot.filterPlatform(resource.platform)) {\r
83 include = false;\r
84 }\r
85 if (include) {\r
86 urls.push(resource.path);\r
87 }\r
88 }\r
89\r
90 if(!addLoadedFn) {\r
91 Boot.loadSync({\r
92 url: urls,\r
93 loadOrder: loadOrder,\r
94 loadOrderMap: loadOrderMap\r
95 });\r
96 } else {\r
97 Boot.load({\r
98 url: urls,\r
99 loadOrder: loadOrder,\r
100 loadOrderMap: loadOrderMap,\r
101 sequential: true,\r
102 success: loadedFn,\r
103 failure: loadedFn\r
104 });\r
105 }\r
106 };\r
107\r
108 if (loadOrder) {\r
109 manifest.loadOrderMap = loadOrderMap;\r
110 }\r
111\r
112 loadResources(css.concat(js), true);\r
113 },\r
114\r
115 onMicroloaderReady: function (listener) {\r
116 if (_loaded) {\r
117 listener();\r
118 } else {\r
119 _listeners.push(listener);\r
120 }\r
121 },\r
122\r
123 /**\r
124 * @private\r
125 */\r
126 notify: function () {\r
127 //<debug>\r
128 Boot.debug("notifying microloader ready listeners...");\r
129 //</debug>\r
130 var listener;\r
131 while((listener = _listeners.shift())) {\r
132 listener();\r
133 }\r
134 }\r
135 };\r
136\r
137 return Microloader;\r
138}());\r
139\r
140//</editor-fold>\r
141\r
142/**\r
143 * the current application manifest\r
144 *\r
145 *\r
146 * {\r
147 * name: 'name',\r
148 * version: <checksum>,\r
149 * debug: {\r
150 * hooks: {\r
151 * "*": true\r
152 * }\r
153 * },\r
154 * localStorage: false,\r
155 * mode: production,\r
156 * js: [\r
157 * ...\r
158 * {\r
159 * path: '../boo/baz.js',\r
160 * version: <checksum>,\r
161 * update: full | delta | <falsy>,\r
162 * platform: ['phone', 'ios', 'android']\r
163 * },\r
164 * {\r
165 * path: 'http://some.domain.com/api.js',\r
166 * remote: true\r
167 * },\r
168 * ...\r
169 * ],\r
170 * css: [\r
171 * ...\r
172 * {\r
173 * path: '../boo/baz.css',\r
174 * version: <checksum>,\r
175 * update: full | delta | <falsy>,\r
176 * platform: ['phone', 'ios', 'android']\r
177 * },\r
178 * ...\r
179 * ],\r
180 * localStorage: false,\r
181 * paths: {...},\r
182 * loadOrder: [\r
183 * ...\r
184 * {\r
185 * path: '../foo/bar.js",\r
186 * idx: 158,\r
187 * requires; [1,2,3,...,145,157],\r
188 * uses: [182, 193]\r
189 * },\r
190 * ...\r
191 * ],\r
192 * classes: {\r
193 * ...\r
194 * 'Ext.panel.Panel': {\r
195 * requires: [...],\r
196 * uses: [...],\r
197 * aliases: [...],\r
198 * alternates: [...],\r
199 * mixins: [...]\r
200 * },\r
201 * 'Ext.rtl.util.Renderable': {\r
202 * requires: [...],\r
203 * uses: [...],\r
204 * aliases: [...],\r
205 * alternates: [...],\r
206 * mixins: [...]\r
207 * override: 'Ext.util.Renderable'\r
208 * },\r
209 * ...\r
210 * },\r
211 * packages: {\r
212 * ...\r
213 * "core": {\r
214 * version: '1.2.3.4',\r
215 * requires: []\r
216 * },\r
217 * "ext": {\r
218 * version: '5.0.0.0',\r
219 * requires: ["core"]\r
220 * }.\r
221 * ...\r
222 * }\r
223 * }\r
224 *\r
225 *\r
226 * @type {String/Object}\r
227 */\r
228Ext.manifest = Ext.manifest || "bootstrap";\r
229\r
230Ext.Microloader.run();