Platform-Browser.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401
  1. define("amber_core/Platform-Browser", ["amber/boot", "amber_core/Kernel-Objects"], function($boot){"use strict";
  2. var $core=$boot.api,nil=$boot.nil,$recv=$boot.asReceiver,$globals=$boot.globals;
  3. $core.addPackage('Platform-Browser');
  4. $core.packages["Platform-Browser"].innerEval = function (expr) { return eval(expr); };
  5. $core.packages["Platform-Browser"].transport = {"type":"amd","amdNamespace":"amber_core"};
  6. $core.addClass('BrowserInterface', $globals.Object, [], 'Platform-Browser');
  7. //>>excludeStart("ide", pragmas.excludeIdeData);
  8. $globals.BrowserInterface.comment="I am platform interface class that tries to use window and jQuery; that is, one for browser environment.\x0a\x0a## API\x0a\x0a self isAvailable. \x22true if window and jQuery exist\x22.\x0a\x0a self alert: 'Hey, there is a problem'.\x0a self confirm: 'Affirmative?'.\x0a self prompt: 'Your name:'.\x0a\x0a self ajax: #{\x0a 'url' -> '/patch.js'. 'type' -> 'GET'. dataType->'script'\x0a }.";
  9. //>>excludeEnd("ide");
  10. $core.addMethod(
  11. $core.method({
  12. selector: "ajax:",
  13. protocol: 'actions',
  14. fn: function (anObject){
  15. var self=this;
  16. function $JQuery(){return $globals.JQuery||(typeof JQuery=="undefined"?nil:JQuery)}
  17. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18. return $core.withContext(function($ctx1) {
  19. //>>excludeEnd("ctx");
  20. var $1,$receiver;
  21. self._deprecatedAPI_("Use newXhr or dedicated library.");
  22. if(($receiver = $JQuery()) == null || $receiver.isNil){
  23. $1=self._error_("JQuery wrapper not loaded, cannot do AJAX.");
  24. } else {
  25. $1=$recv($recv($JQuery())._current())._ajax_(anObject);
  26. };
  27. return $1;
  28. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29. }, function($ctx1) {$ctx1.fill(self,"ajax:",{anObject:anObject},$globals.BrowserInterface)});
  30. //>>excludeEnd("ctx");
  31. },
  32. //>>excludeStart("ide", pragmas.excludeIdeData);
  33. args: ["anObject"],
  34. source: "ajax: anObject\x0a\x09self deprecatedAPI: 'Use newXhr or dedicated library.'.\x0a\x09^ JQuery\x0a\x09\x09ifNil: [ self error: 'JQuery wrapper not loaded, cannot do AJAX.' ]\x0a\x09\x09ifNotNil: [ JQuery current ajax: anObject ]",
  35. referencedClasses: ["JQuery"],
  36. //>>excludeEnd("ide");
  37. messageSends: ["deprecatedAPI:", "ifNil:ifNotNil:", "error:", "ajax:", "current"]
  38. }),
  39. $globals.BrowserInterface);
  40. $core.addMethod(
  41. $core.method({
  42. selector: "alert:",
  43. protocol: 'actions',
  44. fn: function (aString){
  45. var self=this;
  46. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47. return $core.withContext(function($ctx1) {
  48. //>>excludeEnd("ctx");
  49. var $1;
  50. $1=$recv(window)._alert_(aString);
  51. return $1;
  52. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53. }, function($ctx1) {$ctx1.fill(self,"alert:",{aString:aString},$globals.BrowserInterface)});
  54. //>>excludeEnd("ctx");
  55. },
  56. //>>excludeStart("ide", pragmas.excludeIdeData);
  57. args: ["aString"],
  58. source: "alert: aString\x0a\x09^ window alert: aString",
  59. referencedClasses: [],
  60. //>>excludeEnd("ide");
  61. messageSends: ["alert:"]
  62. }),
  63. $globals.BrowserInterface);
  64. $core.addMethod(
  65. $core.method({
  66. selector: "confirm:",
  67. protocol: 'actions',
  68. fn: function (aString){
  69. var self=this;
  70. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71. return $core.withContext(function($ctx1) {
  72. //>>excludeEnd("ctx");
  73. var $1;
  74. $1=$recv(window)._confirm_(aString);
  75. return $1;
  76. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77. }, function($ctx1) {$ctx1.fill(self,"confirm:",{aString:aString},$globals.BrowserInterface)});
  78. //>>excludeEnd("ctx");
  79. },
  80. //>>excludeStart("ide", pragmas.excludeIdeData);
  81. args: ["aString"],
  82. source: "confirm: aString\x0a\x09^ window confirm: aString",
  83. referencedClasses: [],
  84. //>>excludeEnd("ide");
  85. messageSends: ["confirm:"]
  86. }),
  87. $globals.BrowserInterface);
  88. $core.addMethod(
  89. $core.method({
  90. selector: "isAvailable",
  91. protocol: 'testing',
  92. fn: function (){
  93. var self=this;
  94. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  95. return $core.withContext(function($ctx1) {
  96. //>>excludeEnd("ctx");
  97. return typeof window !== "undefined" && typeof jQuery !== "undefined";
  98. return self;
  99. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  100. }, function($ctx1) {$ctx1.fill(self,"isAvailable",{},$globals.BrowserInterface)});
  101. //>>excludeEnd("ctx");
  102. },
  103. //>>excludeStart("ide", pragmas.excludeIdeData);
  104. args: [],
  105. source: "isAvailable\x0a<return typeof window !== \x22undefined\x22 && typeof jQuery !== \x22undefined\x22>",
  106. referencedClasses: [],
  107. //>>excludeEnd("ide");
  108. messageSends: []
  109. }),
  110. $globals.BrowserInterface);
  111. $core.addMethod(
  112. $core.method({
  113. selector: "newXhr",
  114. protocol: 'actions',
  115. fn: function (){
  116. var self=this;
  117. function $XMLHttpRequest(){return $globals.XMLHttpRequest||(typeof XMLHttpRequest=="undefined"?nil:XMLHttpRequest)}
  118. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  119. return $core.withContext(function($ctx1) {
  120. //>>excludeEnd("ctx");
  121. var $1;
  122. $1=$recv($XMLHttpRequest())._new();
  123. return $1;
  124. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  125. }, function($ctx1) {$ctx1.fill(self,"newXhr",{},$globals.BrowserInterface)});
  126. //>>excludeEnd("ctx");
  127. },
  128. //>>excludeStart("ide", pragmas.excludeIdeData);
  129. args: [],
  130. source: "newXhr\x0a\x09^ XMLHttpRequest new",
  131. referencedClasses: ["XMLHttpRequest"],
  132. //>>excludeEnd("ide");
  133. messageSends: ["new"]
  134. }),
  135. $globals.BrowserInterface);
  136. $core.addMethod(
  137. $core.method({
  138. selector: "prompt:",
  139. protocol: 'actions',
  140. fn: function (aString){
  141. var self=this;
  142. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  143. return $core.withContext(function($ctx1) {
  144. //>>excludeEnd("ctx");
  145. var $1;
  146. $1=$recv(window)._prompt_(aString);
  147. return $1;
  148. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  149. }, function($ctx1) {$ctx1.fill(self,"prompt:",{aString:aString},$globals.BrowserInterface)});
  150. //>>excludeEnd("ctx");
  151. },
  152. //>>excludeStart("ide", pragmas.excludeIdeData);
  153. args: ["aString"],
  154. source: "prompt: aString\x0a\x09^ window prompt: aString",
  155. referencedClasses: [],
  156. //>>excludeEnd("ide");
  157. messageSends: ["prompt:"]
  158. }),
  159. $globals.BrowserInterface);
  160. $core.addMethod(
  161. $core.method({
  162. selector: "prompt:default:",
  163. protocol: 'actions',
  164. fn: function (aString,defaultString){
  165. var self=this;
  166. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  167. return $core.withContext(function($ctx1) {
  168. //>>excludeEnd("ctx");
  169. var $1;
  170. $1=$recv(window)._prompt_default_(aString,defaultString);
  171. return $1;
  172. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  173. }, function($ctx1) {$ctx1.fill(self,"prompt:default:",{aString:aString,defaultString:defaultString},$globals.BrowserInterface)});
  174. //>>excludeEnd("ctx");
  175. },
  176. //>>excludeStart("ide", pragmas.excludeIdeData);
  177. args: ["aString", "defaultString"],
  178. source: "prompt: aString default: defaultString\x0a\x09^ window prompt: aString default: defaultString",
  179. referencedClasses: [],
  180. //>>excludeEnd("ide");
  181. messageSends: ["prompt:default:"]
  182. }),
  183. $globals.BrowserInterface);
  184. $core.addClass('BrowserTerminal', $globals.Object, [], 'Platform-Browser');
  185. //>>excludeStart("ide", pragmas.excludeIdeData);
  186. $globals.BrowserTerminal.comment="I am `Terminal` service implementation for browser.";
  187. //>>excludeEnd("ide");
  188. $core.addMethod(
  189. $core.method({
  190. selector: "alert:",
  191. protocol: 'actions',
  192. fn: function (aString){
  193. var self=this;
  194. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  195. return $core.withContext(function($ctx1) {
  196. //>>excludeEnd("ctx");
  197. var $1;
  198. $1=$recv(window)._alert_(aString);
  199. return $1;
  200. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  201. }, function($ctx1) {$ctx1.fill(self,"alert:",{aString:aString},$globals.BrowserTerminal)});
  202. //>>excludeEnd("ctx");
  203. },
  204. //>>excludeStart("ide", pragmas.excludeIdeData);
  205. args: ["aString"],
  206. source: "alert: aString\x0a\x09^ window alert: aString",
  207. referencedClasses: [],
  208. //>>excludeEnd("ide");
  209. messageSends: ["alert:"]
  210. }),
  211. $globals.BrowserTerminal);
  212. $core.addMethod(
  213. $core.method({
  214. selector: "confirm:",
  215. protocol: 'actions',
  216. fn: function (aString){
  217. var self=this;
  218. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  219. return $core.withContext(function($ctx1) {
  220. //>>excludeEnd("ctx");
  221. var $1;
  222. $1=$recv(window)._confirm_(aString);
  223. return $1;
  224. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  225. }, function($ctx1) {$ctx1.fill(self,"confirm:",{aString:aString},$globals.BrowserTerminal)});
  226. //>>excludeEnd("ctx");
  227. },
  228. //>>excludeStart("ide", pragmas.excludeIdeData);
  229. args: ["aString"],
  230. source: "confirm: aString\x0a\x09^ window confirm: aString",
  231. referencedClasses: [],
  232. //>>excludeEnd("ide");
  233. messageSends: ["confirm:"]
  234. }),
  235. $globals.BrowserTerminal);
  236. $core.addMethod(
  237. $core.method({
  238. selector: "prompt:",
  239. protocol: 'actions',
  240. fn: function (aString){
  241. var self=this;
  242. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  243. return $core.withContext(function($ctx1) {
  244. //>>excludeEnd("ctx");
  245. var $1;
  246. $1=$recv(window)._prompt_(aString);
  247. return $1;
  248. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  249. }, function($ctx1) {$ctx1.fill(self,"prompt:",{aString:aString},$globals.BrowserTerminal)});
  250. //>>excludeEnd("ctx");
  251. },
  252. //>>excludeStart("ide", pragmas.excludeIdeData);
  253. args: ["aString"],
  254. source: "prompt: aString\x0a\x09^ window prompt: aString",
  255. referencedClasses: [],
  256. //>>excludeEnd("ide");
  257. messageSends: ["prompt:"]
  258. }),
  259. $globals.BrowserTerminal);
  260. $core.addMethod(
  261. $core.method({
  262. selector: "prompt:default:",
  263. protocol: 'actions',
  264. fn: function (aString,defaultString){
  265. var self=this;
  266. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  267. return $core.withContext(function($ctx1) {
  268. //>>excludeEnd("ctx");
  269. var $1;
  270. $1=$recv(window)._prompt_default_(aString,defaultString);
  271. return $1;
  272. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  273. }, function($ctx1) {$ctx1.fill(self,"prompt:default:",{aString:aString,defaultString:defaultString},$globals.BrowserTerminal)});
  274. //>>excludeEnd("ctx");
  275. },
  276. //>>excludeStart("ide", pragmas.excludeIdeData);
  277. args: ["aString", "defaultString"],
  278. source: "prompt: aString default: defaultString\x0a\x09^ window prompt: aString default: defaultString",
  279. referencedClasses: [],
  280. //>>excludeEnd("ide");
  281. messageSends: ["prompt:default:"]
  282. }),
  283. $globals.BrowserTerminal);
  284. $core.addMethod(
  285. $core.method({
  286. selector: "initialize",
  287. protocol: 'testing',
  288. fn: function (){
  289. var self=this;
  290. function $Terminal(){return $globals.Terminal||(typeof Terminal=="undefined"?nil:Terminal)}
  291. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  292. return $core.withContext(function($ctx1) {
  293. //>>excludeEnd("ctx");
  294. var $1;
  295. $1=self._isFeasible();
  296. if($core.assert($1)){
  297. $recv($Terminal())._registerIfNone_(self._new());
  298. };
  299. return self;
  300. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  301. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.BrowserTerminal.klass)});
  302. //>>excludeEnd("ctx");
  303. },
  304. //>>excludeStart("ide", pragmas.excludeIdeData);
  305. args: [],
  306. source: "initialize\x0a\x09self isFeasible ifTrue: [ Terminal registerIfNone: self new ]",
  307. referencedClasses: ["Terminal"],
  308. //>>excludeEnd("ide");
  309. messageSends: ["ifTrue:", "isFeasible", "registerIfNone:", "new"]
  310. }),
  311. $globals.BrowserTerminal.klass);
  312. $core.addMethod(
  313. $core.method({
  314. selector: "isFeasible",
  315. protocol: 'testing',
  316. fn: function (){
  317. var self=this;
  318. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  319. return $core.withContext(function($ctx1) {
  320. //>>excludeEnd("ctx");
  321. return typeof window !== "undefined";
  322. return self;
  323. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  324. }, function($ctx1) {$ctx1.fill(self,"isFeasible",{},$globals.BrowserTerminal.klass)});
  325. //>>excludeEnd("ctx");
  326. },
  327. //>>excludeStart("ide", pragmas.excludeIdeData);
  328. args: [],
  329. source: "isFeasible\x0a<return typeof window !== \x22undefined\x22>",
  330. referencedClasses: [],
  331. //>>excludeEnd("ide");
  332. messageSends: []
  333. }),
  334. $globals.BrowserTerminal.klass);
  335. $core.addMethod(
  336. $core.method({
  337. selector: "postMessageTo:",
  338. protocol: '*Platform-Browser',
  339. fn: function (aFrame){
  340. var self=this;
  341. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  342. return $core.withContext(function($ctx1) {
  343. //>>excludeEnd("ctx");
  344. var $1;
  345. $1=self._postMessageTo_origin_(aFrame,"*");
  346. return $1;
  347. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  348. }, function($ctx1) {$ctx1.fill(self,"postMessageTo:",{aFrame:aFrame},$globals.Object)});
  349. //>>excludeEnd("ctx");
  350. },
  351. //>>excludeStart("ide", pragmas.excludeIdeData);
  352. args: ["aFrame"],
  353. source: "postMessageTo: aFrame\x0a^ self postMessageTo: aFrame origin: '*'",
  354. referencedClasses: [],
  355. //>>excludeEnd("ide");
  356. messageSends: ["postMessageTo:origin:"]
  357. }),
  358. $globals.Object);
  359. $core.addMethod(
  360. $core.method({
  361. selector: "postMessageTo:origin:",
  362. protocol: '*Platform-Browser',
  363. fn: function (aFrame,aString){
  364. var self=this;
  365. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  366. return $core.withContext(function($ctx1) {
  367. //>>excludeEnd("ctx");
  368. return aFrame.postMessage(self, aString);
  369. return self;
  370. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  371. }, function($ctx1) {$ctx1.fill(self,"postMessageTo:origin:",{aFrame:aFrame,aString:aString},$globals.Object)});
  372. //>>excludeEnd("ctx");
  373. },
  374. //>>excludeStart("ide", pragmas.excludeIdeData);
  375. args: ["aFrame", "aString"],
  376. source: "postMessageTo: aFrame origin: aString\x0a<return aFrame.postMessage(self, aString)>",
  377. referencedClasses: [],
  378. //>>excludeEnd("ide");
  379. messageSends: []
  380. }),
  381. $globals.Object);
  382. });