Trapped-Frontend.deploy.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766
  1. smalltalk.addPackage('Trapped-Frontend', {});
  2. smalltalk.addClass('TrappedBinder', smalltalk.Object, ['brush'], 'Trapped-Frontend');
  3. smalltalk.addMethod(
  4. "_brush_",
  5. smalltalk.method({
  6. selector: "brush:",
  7. fn: function (aTagBrush){
  8. var self=this;
  9. self["@brush"]=aTagBrush;
  10. return self}
  11. }),
  12. smalltalk.TrappedBinder);
  13. smalltalk.addMethod(
  14. "_installFor_",
  15. smalltalk.method({
  16. selector: "installFor:",
  17. fn: function (path){
  18. var self=this;
  19. smalltalk.send(self["@brush"],"_trap_read_",[path,smalltalk.send(self,"_showBlock",[])]);
  20. return self}
  21. }),
  22. smalltalk.TrappedBinder);
  23. smalltalk.addMethod(
  24. "_prim_",
  25. smalltalk.method({
  26. selector: "prim:",
  27. fn: function (anObject){
  28. var self=this;
  29. return anObject.valueOf();
  30. ;
  31. return self}
  32. }),
  33. smalltalk.TrappedBinder);
  34. smalltalk.addMethod(
  35. "_showBlock",
  36. smalltalk.method({
  37. selector: "showBlock",
  38. fn: function (){
  39. var self=this;
  40. var $3,$2,$1;
  41. $1=(function(model){
  42. smalltalk.send(self["@brush"],"_empty",[]);
  43. if(($receiver = model) == nil || $receiver == undefined){
  44. $3=(function(){
  45. });
  46. } else {
  47. $3=model;
  48. };
  49. $2=smalltalk.send(self["@brush"],"_with_",[$3]);
  50. return $2;
  51. });
  52. return $1;
  53. }
  54. }),
  55. smalltalk.TrappedBinder);
  56. smalltalk.addClass('TrappedAttrBinder', smalltalk.TrappedBinder, ['attr'], 'Trapped-Frontend');
  57. smalltalk.addMethod(
  58. "_attr_",
  59. smalltalk.method({
  60. selector: "attr:",
  61. fn: function (aString){
  62. var self=this;
  63. self["@attr"]=aString;
  64. return self}
  65. }),
  66. smalltalk.TrappedAttrBinder);
  67. smalltalk.addMethod(
  68. "_installFor_",
  69. smalltalk.method({
  70. selector: "installFor:",
  71. fn: function (path){
  72. var self=this;
  73. smalltalk.send(self,"_installFor_",[path],smalltalk.TrappedBinder);
  74. smalltalk.send(path,"_trapDescend_",[(function(){
  75. var snap;
  76. snap=smalltalk.send(smalltalk.send((smalltalk.Trapped || Trapped),"_current",[]),"_snapshot",[]);
  77. snap;
  78. return smalltalk.send(self["@brush"],"_onChange_",[(function(){
  79. return smalltalk.send(smalltalk.send(snap,"_model",[]),"_modify_do_",[smalltalk.send(smalltalk.send(snap,"_path",[]),"_allButFirst",[]),(function(){
  80. return smalltalk.send(smalltalk.send(smalltalk.send(self["@brush"],"_asJQuery",[]),"_attr_",["checked"]),"_notNil",[]);
  81. })]);
  82. })]);
  83. })]);
  84. return self}
  85. }),
  86. smalltalk.TrappedAttrBinder);
  87. smalltalk.addMethod(
  88. "_showBlock",
  89. smalltalk.method({
  90. selector: "showBlock",
  91. fn: function (){
  92. var self=this;
  93. var $1;
  94. $1=(function(model){
  95. return smalltalk.send(smalltalk.send(self["@brush"],"_asJQuery",[]),"_attr_put_",[self["@attr"],smalltalk.send(self,"_prim_",[model])]);
  96. });
  97. return $1;
  98. }
  99. }),
  100. smalltalk.TrappedAttrBinder);
  101. smalltalk.addClass('TrappedDispatcher', smalltalk.KeyedPubSubBase, [], 'Trapped-Frontend');
  102. smalltalk.addMethod(
  103. "_subscriptionKey_block_",
  104. smalltalk.method({
  105. selector: "subscriptionKey:block:",
  106. fn: function (key,aBlock){
  107. var self=this;
  108. var $2,$3,$1;
  109. $2=smalltalk.send((smalltalk.TrappedSubscription || TrappedSubscription),"_new",[]);
  110. smalltalk.send($2,"_key_block_",[key,aBlock]);
  111. $3=smalltalk.send($2,"_yourself",[]);
  112. $1=$3;
  113. return $1;
  114. }
  115. }),
  116. smalltalk.TrappedDispatcher);
  117. smalltalk.addClass('TrappedDumbView', smalltalk.Widget, [], 'Trapped-Frontend');
  118. smalltalk.addMethod(
  119. "_renderOn_",
  120. smalltalk.method({
  121. selector: "renderOn:",
  122. fn: function (html){
  123. var self=this;
  124. smalltalk.send(smalltalk.send(html,"_root",[]),"_trap_",[[]]);
  125. return self}
  126. }),
  127. smalltalk.TrappedDumbView);
  128. smalltalk.addClass('TrappedModelWrapper', smalltalk.Object, ['dispatcher', 'payload'], 'Trapped-Frontend');
  129. smalltalk.addMethod(
  130. "_dispatcher",
  131. smalltalk.method({
  132. selector: "dispatcher",
  133. fn: function (){
  134. var self=this;
  135. return self["@dispatcher"];
  136. }
  137. }),
  138. smalltalk.TrappedModelWrapper);
  139. smalltalk.addMethod(
  140. "_dispatcher_",
  141. smalltalk.method({
  142. selector: "dispatcher:",
  143. fn: function (aDispatcher){
  144. var self=this;
  145. self["@dispatcher"]=aDispatcher;
  146. return self}
  147. }),
  148. smalltalk.TrappedModelWrapper);
  149. smalltalk.addMethod(
  150. "_model_",
  151. smalltalk.method({
  152. selector: "model:",
  153. fn: function (anObject){
  154. var self=this;
  155. self["@payload"]=anObject;
  156. smalltalk.send(smalltalk.send(self,"_dispatcher",[]),"_changed_",[[]]);
  157. return self}
  158. }),
  159. smalltalk.TrappedModelWrapper);
  160. smalltalk.addMethod(
  161. "_name",
  162. smalltalk.method({
  163. selector: "name",
  164. fn: function (){
  165. var self=this;
  166. var $1;
  167. $1=smalltalk.send(smalltalk.send(self,"_class",[]),"_name",[]);
  168. return $1;
  169. }
  170. }),
  171. smalltalk.TrappedModelWrapper);
  172. smalltalk.addMethod(
  173. "_start",
  174. smalltalk.method({
  175. selector: "start",
  176. fn: function (){
  177. var self=this;
  178. smalltalk.send(smalltalk.send((smalltalk.Trapped || Trapped),"_current",[]),"_register_name_",[self,smalltalk.send(self,"_name",[])]);
  179. return self}
  180. }),
  181. smalltalk.TrappedModelWrapper);
  182. smalltalk.addMethod(
  183. "_watch_do_",
  184. smalltalk.method({
  185. selector: "watch:do:",
  186. fn: function (path,aBlock){
  187. var self=this;
  188. smalltalk.send(smalltalk.send(self,"_dispatcher",[]),"_on_hook_",[path,(function(){
  189. return smalltalk.send(self,"_read_do_",[path,aBlock]);
  190. })]);
  191. return self}
  192. }),
  193. smalltalk.TrappedModelWrapper);
  194. smalltalk.addMethod(
  195. "_start",
  196. smalltalk.method({
  197. selector: "start",
  198. fn: function (){
  199. var self=this;
  200. var $2,$3,$1;
  201. $2=smalltalk.send(self,"_new",[]);
  202. smalltalk.send($2,"_start",[]);
  203. $3=smalltalk.send($2,"_yourself",[]);
  204. $1=$3;
  205. return $1;
  206. }
  207. }),
  208. smalltalk.TrappedModelWrapper.klass);
  209. smalltalk.addClass('TrappedMWDirect', smalltalk.TrappedModelWrapper, [], 'Trapped-Frontend');
  210. smalltalk.addMethod(
  211. "_modify_do_",
  212. smalltalk.method({
  213. selector: "modify:do:",
  214. fn: function (path,aBlock){
  215. var self=this;
  216. var newValue;
  217. var eavModel;
  218. eavModel=smalltalk.send(path,"_asEavModel",[]);
  219. newValue=smalltalk.send(aBlock,"_value_",[smalltalk.send(eavModel,"_on_",[self["@payload"]])]);
  220. smalltalk.send((function(){
  221. return smalltalk.send(eavModel,"_on_put_",[self["@payload"],newValue]);
  222. }),"_ensure_",[(function(){
  223. return smalltalk.send(smalltalk.send(self,"_dispatcher",[]),"_changed_",[path]);
  224. })]);
  225. return self}
  226. }),
  227. smalltalk.TrappedMWDirect);
  228. smalltalk.addMethod(
  229. "_read_do_",
  230. smalltalk.method({
  231. selector: "read:do:",
  232. fn: function (path,aBlock){
  233. var self=this;
  234. var eavModel;
  235. eavModel=smalltalk.send(path,"_asEavModel",[]);
  236. smalltalk.send(aBlock,"_value_",[smalltalk.send(eavModel,"_on_",[self["@payload"]])]);
  237. return self}
  238. }),
  239. smalltalk.TrappedMWDirect);
  240. smalltalk.addClass('TrappedMWIsolated', smalltalk.TrappedModelWrapper, [], 'Trapped-Frontend');
  241. smalltalk.addMethod(
  242. "_model_",
  243. smalltalk.method({
  244. selector: "model:",
  245. fn: function (anObject){
  246. var self=this;
  247. smalltalk.send(self,"_model_",[smalltalk.send((smalltalk.Isolator || Isolator),"_on_",[anObject])],smalltalk.TrappedModelWrapper);
  248. return self}
  249. }),
  250. smalltalk.TrappedMWIsolated);
  251. smalltalk.addMethod(
  252. "_modify_do_",
  253. smalltalk.method({
  254. selector: "modify:do:",
  255. fn: function (path,aBlock){
  256. var self=this;
  257. var eavModel;
  258. eavModel=smalltalk.send(smalltalk.send([smalltalk.symbolFor("root")],"__comma",[path]),"_asEavModel",[]);
  259. smalltalk.send((function(){
  260. return smalltalk.send(self["@payload"],"_model_modify_",[eavModel,aBlock]);
  261. }),"_ensure_",[(function(){
  262. return smalltalk.send(smalltalk.send(self,"_dispatcher",[]),"_changed_",[path]);
  263. })]);
  264. return self}
  265. }),
  266. smalltalk.TrappedMWIsolated);
  267. smalltalk.addMethod(
  268. "_read_do_",
  269. smalltalk.method({
  270. selector: "read:do:",
  271. fn: function (path,aBlock){
  272. var self=this;
  273. var eavModel;
  274. eavModel=smalltalk.send(smalltalk.send([smalltalk.symbolFor("root")],"__comma",[path]),"_asEavModel",[]);
  275. smalltalk.send(self["@payload"],"_model_read_",[eavModel,aBlock]);
  276. return self}
  277. }),
  278. smalltalk.TrappedMWIsolated);
  279. smalltalk.addClass('TrappedSingleton', smalltalk.Object, [], 'Trapped-Frontend');
  280. smalltalk.addMethod(
  281. "_start",
  282. smalltalk.method({
  283. selector: "start",
  284. fn: function (){
  285. var self=this;
  286. var $1;
  287. $1=smalltalk.send(self,"_subclassResponsibility",[]);
  288. return $1;
  289. }
  290. }),
  291. smalltalk.TrappedSingleton);
  292. smalltalk.TrappedSingleton.klass.iVarNames = ['current'];
  293. smalltalk.addMethod(
  294. "_current",
  295. smalltalk.method({
  296. selector: "current",
  297. fn: function (){
  298. var self=this;
  299. var $1;
  300. if(($receiver = self["@current"]) == nil || $receiver == undefined){
  301. self["@current"]=smalltalk.send(self,"_new",[]);
  302. $1=self["@current"];
  303. } else {
  304. $1=self["@current"];
  305. };
  306. return $1;
  307. }
  308. }),
  309. smalltalk.TrappedSingleton.klass);
  310. smalltalk.addMethod(
  311. "_start",
  312. smalltalk.method({
  313. selector: "start",
  314. fn: function (){
  315. var self=this;
  316. smalltalk.send(smalltalk.send(self,"_current",[]),"_start",[]);
  317. return self}
  318. }),
  319. smalltalk.TrappedSingleton.klass);
  320. smalltalk.addClass('Trapped', smalltalk.TrappedSingleton, ['registry'], 'Trapped-Frontend');
  321. smalltalk.addMethod(
  322. "_binder_",
  323. smalltalk.method({
  324. selector: "binder:",
  325. fn: function (aTagBrush){
  326. var self=this;
  327. var $1,$2,$3,$5,$4;
  328. var binder;
  329. var tag;
  330. tag=smalltalk.send(smalltalk.send(aTagBrush,"_element",[]),"_nodeName",[]);
  331. $1=smalltalk.send(tag,"__eq",["INPUT"]);
  332. if(smalltalk.assert($1)){
  333. $2=smalltalk.send((smalltalk.TrappedAttrBinder || TrappedAttrBinder),"_new",[]);
  334. smalltalk.send($2,"_attr_",["checked"]);
  335. $3=smalltalk.send($2,"_yourself",[]);
  336. binder=$3;
  337. binder;
  338. };
  339. if(($receiver = binder) == nil || $receiver == undefined){
  340. binder=smalltalk.send((smalltalk.TrappedBinder || TrappedBinder),"_new",[]);
  341. binder;
  342. } else {
  343. binder;
  344. };
  345. smalltalk.send(binder,"_brush_",[aTagBrush]);
  346. $5=smalltalk.send(binder,"_yourself",[]);
  347. $4=$5;
  348. return $4;
  349. }
  350. }),
  351. smalltalk.Trapped);
  352. smalltalk.addMethod(
  353. "_byName_",
  354. smalltalk.method({
  355. selector: "byName:",
  356. fn: function (aString){
  357. var self=this;
  358. var $1;
  359. $1=smalltalk.send(self["@registry"],"_at_",[aString]);
  360. return $1;
  361. }
  362. }),
  363. smalltalk.Trapped);
  364. smalltalk.addMethod(
  365. "_initialize",
  366. smalltalk.method({
  367. selector: "initialize",
  368. fn: function (){
  369. var self=this;
  370. smalltalk.send(self,"_initialize",[],smalltalk.TrappedSingleton);
  371. self["@registry"]=smalltalk.HashedCollection._fromPairs_([]);
  372. return self}
  373. }),
  374. smalltalk.Trapped);
  375. smalltalk.addMethod(
  376. "_register_name_",
  377. smalltalk.method({
  378. selector: "register:name:",
  379. fn: function (aFly,aString){
  380. var self=this;
  381. smalltalk.send(self["@registry"],"_at_put_",[aString,aFly]);
  382. return self}
  383. }),
  384. smalltalk.Trapped);
  385. smalltalk.addMethod(
  386. "_snapshot",
  387. smalltalk.method({
  388. selector: "snapshot",
  389. fn: function (){
  390. var self=this;
  391. var $1;
  392. var path;
  393. var model;
  394. path=smalltalk.send(smalltalk.send((smalltalk.TrappedPathStack || TrappedPathStack),"_current",[]),"_elements",[]);
  395. model=smalltalk.send(self,"_byName_",[smalltalk.send(path,"_first",[])]);
  396. $1=smalltalk.send(smalltalk.send((smalltalk.TrappedSnapshot || TrappedSnapshot),"_new",[]),"_path_model_",[path,model]);
  397. return $1;
  398. }
  399. }),
  400. smalltalk.Trapped);
  401. smalltalk.addMethod(
  402. "_start",
  403. smalltalk.method({
  404. selector: "start",
  405. fn: function (){
  406. var self=this;
  407. var $1;
  408. smalltalk.send(smalltalk.send("[data-trap]","_asJQuery",[]),"_each_",[(function(index,elem){
  409. var trap;
  410. var jq;
  411. var viewName;
  412. var modelName;
  413. var tokens;
  414. var path;
  415. jq=smalltalk.send(elem,"_asJQuery",[]);
  416. jq;
  417. trap=smalltalk.send(jq,"_attr_",["data-trap"]);
  418. trap;
  419. tokens=smalltalk.send(trap,"_tokenize_",[":"]);
  420. tokens;
  421. $1=smalltalk.send(smalltalk.send(tokens,"_size",[]),"__eq",[(1)]);
  422. if(smalltalk.assert($1)){
  423. tokens=smalltalk.send(["TrappedDumbView"],"__comma",[tokens]);
  424. tokens;
  425. };
  426. viewName=smalltalk.send(tokens,"_first",[]);
  427. viewName;
  428. tokens=smalltalk.send(smalltalk.send(smalltalk.send(tokens,"_second",[]),"_tokenize_",[" "]),"_select_",[(function(each){
  429. return smalltalk.send(each,"_notEmpty",[]);
  430. })]);
  431. tokens;
  432. modelName=smalltalk.send(tokens,"_first",[]);
  433. modelName;
  434. path=smalltalk.send((smalltalk.Trapped || Trapped),"_parse_",[smalltalk.send(tokens,"_allButFirst",[])]);
  435. path;
  436. return smalltalk.send(smalltalk.send([modelName],"__comma",[path]),"_trapDescend_",[(function(){
  437. return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send((smalltalk.Smalltalk || Smalltalk),"_current",[]),"_at_",[viewName]),"_new",[]),"_appendToJQuery_",[jq]);
  438. })]);
  439. })]);
  440. return self}
  441. }),
  442. smalltalk.Trapped);
  443. smalltalk.addMethod(
  444. "_parse_",
  445. smalltalk.method({
  446. selector: "parse:",
  447. fn: function (anArray){
  448. var self=this;
  449. var $2,$3,$1;
  450. $1=smalltalk.send(anArray,"_collect_",[(function(each){
  451. var asNum;
  452. asNum = parseInt(each);
  453. ;
  454. $2=smalltalk.send(asNum,"__eq",[asNum]);
  455. if(smalltalk.assert($2)){
  456. return asNum;
  457. } else {
  458. $3=smalltalk.send(smalltalk.send(each,"_first",[]),"__eq",["#"]);
  459. if(smalltalk.assert($3)){
  460. return smalltalk.send(smalltalk.send(each,"_allButFirst",[]),"_asSymbol",[]);
  461. } else {
  462. return each;
  463. };
  464. };
  465. })]);
  466. return $1;
  467. }
  468. }),
  469. smalltalk.Trapped.klass);
  470. smalltalk.addClass('TrappedPathStack', smalltalk.TrappedSingleton, ['elements'], 'Trapped-Frontend');
  471. smalltalk.addMethod(
  472. "_append_do_",
  473. smalltalk.method({
  474. selector: "append:do:",
  475. fn: function (anArray,aBlock){
  476. var self=this;
  477. smalltalk.send(self,"_with_do_",[smalltalk.send(self["@elements"],"__comma",[anArray]),aBlock]);
  478. return self}
  479. }),
  480. smalltalk.TrappedPathStack);
  481. smalltalk.addMethod(
  482. "_elements",
  483. smalltalk.method({
  484. selector: "elements",
  485. fn: function (){
  486. var self=this;
  487. return self["@elements"];
  488. }
  489. }),
  490. smalltalk.TrappedPathStack);
  491. smalltalk.addMethod(
  492. "_initialize",
  493. smalltalk.method({
  494. selector: "initialize",
  495. fn: function (){
  496. var self=this;
  497. smalltalk.send(self,"_initialize",[],smalltalk.TrappedSingleton);
  498. self["@elements"]=[];
  499. return self}
  500. }),
  501. smalltalk.TrappedPathStack);
  502. smalltalk.addMethod(
  503. "_with_do_",
  504. smalltalk.method({
  505. selector: "with:do:",
  506. fn: function (anArray,aBlock){
  507. var self=this;
  508. var old;
  509. old=self["@elements"];
  510. smalltalk.send((function(){
  511. self["@elements"]=anArray;
  512. self["@elements"];
  513. return smalltalk.send(aBlock,"_value",[]);
  514. }),"_ensure_",[(function(){
  515. self["@elements"]=old;
  516. return self["@elements"];
  517. })]);
  518. return self}
  519. }),
  520. smalltalk.TrappedPathStack);
  521. smalltalk.addClass('TrappedSnapshot', smalltalk.Object, ['path', 'model'], 'Trapped-Frontend');
  522. smalltalk.addMethod(
  523. "_do_",
  524. smalltalk.method({
  525. selector: "do:",
  526. fn: function (aBlock){
  527. var self=this;
  528. smalltalk.send(smalltalk.send((smalltalk.TrappedPathStack || TrappedPathStack),"_current",[]),"_with_do_",[self["@path"],(function(){
  529. return smalltalk.send(aBlock,"_value_",[self["@model"]]);
  530. })]);
  531. return self}
  532. }),
  533. smalltalk.TrappedSnapshot);
  534. smalltalk.addMethod(
  535. "_model",
  536. smalltalk.method({
  537. selector: "model",
  538. fn: function (){
  539. var self=this;
  540. return self["@model"];
  541. }
  542. }),
  543. smalltalk.TrappedSnapshot);
  544. smalltalk.addMethod(
  545. "_path",
  546. smalltalk.method({
  547. selector: "path",
  548. fn: function (){
  549. var self=this;
  550. return self["@path"];
  551. }
  552. }),
  553. smalltalk.TrappedSnapshot);
  554. smalltalk.addMethod(
  555. "_path_model_",
  556. smalltalk.method({
  557. selector: "path:model:",
  558. fn: function (anArray,aTrappedMW){
  559. var self=this;
  560. self["@path"]=anArray;
  561. self["@model"]=aTrappedMW;
  562. return self}
  563. }),
  564. smalltalk.TrappedSnapshot);
  565. smalltalk.addClass('TrappedSubscription', smalltalk.KeyedSubscriptionBase, [], 'Trapped-Frontend');
  566. smalltalk.addMethod(
  567. "_accepts_",
  568. smalltalk.method({
  569. selector: "accepts:",
  570. fn: function (aKey){
  571. var self=this;
  572. var $1;
  573. $1=smalltalk.send(smalltalk.send(smalltalk.send(aKey,"_size",[]),"__lt_eq",[smalltalk.send(self["@key"],"_size",[])]),"_and_",[(function(){
  574. return smalltalk.send(aKey,"__eq",[smalltalk.send(self["@key"],"_copyFrom_to_",[(1),smalltalk.send(aKey,"_size",[])])]);
  575. })]);
  576. return $1;
  577. }
  578. }),
  579. smalltalk.TrappedSubscription);
  580. smalltalk.addMethod(
  581. "_trapDescend_",
  582. smalltalk.method({
  583. selector: "trapDescend:",
  584. fn: function (aBlock){
  585. var self=this;
  586. smalltalk.send(smalltalk.send((smalltalk.TrappedPathStack || TrappedPathStack),"_current",[]),"_append_do_",[self,aBlock]);
  587. return self}
  588. }),
  589. smalltalk.Array);
  590. smalltalk.addMethod(
  591. "_trapDescend_",
  592. smalltalk.method({
  593. selector: "trapDescend:",
  594. fn: function (aBlock){
  595. var self=this;
  596. smalltalk.send(smalltalk.send((smalltalk.TrappedPathStack || TrappedPathStack),"_current",[]),"_append_do_",[self,aBlock]);
  597. return self}
  598. }),
  599. smalltalk.Array);
  600. smalltalk.addMethod(
  601. "_trap_",
  602. smalltalk.method({
  603. selector: "trap:",
  604. fn: function (path){
  605. var self=this;
  606. smalltalk.send(smalltalk.send(smalltalk.send((smalltalk.Trapped || Trapped),"_current",[]),"_binder_",[self]),"_installFor_",[path]);
  607. return self}
  608. }),
  609. smalltalk.TagBrush);
  610. smalltalk.addMethod(
  611. "_trap_read_",
  612. smalltalk.method({
  613. selector: "trap:read:",
  614. fn: function (path,aBlock){
  615. var self=this;
  616. var $1;
  617. smalltalk.send(path,"_trapDescend_",[(function(){
  618. var snap;
  619. snap=smalltalk.send(smalltalk.send((smalltalk.Trapped || Trapped),"_current",[]),"_snapshot",[]);
  620. snap;
  621. return smalltalk.send(smalltalk.send(snap,"_model",[]),"_watch_do_",[smalltalk.send(smalltalk.send(snap,"_path",[]),"_allButFirst",[]),(function(data){
  622. $1=smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self,"_asJQuery",[]),"_closest_",["html"]),"_toArray",[]),"_isEmpty",[]);
  623. if(smalltalk.assert($1)){
  624. smalltalk.send((smalltalk.KeyedPubSubUnsubscribe || KeyedPubSubUnsubscribe),"_signal",[]);
  625. };
  626. return smalltalk.send(snap,"_do_",[(function(){
  627. return smalltalk.send(self,"_with_",[(function(html){
  628. return smalltalk.send(aBlock,"_value_value_",[data,html]);
  629. })]);
  630. })]);
  631. })]);
  632. })]);
  633. return self}
  634. }),
  635. smalltalk.TagBrush);
  636. smalltalk.addMethod(
  637. "_trap_toggle_",
  638. smalltalk.method({
  639. selector: "trap:toggle:",
  640. fn: function (path,aBlock){
  641. var self=this;
  642. smalltalk.send(self,"_trap_toggle_ifNotPresent_",[path,aBlock,(function(){
  643. return smalltalk.send(smalltalk.send(self,"_asJQuery",[]),"_hide",[]);
  644. })]);
  645. return self}
  646. }),
  647. smalltalk.TagBrush);
  648. smalltalk.addMethod(
  649. "_trap_toggle_ifNotPresent_",
  650. smalltalk.method({
  651. selector: "trap:toggle:ifNotPresent:",
  652. fn: function (path,aBlock,anotherBlock){
  653. var self=this;
  654. var $1,$2,$3,$4;
  655. var shown;
  656. shown=nil;
  657. smalltalk.send(self,"_trap_read_",[path,(function(data,html){
  658. $1=smalltalk.send(shown,"__eq",[smalltalk.send(data,"_notNil",[])]);
  659. if(! smalltalk.assert($1)){
  660. shown=smalltalk.send(data,"_notNil",[]);
  661. shown;
  662. $2=smalltalk.send(self,"_asJQuery",[]);
  663. smalltalk.send($2,"_empty",[]);
  664. $3=smalltalk.send($2,"_show",[]);
  665. $3;
  666. if(smalltalk.assert(shown)){
  667. $4=aBlock;
  668. } else {
  669. $4=anotherBlock;
  670. };
  671. return smalltalk.send($4,"_value_value_",[data,html]);
  672. };
  673. })]);
  674. return self}
  675. }),
  676. smalltalk.TagBrush);
  677. smalltalk.addMethod(
  678. "_trapIter_tag_do_",
  679. smalltalk.method({
  680. selector: "trapIter:tag:do:",
  681. fn: function (path,aSymbol,aBlock){
  682. var self=this;
  683. smalltalk.send(self,"_trap_read_",[path,(function(model,html){
  684. smalltalk.send(smalltalk.send(html,"_root",[]),"_empty",[]);
  685. if(($receiver = model) == nil || $receiver == undefined){
  686. return model;
  687. } else {
  688. return smalltalk.send(model,"_withIndexDo_",[(function(item,i){
  689. return smalltalk.send(smalltalk.send(html,"_perform_",[aSymbol]),"_trap_read_",[[i],aBlock]);
  690. })]);
  691. };
  692. })]);
  693. return self}
  694. }),
  695. smalltalk.TagBrush);