MiniMVP.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504
  1. define(["amber/boot", "require", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
  2. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  3. var $pkg = $core.addPackage("MiniMVP");
  4. $pkg.innerEval = function (expr) { return eval(expr); };
  5. $pkg.transport = {"type":"amd","amdNamespace":"mini-mvp"};
  6. $core.addClass("MiniPresenter", $globals.Object, ["frame", "dataBlock"], "MiniMVP");
  7. $core.addMethod(
  8. $core.method({
  9. selector: "dataBlock",
  10. protocol: "accessing",
  11. //>>excludeStart("ide", pragmas.excludeIdeData);
  12. args: [],
  13. source: "dataBlock\x0a\x09^ dataBlock",
  14. referencedClasses: [],
  15. //>>excludeEnd("ide");
  16. pragmas: [],
  17. messageSends: []
  18. }, function ($methodClass){ return function (){
  19. var self=this,$self=this;
  20. return $self.dataBlock;
  21. }; }),
  22. $globals.MiniPresenter);
  23. $core.addMethod(
  24. $core.method({
  25. selector: "dataBlock:",
  26. protocol: "accessing",
  27. //>>excludeStart("ide", pragmas.excludeIdeData);
  28. args: ["anObject"],
  29. source: "dataBlock: anObject\x0a\x09dataBlock := anObject",
  30. referencedClasses: [],
  31. //>>excludeEnd("ide");
  32. pragmas: [],
  33. messageSends: []
  34. }, function ($methodClass){ return function (anObject){
  35. var self=this,$self=this;
  36. $self.dataBlock=anObject;
  37. return self;
  38. }; }),
  39. $globals.MiniPresenter);
  40. $core.addMethod(
  41. $core.method({
  42. selector: "frame",
  43. protocol: "accessing",
  44. //>>excludeStart("ide", pragmas.excludeIdeData);
  45. args: [],
  46. source: "frame\x0a\x09^ frame",
  47. referencedClasses: [],
  48. //>>excludeEnd("ide");
  49. pragmas: [],
  50. messageSends: []
  51. }, function ($methodClass){ return function (){
  52. var self=this,$self=this;
  53. return $self.frame;
  54. }; }),
  55. $globals.MiniPresenter);
  56. $core.addMethod(
  57. $core.method({
  58. selector: "frame:",
  59. protocol: "accessing",
  60. //>>excludeStart("ide", pragmas.excludeIdeData);
  61. args: ["anObject"],
  62. source: "frame: anObject\x0a\x09frame := anObject",
  63. referencedClasses: [],
  64. //>>excludeEnd("ide");
  65. pragmas: [],
  66. messageSends: []
  67. }, function ($methodClass){ return function (anObject){
  68. var self=this,$self=this;
  69. $self.frame=anObject;
  70. return self;
  71. }; }),
  72. $globals.MiniPresenter);
  73. $core.addMethod(
  74. $core.method({
  75. selector: "hide",
  76. protocol: "private",
  77. //>>excludeStart("ide", pragmas.excludeIdeData);
  78. args: [],
  79. source: "hide\x0a\x09(self frame asDomNode at: 'style') at: #display put: 'none'",
  80. referencedClasses: [],
  81. //>>excludeEnd("ide");
  82. pragmas: [],
  83. messageSends: ["at:put:", "at:", "asDomNode", "frame"]
  84. }, function ($methodClass){ return function (){
  85. var self=this,$self=this;
  86. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87. return $core.withContext(function($ctx1) {
  88. //>>excludeEnd("ctx");
  89. $recv($recv($recv($self._frame())._asDomNode())._at_("style"))._at_put_("display","none");
  90. return self;
  91. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92. }, function($ctx1) {$ctx1.fill(self,"hide",{})});
  93. //>>excludeEnd("ctx");
  94. }; }),
  95. $globals.MiniPresenter);
  96. $core.addMethod(
  97. $core.method({
  98. selector: "present:",
  99. protocol: "actions",
  100. //>>excludeStart("ide", pragmas.excludeIdeData);
  101. args: ["anObject"],
  102. source: "present: anObject\x0a\x09self subclassResponsibility",
  103. referencedClasses: [],
  104. //>>excludeEnd("ide");
  105. pragmas: [],
  106. messageSends: ["subclassResponsibility"]
  107. }, function ($methodClass){ return function (anObject){
  108. var self=this,$self=this;
  109. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  110. return $core.withContext(function($ctx1) {
  111. //>>excludeEnd("ctx");
  112. $self._subclassResponsibility();
  113. return self;
  114. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  115. }, function($ctx1) {$ctx1.fill(self,"present:",{anObject:anObject})});
  116. //>>excludeEnd("ctx");
  117. }; }),
  118. $globals.MiniPresenter);
  119. $core.addMethod(
  120. $core.method({
  121. selector: "refresh",
  122. protocol: "actions",
  123. //>>excludeStart("ide", pragmas.excludeIdeData);
  124. args: [],
  125. source: "refresh\x0a\x09self dataBlock value\x0a\x09\x09ifNil: [ self hide ]\x0a\x09\x09ifNotNil: [ :data | self show; present: data ]",
  126. referencedClasses: [],
  127. //>>excludeEnd("ide");
  128. pragmas: [],
  129. messageSends: ["ifNil:ifNotNil:", "value", "dataBlock", "hide", "show", "present:"]
  130. }, function ($methodClass){ return function (){
  131. var self=this,$self=this;
  132. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  133. return $core.withContext(function($ctx1) {
  134. //>>excludeEnd("ctx");
  135. var $1;
  136. $1=$recv($self._dataBlock())._value();
  137. if($1 == null || $1.a$nil){
  138. $self._hide();
  139. } else {
  140. var data;
  141. data=$1;
  142. $self._show();
  143. $self._present_(data);
  144. }
  145. return self;
  146. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  147. }, function($ctx1) {$ctx1.fill(self,"refresh",{})});
  148. //>>excludeEnd("ctx");
  149. }; }),
  150. $globals.MiniPresenter);
  151. $core.addMethod(
  152. $core.method({
  153. selector: "show",
  154. protocol: "private",
  155. //>>excludeStart("ide", pragmas.excludeIdeData);
  156. args: [],
  157. source: "show\x0a\x09(self frame asDomNode at: 'style') removeProperty: 'display'",
  158. referencedClasses: [],
  159. //>>excludeEnd("ide");
  160. pragmas: [],
  161. messageSends: ["removeProperty:", "at:", "asDomNode", "frame"]
  162. }, function ($methodClass){ return function (){
  163. var self=this,$self=this;
  164. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  165. return $core.withContext(function($ctx1) {
  166. //>>excludeEnd("ctx");
  167. $recv($recv($recv($self._frame())._asDomNode())._at_("style"))._removeProperty_("display");
  168. return self;
  169. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  170. }, function($ctx1) {$ctx1.fill(self,"show",{})});
  171. //>>excludeEnd("ctx");
  172. }; }),
  173. $globals.MiniPresenter);
  174. $core.addMethod(
  175. $core.method({
  176. selector: "shows:in:",
  177. protocol: "instance creation",
  178. //>>excludeStart("ide", pragmas.excludeIdeData);
  179. args: ["aBlock", "aDommable"],
  180. source: "shows: aBlock in: aDommable\x0a\x09^ super new\x0a\x09\x09dataBlock: aBlock;\x0a\x09\x09frame: aDommable;\x0a\x09\x09hide;\x0a\x09\x09yourself",
  181. referencedClasses: [],
  182. //>>excludeEnd("ide");
  183. pragmas: [],
  184. messageSends: ["dataBlock:", "new", "frame:", "hide", "yourself"]
  185. }, function ($methodClass){ return function (aBlock,aDommable){
  186. var self=this,$self=this;
  187. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  188. return $core.withContext(function($ctx1) {
  189. //>>excludeEnd("ctx");
  190. var $1;
  191. $1=[(
  192. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  193. $ctx1.supercall = true,
  194. //>>excludeEnd("ctx");
  195. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._new.call($self))
  196. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  197. ,$ctx1.supercall = false
  198. //>>excludeEnd("ctx");
  199. ][0];
  200. $recv($1)._dataBlock_(aBlock);
  201. $recv($1)._frame_(aDommable);
  202. $recv($1)._hide();
  203. return $recv($1)._yourself();
  204. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  205. }, function($ctx1) {$ctx1.fill(self,"shows:in:",{aBlock:aBlock,aDommable:aDommable})});
  206. //>>excludeEnd("ctx");
  207. }; }),
  208. $globals.MiniPresenter.a$cls);
  209. $core.addClass("MiniLeafPresenter", $globals.MiniPresenter, ["factory"], "MiniMVP");
  210. $core.addMethod(
  211. $core.method({
  212. selector: "factory",
  213. protocol: "accessing",
  214. //>>excludeStart("ide", pragmas.excludeIdeData);
  215. args: [],
  216. source: "factory\x0a\x09^ factory",
  217. referencedClasses: [],
  218. //>>excludeEnd("ide");
  219. pragmas: [],
  220. messageSends: []
  221. }, function ($methodClass){ return function (){
  222. var self=this,$self=this;
  223. return $self.factory;
  224. }; }),
  225. $globals.MiniLeafPresenter);
  226. $core.addMethod(
  227. $core.method({
  228. selector: "factory:",
  229. protocol: "accessing",
  230. //>>excludeStart("ide", pragmas.excludeIdeData);
  231. args: ["anObject"],
  232. source: "factory: anObject\x0a\x09factory := anObject",
  233. referencedClasses: [],
  234. //>>excludeEnd("ide");
  235. pragmas: [],
  236. messageSends: []
  237. }, function ($methodClass){ return function (anObject){
  238. var self=this,$self=this;
  239. $self.factory=anObject;
  240. return self;
  241. }; }),
  242. $globals.MiniLeafPresenter);
  243. $core.addMethod(
  244. $core.method({
  245. selector: "frameContents:",
  246. protocol: "rendering",
  247. //>>excludeStart("ide", pragmas.excludeIdeData);
  248. args: ["anObject"],
  249. source: "frameContents: anObject\x0a\x09self subclassResponsibility",
  250. referencedClasses: [],
  251. //>>excludeEnd("ide");
  252. pragmas: [],
  253. messageSends: ["subclassResponsibility"]
  254. }, function ($methodClass){ return function (anObject){
  255. var self=this,$self=this;
  256. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  257. return $core.withContext(function($ctx1) {
  258. //>>excludeEnd("ctx");
  259. $self._subclassResponsibility();
  260. return self;
  261. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  262. }, function($ctx1) {$ctx1.fill(self,"frameContents:",{anObject:anObject})});
  263. //>>excludeEnd("ctx");
  264. }; }),
  265. $globals.MiniLeafPresenter);
  266. $core.addMethod(
  267. $core.method({
  268. selector: "present:",
  269. protocol: "rendering",
  270. //>>excludeStart("ide", pragmas.excludeIdeData);
  271. args: ["anObject"],
  272. source: "present: anObject\x0a\x09(self factory value: anObject)\x0a\x09\x09ifNotNil: [ :payload | self frameContents: payload ]",
  273. referencedClasses: [],
  274. //>>excludeEnd("ide");
  275. pragmas: [],
  276. messageSends: ["ifNotNil:", "value:", "factory", "frameContents:"]
  277. }, function ($methodClass){ return function (anObject){
  278. var self=this,$self=this;
  279. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  280. return $core.withContext(function($ctx1) {
  281. //>>excludeEnd("ctx");
  282. var $1;
  283. $1=$recv($self._factory())._value_(anObject);
  284. if($1 == null || $1.a$nil){
  285. $1;
  286. } else {
  287. var payload;
  288. payload=$1;
  289. $self._frameContents_(payload);
  290. }
  291. return self;
  292. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  293. }, function($ctx1) {$ctx1.fill(self,"present:",{anObject:anObject})});
  294. //>>excludeEnd("ctx");
  295. }; }),
  296. $globals.MiniLeafPresenter);
  297. $core.addMethod(
  298. $core.method({
  299. selector: "shows:in:do:",
  300. protocol: "instance creation",
  301. //>>excludeStart("ide", pragmas.excludeIdeData);
  302. args: ["aDataBlock", "aDommable", "aFactoryBlock"],
  303. source: "shows: aDataBlock in: aDommable do: aFactoryBlock\x0a\x09^ (super shows: aDataBlock in: aDommable)\x0a\x09\x09factory: aFactoryBlock;\x0a\x09\x09yourself",
  304. referencedClasses: [],
  305. //>>excludeEnd("ide");
  306. pragmas: [],
  307. messageSends: ["factory:", "shows:in:", "yourself"]
  308. }, function ($methodClass){ return function (aDataBlock,aDommable,aFactoryBlock){
  309. var self=this,$self=this;
  310. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  311. return $core.withContext(function($ctx1) {
  312. //>>excludeEnd("ctx");
  313. var $1;
  314. $1=[(
  315. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  316. $ctx1.supercall = true,
  317. //>>excludeEnd("ctx");
  318. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._shows_in_.call($self,aDataBlock,aDommable))
  319. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  320. ,$ctx1.supercall = false
  321. //>>excludeEnd("ctx");
  322. ][0];
  323. $recv($1)._factory_(aFactoryBlock);
  324. return $recv($1)._yourself();
  325. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  326. }, function($ctx1) {$ctx1.fill(self,"shows:in:do:",{aDataBlock:aDataBlock,aDommable:aDommable,aFactoryBlock:aFactoryBlock})});
  327. //>>excludeEnd("ctx");
  328. }; }),
  329. $globals.MiniLeafPresenter.a$cls);
  330. $core.addClass("AmberWebLeafPresenter", $globals.MiniLeafPresenter, [], "MiniMVP");
  331. $core.addMethod(
  332. $core.method({
  333. selector: "frameContents:",
  334. protocol: "rendering",
  335. //>>excludeStart("ide", pragmas.excludeIdeData);
  336. args: ["anObject"],
  337. source: "frameContents: anObject\x0a\x09self frame contents: anObject",
  338. referencedClasses: [],
  339. //>>excludeEnd("ide");
  340. pragmas: [],
  341. messageSends: ["contents:", "frame"]
  342. }, function ($methodClass){ return function (anObject){
  343. var self=this,$self=this;
  344. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  345. return $core.withContext(function($ctx1) {
  346. //>>excludeEnd("ctx");
  347. $recv($self._frame())._contents_(anObject);
  348. return self;
  349. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  350. }, function($ctx1) {$ctx1.fill(self,"frameContents:",{anObject:anObject})});
  351. //>>excludeEnd("ctx");
  352. }; }),
  353. $globals.AmberWebLeafPresenter);
  354. $core.addClass("SilkLeafPresenter", $globals.MiniLeafPresenter, [], "MiniMVP");
  355. $core.addMethod(
  356. $core.method({
  357. selector: "frameContents:",
  358. protocol: "rendering",
  359. //>>excludeStart("ide", pragmas.excludeIdeData);
  360. args: ["anObject"],
  361. source: "frameContents: anObject\x0a\x09self frame resetContents; << anObject",
  362. referencedClasses: [],
  363. //>>excludeEnd("ide");
  364. pragmas: [],
  365. messageSends: ["resetContents", "frame", "<<"]
  366. }, function ($methodClass){ return function (anObject){
  367. var self=this,$self=this;
  368. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  369. return $core.withContext(function($ctx1) {
  370. //>>excludeEnd("ctx");
  371. var $1;
  372. $1=$self._frame();
  373. $recv($1)._resetContents();
  374. $recv($1).__lt_lt(anObject);
  375. return self;
  376. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  377. }, function($ctx1) {$ctx1.fill(self,"frameContents:",{anObject:anObject})});
  378. //>>excludeEnd("ctx");
  379. }; }),
  380. $globals.SilkLeafPresenter);
  381. $core.addClass("MiniParentPresenter", $globals.MiniPresenter, [], "MiniMVP");
  382. $core.addMethod(
  383. $core.method({
  384. selector: "childPresenters",
  385. protocol: "accessing",
  386. //>>excludeStart("ide", pragmas.excludeIdeData);
  387. args: [],
  388. source: "childPresenters\x0a\x09self subclassResponsibility",
  389. referencedClasses: [],
  390. //>>excludeEnd("ide");
  391. pragmas: [],
  392. messageSends: ["subclassResponsibility"]
  393. }, function ($methodClass){ return function (){
  394. var self=this,$self=this;
  395. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  396. return $core.withContext(function($ctx1) {
  397. //>>excludeEnd("ctx");
  398. $self._subclassResponsibility();
  399. return self;
  400. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  401. }, function($ctx1) {$ctx1.fill(self,"childPresenters",{})});
  402. //>>excludeEnd("ctx");
  403. }; }),
  404. $globals.MiniParentPresenter);
  405. $core.addMethod(
  406. $core.method({
  407. selector: "present:",
  408. protocol: "actions",
  409. //>>excludeStart("ide", pragmas.excludeIdeData);
  410. args: ["anObject"],
  411. source: "present: anObject\x0a\x09self childPresenters do: [ :each | each refresh ]",
  412. referencedClasses: [],
  413. //>>excludeEnd("ide");
  414. pragmas: [],
  415. messageSends: ["do:", "childPresenters", "refresh"]
  416. }, function ($methodClass){ return function (anObject){
  417. var self=this,$self=this;
  418. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  419. return $core.withContext(function($ctx1) {
  420. //>>excludeEnd("ctx");
  421. $recv($self._childPresenters())._do_((function(each){
  422. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  423. return $core.withContext(function($ctx2) {
  424. //>>excludeEnd("ctx");
  425. return $recv(each)._refresh();
  426. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  427. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  428. //>>excludeEnd("ctx");
  429. }));
  430. return self;
  431. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  432. }, function($ctx1) {$ctx1.fill(self,"present:",{anObject:anObject})});
  433. //>>excludeEnd("ctx");
  434. }; }),
  435. $globals.MiniParentPresenter);
  436. $core.addMethod(
  437. $core.method({
  438. selector: "in:",
  439. protocol: "instance creation",
  440. //>>excludeStart("ide", pragmas.excludeIdeData);
  441. args: ["aDommable"],
  442. source: "in: aDommable\x0a\x09^ super shows: [ true ] in: aDommable",
  443. referencedClasses: [],
  444. //>>excludeEnd("ide");
  445. pragmas: [],
  446. messageSends: ["shows:in:"]
  447. }, function ($methodClass){ return function (aDommable){
  448. var self=this,$self=this;
  449. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  450. return $core.withContext(function($ctx1) {
  451. //>>excludeEnd("ctx");
  452. return [(
  453. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  454. $ctx1.supercall = true,
  455. //>>excludeEnd("ctx");
  456. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._shows_in_.call($self,(function(){
  457. return true;
  458. }),aDommable))
  459. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  460. ,$ctx1.supercall = false
  461. //>>excludeEnd("ctx");
  462. ][0];
  463. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  464. }, function($ctx1) {$ctx1.fill(self,"in:",{aDommable:aDommable})});
  465. //>>excludeEnd("ctx");
  466. }; }),
  467. $globals.MiniParentPresenter.a$cls);
  468. });