DOMite.js 44 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327
  1. define(["amber/boot"
  2. //>>excludeStart("imports", pragmas.excludeImports);
  3. , "amber_core/Platform-DOM"
  4. //>>excludeEnd("imports");
  5. , "amber_core/Kernel-Collections"], function($boot
  6. //>>excludeStart("imports", pragmas.excludeImports);
  7. //>>excludeEnd("imports");
  8. ){"use strict";
  9. if(!("nilAsValue" in $boot))$boot.nilAsValue=$boot.nilAsReceiver;
  10. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  11. $core.addPackage("DOMite");
  12. ($core.packageDescriptors||$core.packages)["DOMite"].innerEval = function (expr) { return eval(expr); };
  13. ($core.packageDescriptors||$core.packages)["DOMite"].imports = ["amber_core/Platform-DOM"];
  14. ($core.packageDescriptors||$core.packages)["DOMite"].transport = {"type":"amd","amdNamespace":"domite"};
  15. $core.addClass("Domite", $globals.ProtoStream, ["element", "reference"], "DOMite");
  16. //>>excludeStart("ide", pragmas.excludeIdeData);
  17. $globals.Domite.comment="I am (hopefully thin) wrapper around the notion of \x22cursor in a page\x22.\x0aI represent a DOM node _and_ a point where\x0ato insert new content into it.\x0a\x0aSo I play both the role of a container that inserts\x0aas well as the role of an element being inserted.\x0a\x0aI inherit from `ProtoStream`.\x0a\x0aCreation API:\x0a\x0a - `Domite new` creates an insertion point at the bottom of `<body>`.\x0a - `Domite newStream` is unique way to create pieces of content. It creates an instance \x22floating in thin air\x22 (wrapper around DOM DocumentFragment) that can be filled with any contents and then inserted in a page.\x0a - `Domite fromElement: aDomElement` wraps an element and set the cursor to its end.\x0a - `Domite newElement: 'div'` creates new `<div />` element (and returns it wrapped as a Domite).\x0a\x0aCSS selector API:\x0a\x0a - `Domite at: aSelector` wraps an element found by `document.querySelector(aSelector)`.\x0a - `aDomite at: aSelector` wraps an element found by `element.querySelector(aSelector)`.\x0a - `Domite allAt: aSelector` return collection of wrapped results of `document.querySelectorAll(aSelector)`.\x0a - `aDomite allAt: aSelector` return collection of wrapped results of `element.querySelectorAll(aSelector)`.\x0a\x0aManipulation API:\x0a\x0a - `aDomite << obj` inserts obj at the insertion point.\x0a - `aDomite resetContents` deletes contents of the wrapped element.\x0a - `aDomite cutUpTo: anotherDomite` removes contents between the two cursors (or up to the end of the receiver) and returns it collected in a wrapped DocumentFragment (IOW, you can `anotherPlace << theResult` to move the contents in the specified range).\x0a\x0a - `aDomite attrAt: aString` returns attribute of the wrapped element or nil.\x0a - `aDomite attrAt: aString put: anotherString` sets an attribute of the wrapped element.\x0a - `aDomite propAt: aString` returns JS property of the wrapped element or nil.\x0a - `aDomite propAt: aString put: anObject` sets JS property of the wrapped element.\x0a\x0aCursor moving API:\x0a\x0aTake this sample HTML, where `[n]` are just markers, not real content:\x0a\x0a```\x0a<body>\x0a <h1>header</h1>\x0a [4]<p>[2]Hello[1]world[3]</p>[5]\x0a <small>footer</small>\x0a</body>\x0a```\x0a\x0aIf `d` is a `Domite` representing `[1]`, then:\x0a\x0a - `d setToStart` would move `d` to be at `[2]`,\x0a - `d setToEnd` would move `d` to be at `[3]`,\x0a - `d setToBefore` would move `d` to be at `[4]`, and\x0a - `d setToAfter` would move `d` to be at `[5]`.\x0a\x0aIt is not presumed one would use `setToXxx`\x0ato actually move around in a single instance.\x0aIt is envisioned this API will be used mostly\x0ain combination with `copy`, like\x0a`afterMe := self copy setToAfter`.\x0a\x0aEvent API:\x0a\x0a - `aDomite on: aString bind: [ :ev | ... ]` binds a block to process an event.\x0a - `aDomite off: aString unbind: aBlock` unbinds the block from processing an event.\x0a - `aDomite fire: aString [detail: anObject]` triggers a CustomEvent with specified type and, optionally, a detail object.\x0a - `aDomite fireEvent: anEvent` triggers existing DOM Event object";
  18. //>>excludeEnd("ide");
  19. $core.addMethod(
  20. $core.method({
  21. selector: "=",
  22. protocol: "comparing",
  23. fn: function (aDomite){
  24. var self=this,$self=this;
  25. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26. return $core.withContext(function($ctx1) {
  27. //>>excludeEnd("ctx");
  28. var $3,$2,$5,$4,$6,$1;
  29. $3=$self._class();
  30. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31. $ctx1.sendIdx["class"]=1;
  32. //>>excludeEnd("ctx");
  33. $2=$recv($3).__eq($recv(aDomite)._class());
  34. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35. $ctx1.sendIdx["="]=1;
  36. //>>excludeEnd("ctx");
  37. $1=$recv($2)._and_((function(){
  38. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39. return $core.withContext(function($ctx2) {
  40. //>>excludeEnd("ctx");
  41. $5=$self._element();
  42. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43. $ctx2.sendIdx["element"]=1;
  44. //>>excludeEnd("ctx");
  45. $4=$recv($5).__eq($recv(aDomite)._element());
  46. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47. $ctx2.sendIdx["="]=2;
  48. //>>excludeEnd("ctx");
  49. return $recv($4)._and_((function(){
  50. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51. return $core.withContext(function($ctx3) {
  52. //>>excludeEnd("ctx");
  53. $6=$self._reference();
  54. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55. $ctx3.sendIdx["reference"]=1;
  56. //>>excludeEnd("ctx");
  57. return $recv($6).__eq($recv(aDomite)._reference());
  58. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  60. //>>excludeEnd("ctx");
  61. }));
  62. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  64. //>>excludeEnd("ctx");
  65. }));
  66. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67. $ctx1.sendIdx["and:"]=1;
  68. //>>excludeEnd("ctx");
  69. return $1;
  70. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71. }, function($ctx1) {$ctx1.fill(self,"=",{aDomite:aDomite},$globals.Domite)});
  72. //>>excludeEnd("ctx");
  73. },
  74. //>>excludeStart("ide", pragmas.excludeIdeData);
  75. args: ["aDomite"],
  76. source: "= aDomite\x0a\x09^ self class = aDomite class and: [\x0a\x09\x09self element = aDomite element and: [\x0a\x09\x09\x09self reference = aDomite reference ]]",
  77. referencedClasses: [],
  78. //>>excludeEnd("ide");
  79. messageSends: ["and:", "=", "class", "element", "reference"]
  80. }),
  81. $globals.Domite);
  82. $core.addMethod(
  83. $core.method({
  84. selector: "allAt:",
  85. protocol: "accessing",
  86. fn: function (aString){
  87. var self=this,$self=this;
  88. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89. return $core.withContext(function($ctx1) {
  90. //>>excludeEnd("ctx");
  91. return $recv($self._class())._wrap_($recv($globals.PlatformDom)._toArray_($recv($self._element())._querySelectorAll_(aString)));
  92. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93. }, function($ctx1) {$ctx1.fill(self,"allAt:",{aString:aString},$globals.Domite)});
  94. //>>excludeEnd("ctx");
  95. },
  96. //>>excludeStart("ide", pragmas.excludeIdeData);
  97. args: ["aString"],
  98. source: "allAt: aString\x0a\x09^ self class wrap: (PlatformDom toArray: (self element querySelectorAll: aString))",
  99. referencedClasses: ["PlatformDom"],
  100. //>>excludeEnd("ide");
  101. messageSends: ["wrap:", "class", "toArray:", "querySelectorAll:", "element"]
  102. }),
  103. $globals.Domite);
  104. $core.addMethod(
  105. $core.method({
  106. selector: "asDomNode",
  107. protocol: "converting",
  108. fn: function (){
  109. var self=this,$self=this;
  110. return $self["@element"];
  111. },
  112. //>>excludeStart("ide", pragmas.excludeIdeData);
  113. args: [],
  114. source: "asDomNode\x0a\x09^ element",
  115. referencedClasses: [],
  116. //>>excludeEnd("ide");
  117. messageSends: []
  118. }),
  119. $globals.Domite);
  120. $core.addMethod(
  121. $core.method({
  122. selector: "asJQuery",
  123. protocol: "converting",
  124. fn: function (){
  125. var self=this,$self=this;
  126. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  127. return $core.withContext(function($ctx1) {
  128. //>>excludeEnd("ctx");
  129. return $recv($self._asDomNode())._asJQuery();
  130. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  131. }, function($ctx1) {$ctx1.fill(self,"asJQuery",{},$globals.Domite)});
  132. //>>excludeEnd("ctx");
  133. },
  134. //>>excludeStart("ide", pragmas.excludeIdeData);
  135. args: [],
  136. source: "asJQuery\x0a\x09^ self asDomNode asJQuery",
  137. referencedClasses: [],
  138. //>>excludeEnd("ide");
  139. messageSends: ["asJQuery", "asDomNode"]
  140. }),
  141. $globals.Domite);
  142. $core.addMethod(
  143. $core.method({
  144. selector: "at:",
  145. protocol: "accessing",
  146. fn: function (aString){
  147. var self=this,$self=this;
  148. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  149. return $core.withContext(function($ctx1) {
  150. //>>excludeEnd("ctx");
  151. return $recv($self._class())._fromElement_($recv($self._element())._querySelector_(aString));
  152. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  153. }, function($ctx1) {$ctx1.fill(self,"at:",{aString:aString},$globals.Domite)});
  154. //>>excludeEnd("ctx");
  155. },
  156. //>>excludeStart("ide", pragmas.excludeIdeData);
  157. args: ["aString"],
  158. source: "at: aString\x0a\x09^ self class fromElement: (self element querySelector: aString)",
  159. referencedClasses: [],
  160. //>>excludeEnd("ide");
  161. messageSends: ["fromElement:", "class", "querySelector:", "element"]
  162. }),
  163. $globals.Domite);
  164. $core.addMethod(
  165. $core.method({
  166. selector: "atEnd",
  167. protocol: "testing",
  168. fn: function (){
  169. var self=this,$self=this;
  170. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  171. return $core.withContext(function($ctx1) {
  172. //>>excludeEnd("ctx");
  173. return $recv($self._reference())._isNil();
  174. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  175. }, function($ctx1) {$ctx1.fill(self,"atEnd",{},$globals.Domite)});
  176. //>>excludeEnd("ctx");
  177. },
  178. //>>excludeStart("ide", pragmas.excludeIdeData);
  179. args: [],
  180. source: "atEnd\x0a\x09^ self reference isNil",
  181. referencedClasses: [],
  182. //>>excludeEnd("ide");
  183. messageSends: ["isNil", "reference"]
  184. }),
  185. $globals.Domite);
  186. $core.addMethod(
  187. $core.method({
  188. selector: "atStart",
  189. protocol: "testing",
  190. fn: function (){
  191. var self=this,$self=this;
  192. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  193. return $core.withContext(function($ctx1) {
  194. //>>excludeEnd("ctx");
  195. return $recv($self._reference()).__eq($recv($self._element())._firstChild());
  196. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  197. }, function($ctx1) {$ctx1.fill(self,"atStart",{},$globals.Domite)});
  198. //>>excludeEnd("ctx");
  199. },
  200. //>>excludeStart("ide", pragmas.excludeIdeData);
  201. args: [],
  202. source: "atStart\x0a\x09^ self reference = self element firstChild",
  203. referencedClasses: [],
  204. //>>excludeEnd("ide");
  205. messageSends: ["=", "reference", "firstChild", "element"]
  206. }),
  207. $globals.Domite);
  208. $core.addMethod(
  209. $core.method({
  210. selector: "attrAt:",
  211. protocol: "accessing",
  212. fn: function (aString){
  213. var self=this,$self=this;
  214. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  215. return $core.withContext(function($ctx1) {
  216. //>>excludeEnd("ctx");
  217. var $1;
  218. $1=$recv($self["@element"])._hasAttribute_(aString);
  219. if($core.assert($1)){
  220. return $recv($self["@element"])._getAttribute_(aString);
  221. } else {
  222. return nil;
  223. }
  224. return self;
  225. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  226. }, function($ctx1) {$ctx1.fill(self,"attrAt:",{aString:aString},$globals.Domite)});
  227. //>>excludeEnd("ctx");
  228. },
  229. //>>excludeStart("ide", pragmas.excludeIdeData);
  230. args: ["aString"],
  231. source: "attrAt: aString\x0a\x09(element hasAttribute: aString)\x0a\x09\x09ifTrue: [ ^ element getAttribute: aString ]\x0a\x09\x09ifFalse: [ ^ nil ]",
  232. referencedClasses: [],
  233. //>>excludeEnd("ide");
  234. messageSends: ["ifTrue:ifFalse:", "hasAttribute:", "getAttribute:"]
  235. }),
  236. $globals.Domite);
  237. $core.addMethod(
  238. $core.method({
  239. selector: "attrAt:put:",
  240. protocol: "accessing",
  241. fn: function (aString,anotherString){
  242. var self=this,$self=this;
  243. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  244. return $core.withContext(function($ctx1) {
  245. //>>excludeEnd("ctx");
  246. $recv($self["@element"])._setAttribute_to_(aString,anotherString);
  247. return self;
  248. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  249. }, function($ctx1) {$ctx1.fill(self,"attrAt:put:",{aString:aString,anotherString:anotherString},$globals.Domite)});
  250. //>>excludeEnd("ctx");
  251. },
  252. //>>excludeStart("ide", pragmas.excludeIdeData);
  253. args: ["aString", "anotherString"],
  254. source: "attrAt: aString put: anotherString\x0a\x09element setAttribute: aString to: anotherString",
  255. referencedClasses: [],
  256. //>>excludeEnd("ide");
  257. messageSends: ["setAttribute:to:"]
  258. }),
  259. $globals.Domite);
  260. $core.addMethod(
  261. $core.method({
  262. selector: "back",
  263. protocol: "reading",
  264. fn: function (){
  265. var self=this,$self=this;
  266. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  267. return $core.withContext(function($ctx1) {
  268. //>>excludeEnd("ctx");
  269. var $1;
  270. $1=$self._atStart();
  271. if($core.assert($1)){
  272. return nil;
  273. } else {
  274. $self._setToBack();
  275. return $self._peek();
  276. }
  277. return self;
  278. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  279. }, function($ctx1) {$ctx1.fill(self,"back",{},$globals.Domite)});
  280. //>>excludeEnd("ctx");
  281. },
  282. //>>excludeStart("ide", pragmas.excludeIdeData);
  283. args: [],
  284. source: "back\x0a\x09self atStart\x0a\x09\x09ifTrue: [ ^ nil ]\x0a\x09\x09ifFalse: [ self setToBack. ^ self peek ]",
  285. referencedClasses: [],
  286. //>>excludeEnd("ide");
  287. messageSends: ["ifTrue:ifFalse:", "atStart", "setToBack", "peek"]
  288. }),
  289. $globals.Domite);
  290. $core.addMethod(
  291. $core.method({
  292. selector: "canSetToUpperLevel",
  293. protocol: "testing",
  294. fn: function (){
  295. var self=this,$self=this;
  296. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  297. return $core.withContext(function($ctx1) {
  298. //>>excludeEnd("ctx");
  299. return $recv($recv($self._element())._parentNode())._notNil();
  300. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  301. }, function($ctx1) {$ctx1.fill(self,"canSetToUpperLevel",{},$globals.Domite)});
  302. //>>excludeEnd("ctx");
  303. },
  304. //>>excludeStart("ide", pragmas.excludeIdeData);
  305. args: [],
  306. source: "canSetToUpperLevel\x0a\x09^ self element parentNode notNil",
  307. referencedClasses: [],
  308. //>>excludeEnd("ide");
  309. messageSends: ["notNil", "parentNode", "element"]
  310. }),
  311. $globals.Domite);
  312. $core.addMethod(
  313. $core.method({
  314. selector: "cutUpTo:",
  315. protocol: "deletion",
  316. fn: function (aDomite){
  317. var self=this,$self=this;
  318. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  319. return $core.withContext(function($ctx1) {
  320. //>>excludeEnd("ctx");
  321. var result = document.createDocumentFragment(),
  322. start = $self["@reference"],
  323. end = aDomite["@reference"],
  324. tmp;
  325. while (start && start != end) {
  326. tmp = start;
  327. start = start.nextSibling;
  328. result.appendChild(tmp);
  329. }
  330. $self["@reference"] = start;
  331. return $self._class()._fromElement_(result);;
  332. return self;
  333. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  334. }, function($ctx1) {$ctx1.fill(self,"cutUpTo:",{aDomite:aDomite},$globals.Domite)});
  335. //>>excludeEnd("ctx");
  336. },
  337. //>>excludeStart("ide", pragmas.excludeIdeData);
  338. args: ["aDomite"],
  339. source: "cutUpTo: aDomite\x0a<inlineJS: '\x0a\x09var result = document.createDocumentFragment(),\x0a\x09\x09start = $self[\x22@reference\x22],\x0a\x09\x09end = aDomite[\x22@reference\x22],\x0a\x09\x09tmp;\x0a\x09while (start && start != end) {\x0a\x09\x09tmp = start;\x0a\x09\x09start = start.nextSibling;\x0a\x09\x09result.appendChild(tmp);\x0a\x09}\x0a\x09$self[\x22@reference\x22] = start;\x0a\x09return $self._class()._fromElement_(result);\x0a'>",
  340. referencedClasses: [],
  341. //>>excludeEnd("ide");
  342. messageSends: []
  343. }),
  344. $globals.Domite);
  345. $core.addMethod(
  346. $core.method({
  347. selector: "element",
  348. protocol: "accessing",
  349. fn: function (){
  350. var self=this,$self=this;
  351. return $self["@element"];
  352. },
  353. //>>excludeStart("ide", pragmas.excludeIdeData);
  354. args: [],
  355. source: "element\x0a\x09^ element",
  356. referencedClasses: [],
  357. //>>excludeEnd("ide");
  358. messageSends: []
  359. }),
  360. $globals.Domite);
  361. $core.addMethod(
  362. $core.method({
  363. selector: "element:",
  364. protocol: "accessing",
  365. fn: function (anObject){
  366. var self=this,$self=this;
  367. $self["@element"]=anObject;
  368. return self;
  369. },
  370. //>>excludeStart("ide", pragmas.excludeIdeData);
  371. args: ["anObject"],
  372. source: "element: anObject\x0a\x09element := anObject",
  373. referencedClasses: [],
  374. //>>excludeEnd("ide");
  375. messageSends: []
  376. }),
  377. $globals.Domite);
  378. $core.addMethod(
  379. $core.method({
  380. selector: "fire:",
  381. protocol: "events",
  382. fn: function (aString){
  383. var self=this,$self=this;
  384. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  385. return $core.withContext(function($ctx1) {
  386. //>>excludeEnd("ctx");
  387. $self._fire_detail_(aString,nil._asJavaScriptObject());
  388. return self;
  389. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  390. }, function($ctx1) {$ctx1.fill(self,"fire:",{aString:aString},$globals.Domite)});
  391. //>>excludeEnd("ctx");
  392. },
  393. //>>excludeStart("ide", pragmas.excludeIdeData);
  394. args: ["aString"],
  395. source: "fire: aString\x0a\x09self fire: aString detail: nil asJavaScriptObject",
  396. referencedClasses: [],
  397. //>>excludeEnd("ide");
  398. messageSends: ["fire:detail:", "asJavaScriptObject"]
  399. }),
  400. $globals.Domite);
  401. $core.addMethod(
  402. $core.method({
  403. selector: "fire:detail:",
  404. protocol: "events",
  405. fn: function (aString,anObject){
  406. var self=this,$self=this;
  407. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  408. return $core.withContext(function($ctx1) {
  409. //>>excludeEnd("ctx");
  410. $self._fireEvent_($recv($globals.PlatformDom)._newCustomEvent_detail_(aString,anObject));
  411. return self;
  412. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  413. }, function($ctx1) {$ctx1.fill(self,"fire:detail:",{aString:aString,anObject:anObject},$globals.Domite)});
  414. //>>excludeEnd("ctx");
  415. },
  416. //>>excludeStart("ide", pragmas.excludeIdeData);
  417. args: ["aString", "anObject"],
  418. source: "fire: aString detail: anObject\x0a\x09self fireEvent: (\x0a\x09\x09PlatformDom newCustomEvent: aString detail: anObject)",
  419. referencedClasses: ["PlatformDom"],
  420. //>>excludeEnd("ide");
  421. messageSends: ["fireEvent:", "newCustomEvent:detail:"]
  422. }),
  423. $globals.Domite);
  424. $core.addMethod(
  425. $core.method({
  426. selector: "fireEvent:",
  427. protocol: "events",
  428. fn: function (anEvent){
  429. var self=this,$self=this;
  430. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  431. return $core.withContext(function($ctx1) {
  432. //>>excludeEnd("ctx");
  433. $recv($self._asDomNode())._dispatchEvent_(anEvent);
  434. return self;
  435. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  436. }, function($ctx1) {$ctx1.fill(self,"fireEvent:",{anEvent:anEvent},$globals.Domite)});
  437. //>>excludeEnd("ctx");
  438. },
  439. //>>excludeStart("ide", pragmas.excludeIdeData);
  440. args: ["anEvent"],
  441. source: "fireEvent: anEvent\x0a\x09self asDomNode dispatchEvent: anEvent",
  442. referencedClasses: [],
  443. //>>excludeEnd("ide");
  444. messageSends: ["dispatchEvent:", "asDomNode"]
  445. }),
  446. $globals.Domite);
  447. $core.addMethod(
  448. $core.method({
  449. selector: "initialize",
  450. protocol: "initialization",
  451. fn: function (){
  452. var self=this,$self=this;
  453. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  454. return $core.withContext(function($ctx1) {
  455. //>>excludeEnd("ctx");
  456. (
  457. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  458. $ctx1.supercall = true,
  459. //>>excludeEnd("ctx");
  460. ($globals.Domite.superclass||$boot.nilAsClass).fn.prototype._initialize.apply($self, []));
  461. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  462. $ctx1.supercall = false;
  463. //>>excludeEnd("ctx");;
  464. $self["@element"]=$recv(document)._body();
  465. $self["@reference"]=nil._asJavaScriptObject();
  466. return self;
  467. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  468. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.Domite)});
  469. //>>excludeEnd("ctx");
  470. },
  471. //>>excludeStart("ide", pragmas.excludeIdeData);
  472. args: [],
  473. source: "initialize\x0a\x09super initialize.\x0a\x09element := document body.\x0a\x09reference := nil asJavaScriptObject",
  474. referencedClasses: [],
  475. //>>excludeEnd("ide");
  476. messageSends: ["initialize", "body", "asJavaScriptObject"]
  477. }),
  478. $globals.Domite);
  479. $core.addMethod(
  480. $core.method({
  481. selector: "isInvalid",
  482. protocol: "testing",
  483. fn: function (){
  484. var self=this,$self=this;
  485. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  486. return $core.withContext(function($ctx1) {
  487. //>>excludeEnd("ctx");
  488. return $recv($self._element())._isNil();
  489. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  490. }, function($ctx1) {$ctx1.fill(self,"isInvalid",{},$globals.Domite)});
  491. //>>excludeEnd("ctx");
  492. },
  493. //>>excludeStart("ide", pragmas.excludeIdeData);
  494. args: [],
  495. source: "isInvalid\x0a\x09^ self element isNil",
  496. referencedClasses: [],
  497. //>>excludeEnd("ide");
  498. messageSends: ["isNil", "element"]
  499. }),
  500. $globals.Domite);
  501. $core.addMethod(
  502. $core.method({
  503. selector: "next",
  504. protocol: "reading",
  505. fn: function (){
  506. var self=this,$self=this;
  507. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  508. return $core.withContext(function($ctx1) {
  509. //>>excludeEnd("ctx");
  510. var $1;
  511. $1=$self._atEnd();
  512. if($core.assert($1)){
  513. return nil;
  514. } else {
  515. var result;
  516. result=$self._peek();
  517. result;
  518. $self._setToNext();
  519. return result;
  520. }
  521. return self;
  522. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  523. }, function($ctx1) {$ctx1.fill(self,"next",{},$globals.Domite)});
  524. //>>excludeEnd("ctx");
  525. },
  526. //>>excludeStart("ide", pragmas.excludeIdeData);
  527. args: [],
  528. source: "next\x0a\x09self atEnd\x0a\x09\x09ifTrue: [ ^ nil ]\x0a\x09\x09ifFalse: [ | result |\x0a\x09\x09\x09result := self peek.\x0a\x09\x09\x09self setToNext.\x0a\x09\x09\x09^ result ]",
  529. referencedClasses: [],
  530. //>>excludeEnd("ide");
  531. messageSends: ["ifTrue:ifFalse:", "atEnd", "peek", "setToNext"]
  532. }),
  533. $globals.Domite);
  534. $core.addMethod(
  535. $core.method({
  536. selector: "nextPut:",
  537. protocol: "insertion",
  538. fn: function (anObject){
  539. var self=this,$self=this;
  540. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  541. return $core.withContext(function($ctx1) {
  542. //>>excludeEnd("ctx");
  543. $self._nextPutString_($recv(anObject)._printString());
  544. return self;
  545. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  546. }, function($ctx1) {$ctx1.fill(self,"nextPut:",{anObject:anObject},$globals.Domite)});
  547. //>>excludeEnd("ctx");
  548. },
  549. //>>excludeStart("ide", pragmas.excludeIdeData);
  550. args: ["anObject"],
  551. source: "nextPut: anObject\x0a\x09self nextPutString: anObject printString",
  552. referencedClasses: [],
  553. //>>excludeEnd("ide");
  554. messageSends: ["nextPutString:", "printString"]
  555. }),
  556. $globals.Domite);
  557. $core.addMethod(
  558. $core.method({
  559. selector: "nextPutDomNode:",
  560. protocol: "insertion",
  561. fn: function (aDomElement){
  562. var self=this,$self=this;
  563. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  564. return $core.withContext(function($ctx1) {
  565. //>>excludeEnd("ctx");
  566. $recv($self._element())._insertBefore_reference_(aDomElement,$self._reference());
  567. return self;
  568. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  569. }, function($ctx1) {$ctx1.fill(self,"nextPutDomNode:",{aDomElement:aDomElement},$globals.Domite)});
  570. //>>excludeEnd("ctx");
  571. },
  572. //>>excludeStart("ide", pragmas.excludeIdeData);
  573. args: ["aDomElement"],
  574. source: "nextPutDomNode: aDomElement\x0a\x09self element\x0a\x09\x09insertBefore: aDomElement\x0a\x09\x09reference: self reference",
  575. referencedClasses: [],
  576. //>>excludeEnd("ide");
  577. messageSends: ["insertBefore:reference:", "element", "reference"]
  578. }),
  579. $globals.Domite);
  580. $core.addMethod(
  581. $core.method({
  582. selector: "nextPutJSObject:",
  583. protocol: "insertion",
  584. fn: function (aJSObject){
  585. var self=this,$self=this;
  586. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  587. return $core.withContext(function($ctx1) {
  588. //>>excludeEnd("ctx");
  589. var $1;
  590. $1=$recv($globals.PlatformDom)._isDomNode_(aJSObject);
  591. if($core.assert($1)){
  592. $self._nextPutDomNode_(aJSObject);
  593. } else {
  594. $self._nextPut_(aJSObject);
  595. }
  596. return self;
  597. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  598. }, function($ctx1) {$ctx1.fill(self,"nextPutJSObject:",{aJSObject:aJSObject},$globals.Domite)});
  599. //>>excludeEnd("ctx");
  600. },
  601. //>>excludeStart("ide", pragmas.excludeIdeData);
  602. args: ["aJSObject"],
  603. source: "nextPutJSObject: aJSObject\x0a\x09(PlatformDom isDomNode: aJSObject)\x0a\x09\x09ifTrue: [ self nextPutDomNode: aJSObject ]\x0a\x09\x09ifFalse: [ self nextPut: aJSObject ]",
  604. referencedClasses: ["PlatformDom"],
  605. //>>excludeEnd("ide");
  606. messageSends: ["ifTrue:ifFalse:", "isDomNode:", "nextPutDomNode:", "nextPut:"]
  607. }),
  608. $globals.Domite);
  609. $core.addMethod(
  610. $core.method({
  611. selector: "nextPutString:",
  612. protocol: "insertion",
  613. fn: function (aString){
  614. var self=this,$self=this;
  615. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  616. return $core.withContext(function($ctx1) {
  617. //>>excludeEnd("ctx");
  618. $self._nextPutDomNode_($recv($recv(aString)._asString())._asDomNode());
  619. return self;
  620. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  621. }, function($ctx1) {$ctx1.fill(self,"nextPutString:",{aString:aString},$globals.Domite)});
  622. //>>excludeEnd("ctx");
  623. },
  624. //>>excludeStart("ide", pragmas.excludeIdeData);
  625. args: ["aString"],
  626. source: "nextPutString: aString\x0a\x09self nextPutDomNode: aString asString asDomNode",
  627. referencedClasses: [],
  628. //>>excludeEnd("ide");
  629. messageSends: ["nextPutDomNode:", "asDomNode", "asString"]
  630. }),
  631. $globals.Domite);
  632. $core.addMethod(
  633. $core.method({
  634. selector: "off:unbind:",
  635. protocol: "events",
  636. fn: function (aString,aBlock){
  637. var self=this,$self=this;
  638. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  639. return $core.withContext(function($ctx1) {
  640. //>>excludeEnd("ctx");
  641. $recv($self._asDomNode())._removeEventListener_block_useCapture_(aString,aBlock,false);
  642. return self;
  643. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  644. }, function($ctx1) {$ctx1.fill(self,"off:unbind:",{aString:aString,aBlock:aBlock},$globals.Domite)});
  645. //>>excludeEnd("ctx");
  646. },
  647. //>>excludeStart("ide", pragmas.excludeIdeData);
  648. args: ["aString", "aBlock"],
  649. source: "off: aString unbind: aBlock\x0a\x09self asDomNode removeEventListener: aString block: aBlock useCapture: false",
  650. referencedClasses: [],
  651. //>>excludeEnd("ide");
  652. messageSends: ["removeEventListener:block:useCapture:", "asDomNode"]
  653. }),
  654. $globals.Domite);
  655. $core.addMethod(
  656. $core.method({
  657. selector: "on:bind:",
  658. protocol: "events",
  659. fn: function (aString,aBlock){
  660. var self=this,$self=this;
  661. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  662. return $core.withContext(function($ctx1) {
  663. //>>excludeEnd("ctx");
  664. $recv($self._asDomNode())._addEventListener_block_useCapture_(aString,aBlock,false);
  665. return self;
  666. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  667. }, function($ctx1) {$ctx1.fill(self,"on:bind:",{aString:aString,aBlock:aBlock},$globals.Domite)});
  668. //>>excludeEnd("ctx");
  669. },
  670. //>>excludeStart("ide", pragmas.excludeIdeData);
  671. args: ["aString", "aBlock"],
  672. source: "on: aString bind: aBlock\x0a\x09self asDomNode addEventListener: aString block: aBlock useCapture: false",
  673. referencedClasses: [],
  674. //>>excludeEnd("ide");
  675. messageSends: ["addEventListener:block:useCapture:", "asDomNode"]
  676. }),
  677. $globals.Domite);
  678. $core.addMethod(
  679. $core.method({
  680. selector: "peek",
  681. protocol: "reading",
  682. fn: function (){
  683. var self=this,$self=this;
  684. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  685. return $core.withContext(function($ctx1) {
  686. //>>excludeEnd("ctx");
  687. var $1,$receiver;
  688. $1=$self._reference();
  689. if(($receiver = $1) == null || $receiver.a$nil){
  690. return $1;
  691. } else {
  692. var ref;
  693. ref=$receiver;
  694. return $recv($self._class())._fromElement_(ref);
  695. }
  696. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  697. }, function($ctx1) {$ctx1.fill(self,"peek",{},$globals.Domite)});
  698. //>>excludeEnd("ctx");
  699. },
  700. //>>excludeStart("ide", pragmas.excludeIdeData);
  701. args: [],
  702. source: "peek\x0a\x09^ self reference\x0a\x09\x09ifNotNil: [ :ref | self class fromElement: ref ]",
  703. referencedClasses: [],
  704. //>>excludeEnd("ide");
  705. messageSends: ["ifNotNil:", "reference", "fromElement:", "class"]
  706. }),
  707. $globals.Domite);
  708. $core.addMethod(
  709. $core.method({
  710. selector: "prev",
  711. protocol: "reading",
  712. fn: function (){
  713. var self=this,$self=this;
  714. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  715. return $core.withContext(function($ctx1) {
  716. //>>excludeEnd("ctx");
  717. $self._deprecatedAPI_("Use #back instead.");
  718. return $self._back();
  719. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  720. }, function($ctx1) {$ctx1.fill(self,"prev",{},$globals.Domite)});
  721. //>>excludeEnd("ctx");
  722. },
  723. //>>excludeStart("ide", pragmas.excludeIdeData);
  724. args: [],
  725. source: "prev\x0a\x09self deprecatedAPI: 'Use #back instead.'.\x0a\x09^ self back",
  726. referencedClasses: [],
  727. //>>excludeEnd("ide");
  728. messageSends: ["deprecatedAPI:", "back"]
  729. }),
  730. $globals.Domite);
  731. $core.addMethod(
  732. $core.method({
  733. selector: "propAt:",
  734. protocol: "accessing",
  735. fn: function (aString){
  736. var self=this,$self=this;
  737. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  738. return $core.withContext(function($ctx1) {
  739. //>>excludeEnd("ctx");
  740. return $recv($self["@element"])._at_(aString);
  741. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  742. }, function($ctx1) {$ctx1.fill(self,"propAt:",{aString:aString},$globals.Domite)});
  743. //>>excludeEnd("ctx");
  744. },
  745. //>>excludeStart("ide", pragmas.excludeIdeData);
  746. args: ["aString"],
  747. source: "propAt: aString\x0a\x09^ element at: aString",
  748. referencedClasses: [],
  749. //>>excludeEnd("ide");
  750. messageSends: ["at:"]
  751. }),
  752. $globals.Domite);
  753. $core.addMethod(
  754. $core.method({
  755. selector: "propAt:put:",
  756. protocol: "accessing",
  757. fn: function (aString,anObject){
  758. var self=this,$self=this;
  759. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  760. return $core.withContext(function($ctx1) {
  761. //>>excludeEnd("ctx");
  762. return $recv($self["@element"])._at_put_(aString,anObject);
  763. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  764. }, function($ctx1) {$ctx1.fill(self,"propAt:put:",{aString:aString,anObject:anObject},$globals.Domite)});
  765. //>>excludeEnd("ctx");
  766. },
  767. //>>excludeStart("ide", pragmas.excludeIdeData);
  768. args: ["aString", "anObject"],
  769. source: "propAt: aString put: anObject\x0a\x09^ element at: aString put: anObject",
  770. referencedClasses: [],
  771. //>>excludeEnd("ide");
  772. messageSends: ["at:put:"]
  773. }),
  774. $globals.Domite);
  775. $core.addMethod(
  776. $core.method({
  777. selector: "putOn:",
  778. protocol: "streaming",
  779. fn: function (aStream){
  780. var self=this,$self=this;
  781. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  782. return $core.withContext(function($ctx1) {
  783. //>>excludeEnd("ctx");
  784. $recv(aStream)._nextPutDomNode_($self._asDomNode());
  785. return self;
  786. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  787. }, function($ctx1) {$ctx1.fill(self,"putOn:",{aStream:aStream},$globals.Domite)});
  788. //>>excludeEnd("ctx");
  789. },
  790. //>>excludeStart("ide", pragmas.excludeIdeData);
  791. args: ["aStream"],
  792. source: "putOn: aStream\x0a\x09aStream nextPutDomNode: self asDomNode",
  793. referencedClasses: [],
  794. //>>excludeEnd("ide");
  795. messageSends: ["nextPutDomNode:", "asDomNode"]
  796. }),
  797. $globals.Domite);
  798. $core.addMethod(
  799. $core.method({
  800. selector: "reference",
  801. protocol: "accessing",
  802. fn: function (){
  803. var self=this,$self=this;
  804. return $self["@reference"];
  805. },
  806. //>>excludeStart("ide", pragmas.excludeIdeData);
  807. args: [],
  808. source: "reference\x0a\x09^ reference",
  809. referencedClasses: [],
  810. //>>excludeEnd("ide");
  811. messageSends: []
  812. }),
  813. $globals.Domite);
  814. $core.addMethod(
  815. $core.method({
  816. selector: "reference:",
  817. protocol: "accessing",
  818. fn: function (anObject){
  819. var self=this,$self=this;
  820. $self["@reference"]=anObject;
  821. return self;
  822. },
  823. //>>excludeStart("ide", pragmas.excludeIdeData);
  824. args: ["anObject"],
  825. source: "reference: anObject\x0a\x09reference := anObject",
  826. referencedClasses: [],
  827. //>>excludeEnd("ide");
  828. messageSends: []
  829. }),
  830. $globals.Domite);
  831. $core.addMethod(
  832. $core.method({
  833. selector: "reset",
  834. protocol: "positioning",
  835. fn: function (){
  836. var self=this,$self=this;
  837. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  838. return $core.withContext(function($ctx1) {
  839. //>>excludeEnd("ctx");
  840. $self._reference_($recv($self._element())._firstChild());
  841. return self;
  842. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  843. }, function($ctx1) {$ctx1.fill(self,"reset",{},$globals.Domite)});
  844. //>>excludeEnd("ctx");
  845. },
  846. //>>excludeStart("ide", pragmas.excludeIdeData);
  847. args: [],
  848. source: "reset\x0a\x09self reference: self element firstChild",
  849. referencedClasses: [],
  850. //>>excludeEnd("ide");
  851. messageSends: ["reference:", "firstChild", "element"]
  852. }),
  853. $globals.Domite);
  854. $core.addMethod(
  855. $core.method({
  856. selector: "resetContents",
  857. protocol: "deletion",
  858. fn: function (){
  859. var self=this,$self=this;
  860. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  861. return $core.withContext(function($ctx1) {
  862. //>>excludeEnd("ctx");
  863. var element = $self["@element"], child;
  864. while (child = element.firstChild) element.removeChild(child);
  865. $self["@reference"] = null;;
  866. return self;
  867. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  868. }, function($ctx1) {$ctx1.fill(self,"resetContents",{},$globals.Domite)});
  869. //>>excludeEnd("ctx");
  870. },
  871. //>>excludeStart("ide", pragmas.excludeIdeData);
  872. args: [],
  873. source: "resetContents\x0a<inlineJS: '\x0a\x09var element = $self[\x22@element\x22], child;\x0a\x09while (child = element.firstChild) element.removeChild(child);\x0a\x09$self[\x22@reference\x22] = null;\x0a'>",
  874. referencedClasses: [],
  875. //>>excludeEnd("ide");
  876. messageSends: []
  877. }),
  878. $globals.Domite);
  879. $core.addMethod(
  880. $core.method({
  881. selector: "setToAfter",
  882. protocol: "positioning",
  883. fn: function (){
  884. var self=this,$self=this;
  885. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  886. return $core.withContext(function($ctx1) {
  887. //>>excludeEnd("ctx");
  888. var $2,$1;
  889. $2=$self._element();
  890. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  891. $ctx1.sendIdx["element"]=1;
  892. //>>excludeEnd("ctx");
  893. $1=$recv($2)._nextSibling();
  894. $self._reference_($1);
  895. $self._element_($recv($self._element())._parentNode());
  896. return self;
  897. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  898. }, function($ctx1) {$ctx1.fill(self,"setToAfter",{},$globals.Domite)});
  899. //>>excludeEnd("ctx");
  900. },
  901. //>>excludeStart("ide", pragmas.excludeIdeData);
  902. args: [],
  903. source: "setToAfter\x0a\x09self\x0a\x09\x09reference: self element nextSibling;\x0a\x09\x09element: self element parentNode",
  904. referencedClasses: [],
  905. //>>excludeEnd("ide");
  906. messageSends: ["reference:", "nextSibling", "element", "element:", "parentNode"]
  907. }),
  908. $globals.Domite);
  909. $core.addMethod(
  910. $core.method({
  911. selector: "setToBack",
  912. protocol: "positioning",
  913. fn: function (){
  914. var self=this,$self=this;
  915. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  916. return $core.withContext(function($ctx1) {
  917. //>>excludeEnd("ctx");
  918. var $1,$3,$2,$receiver;
  919. $1=$self._atStart();
  920. if(!$core.assert($1)){
  921. $3=$self._reference();
  922. if(($receiver = $3) == null || $receiver.a$nil){
  923. $2=$recv($self._element())._lastChild();
  924. } else {
  925. var ref;
  926. ref=$receiver;
  927. $2=$recv(ref)._previousSibling();
  928. }
  929. $self._reference_($2);
  930. }
  931. return self;
  932. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  933. }, function($ctx1) {$ctx1.fill(self,"setToBack",{},$globals.Domite)});
  934. //>>excludeEnd("ctx");
  935. },
  936. //>>excludeStart("ide", pragmas.excludeIdeData);
  937. args: [],
  938. source: "setToBack\x0a\x09self atStart ifFalse: [\x0a\x09\x09self reference: (self reference\x0a\x09\x09\x09ifNil: [ self element lastChild ]\x0a\x09\x09\x09ifNotNil: [ :ref | ref previousSibling ])]",
  939. referencedClasses: [],
  940. //>>excludeEnd("ide");
  941. messageSends: ["ifFalse:", "atStart", "reference:", "ifNil:ifNotNil:", "reference", "lastChild", "element", "previousSibling"]
  942. }),
  943. $globals.Domite);
  944. $core.addMethod(
  945. $core.method({
  946. selector: "setToBefore",
  947. protocol: "positioning",
  948. fn: function (){
  949. var self=this,$self=this;
  950. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  951. return $core.withContext(function($ctx1) {
  952. //>>excludeEnd("ctx");
  953. var $1;
  954. $1=$self._element();
  955. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  956. $ctx1.sendIdx["element"]=1;
  957. //>>excludeEnd("ctx");
  958. $self._reference_($1);
  959. $self._element_($recv($self._element())._parentNode());
  960. return self;
  961. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  962. }, function($ctx1) {$ctx1.fill(self,"setToBefore",{},$globals.Domite)});
  963. //>>excludeEnd("ctx");
  964. },
  965. //>>excludeStart("ide", pragmas.excludeIdeData);
  966. args: [],
  967. source: "setToBefore\x0a\x09self\x0a\x09\x09reference: self element;\x0a\x09\x09element: self element parentNode",
  968. referencedClasses: [],
  969. //>>excludeEnd("ide");
  970. messageSends: ["reference:", "element", "element:", "parentNode"]
  971. }),
  972. $globals.Domite);
  973. $core.addMethod(
  974. $core.method({
  975. selector: "setToEnd",
  976. protocol: "positioning",
  977. fn: function (){
  978. var self=this,$self=this;
  979. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  980. return $core.withContext(function($ctx1) {
  981. //>>excludeEnd("ctx");
  982. $self._reference_(nil._asJavaScriptObject());
  983. return self;
  984. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  985. }, function($ctx1) {$ctx1.fill(self,"setToEnd",{},$globals.Domite)});
  986. //>>excludeEnd("ctx");
  987. },
  988. //>>excludeStart("ide", pragmas.excludeIdeData);
  989. args: [],
  990. source: "setToEnd\x0a\x09self reference: nil asJavaScriptObject \x22null\x22",
  991. referencedClasses: [],
  992. //>>excludeEnd("ide");
  993. messageSends: ["reference:", "asJavaScriptObject"]
  994. }),
  995. $globals.Domite);
  996. $core.addMethod(
  997. $core.method({
  998. selector: "setToNext",
  999. protocol: "positioning",
  1000. fn: function (){
  1001. var self=this,$self=this;
  1002. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1003. return $core.withContext(function($ctx1) {
  1004. //>>excludeEnd("ctx");
  1005. var $1;
  1006. $1=$self._atEnd();
  1007. if(!$core.assert($1)){
  1008. $self._reference_($recv($self._reference())._nextSibling());
  1009. }
  1010. return self;
  1011. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1012. }, function($ctx1) {$ctx1.fill(self,"setToNext",{},$globals.Domite)});
  1013. //>>excludeEnd("ctx");
  1014. },
  1015. //>>excludeStart("ide", pragmas.excludeIdeData);
  1016. args: [],
  1017. source: "setToNext\x0a\x09self atEnd ifFalse: [\x0a\x09\x09self reference: self reference nextSibling ]",
  1018. referencedClasses: [],
  1019. //>>excludeEnd("ide");
  1020. messageSends: ["ifFalse:", "atEnd", "reference:", "nextSibling", "reference"]
  1021. }),
  1022. $globals.Domite);
  1023. $core.addMethod(
  1024. $core.method({
  1025. selector: "setToPrev",
  1026. protocol: "positioning",
  1027. fn: function (){
  1028. var self=this,$self=this;
  1029. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1030. return $core.withContext(function($ctx1) {
  1031. //>>excludeEnd("ctx");
  1032. $self._deprecatedAPI_("Use #setToBack instead");
  1033. return $self._setToBack();
  1034. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1035. }, function($ctx1) {$ctx1.fill(self,"setToPrev",{},$globals.Domite)});
  1036. //>>excludeEnd("ctx");
  1037. },
  1038. //>>excludeStart("ide", pragmas.excludeIdeData);
  1039. args: [],
  1040. source: "setToPrev\x0a\x09self deprecatedAPI: 'Use #setToBack instead'.\x0a\x09^ self setToBack",
  1041. referencedClasses: [],
  1042. //>>excludeEnd("ide");
  1043. messageSends: ["deprecatedAPI:", "setToBack"]
  1044. }),
  1045. $globals.Domite);
  1046. $core.addMethod(
  1047. $core.method({
  1048. selector: "allAt:",
  1049. protocol: "instance creation",
  1050. fn: function (aString){
  1051. var self=this,$self=this;
  1052. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1053. return $core.withContext(function($ctx1) {
  1054. //>>excludeEnd("ctx");
  1055. return $self._wrap_($recv($globals.PlatformDom)._toArray_($recv(document)._querySelectorAll_(aString)));
  1056. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1057. }, function($ctx1) {$ctx1.fill(self,"allAt:",{aString:aString},$globals.Domite.a$cls)});
  1058. //>>excludeEnd("ctx");
  1059. },
  1060. //>>excludeStart("ide", pragmas.excludeIdeData);
  1061. args: ["aString"],
  1062. source: "allAt: aString\x0a\x09^ self wrap: (PlatformDom toArray: (document querySelectorAll: aString))",
  1063. referencedClasses: ["PlatformDom"],
  1064. //>>excludeEnd("ide");
  1065. messageSends: ["wrap:", "toArray:", "querySelectorAll:"]
  1066. }),
  1067. $globals.Domite.a$cls);
  1068. $core.addMethod(
  1069. $core.method({
  1070. selector: "at:",
  1071. protocol: "instance creation",
  1072. fn: function (aString){
  1073. var self=this,$self=this;
  1074. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1075. return $core.withContext(function($ctx1) {
  1076. //>>excludeEnd("ctx");
  1077. return $self._fromElement_($recv(document)._querySelector_(aString));
  1078. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1079. }, function($ctx1) {$ctx1.fill(self,"at:",{aString:aString},$globals.Domite.a$cls)});
  1080. //>>excludeEnd("ctx");
  1081. },
  1082. //>>excludeStart("ide", pragmas.excludeIdeData);
  1083. args: ["aString"],
  1084. source: "at: aString\x0a\x09^ self fromElement: (document querySelector: aString)",
  1085. referencedClasses: [],
  1086. //>>excludeEnd("ide");
  1087. messageSends: ["fromElement:", "querySelector:"]
  1088. }),
  1089. $globals.Domite.a$cls);
  1090. $core.addMethod(
  1091. $core.method({
  1092. selector: "fromElement:",
  1093. protocol: "instance creation",
  1094. fn: function (aDomElement){
  1095. var self=this,$self=this;
  1096. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1097. return $core.withContext(function($ctx1) {
  1098. //>>excludeEnd("ctx");
  1099. var $1,$2,$receiver;
  1100. if(($receiver = aDomElement) == null || $receiver.a$nil){
  1101. aDomElement;
  1102. } else {
  1103. $1=$recv($globals.PlatformDom)._isDomNode_(aDomElement);
  1104. if(!$core.assert($1)){
  1105. $self._error_($recv($self._name()).__comma(": Need a DOM node"));
  1106. }
  1107. }
  1108. $2=$self._new();
  1109. $recv($2)._element_(aDomElement);
  1110. return $recv($2)._yourself();
  1111. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1112. }, function($ctx1) {$ctx1.fill(self,"fromElement:",{aDomElement:aDomElement},$globals.Domite.a$cls)});
  1113. //>>excludeEnd("ctx");
  1114. },
  1115. //>>excludeStart("ide", pragmas.excludeIdeData);
  1116. args: ["aDomElement"],
  1117. source: "fromElement: aDomElement\x0a\x09aDomElement ifNotNil: [\x0a\x09\x09(PlatformDom isDomNode: aDomElement) ifFalse: [\x0a\x09\x09\x09self error: self name, ': Need a DOM node' ]].\x0a\x09^ self new\x0a\x09\x09element: aDomElement;\x0a\x09\x09yourself",
  1118. referencedClasses: ["PlatformDom"],
  1119. //>>excludeEnd("ide");
  1120. messageSends: ["ifNotNil:", "ifFalse:", "isDomNode:", "error:", ",", "name", "element:", "new", "yourself"]
  1121. }),
  1122. $globals.Domite.a$cls);
  1123. $core.addMethod(
  1124. $core.method({
  1125. selector: "fromElement:cursorBefore:",
  1126. protocol: "instance creation",
  1127. fn: function (aDomElement,anotherDomElement){
  1128. var self=this,$self=this;
  1129. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1130. return $core.withContext(function($ctx1) {
  1131. //>>excludeEnd("ctx");
  1132. var $1;
  1133. $1=$self._fromElement_(aDomElement);
  1134. $recv($1)._reference_(anotherDomElement);
  1135. return $recv($1)._yourself();
  1136. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1137. }, function($ctx1) {$ctx1.fill(self,"fromElement:cursorBefore:",{aDomElement:aDomElement,anotherDomElement:anotherDomElement},$globals.Domite.a$cls)});
  1138. //>>excludeEnd("ctx");
  1139. },
  1140. //>>excludeStart("ide", pragmas.excludeIdeData);
  1141. args: ["aDomElement", "anotherDomElement"],
  1142. source: "fromElement: aDomElement cursorBefore: anotherDomElement\x0a\x09^ (self fromElement: aDomElement)\x0a\x09\x09reference: anotherDomElement;\x0a\x09\x09yourself",
  1143. referencedClasses: [],
  1144. //>>excludeEnd("ide");
  1145. messageSends: ["reference:", "fromElement:", "yourself"]
  1146. }),
  1147. $globals.Domite.a$cls);
  1148. $core.addMethod(
  1149. $core.method({
  1150. selector: "newElement:",
  1151. protocol: "instance creation",
  1152. fn: function (aString){
  1153. var self=this,$self=this;
  1154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1155. return $core.withContext(function($ctx1) {
  1156. //>>excludeEnd("ctx");
  1157. return $self._fromElement_($recv(document)._createElement_(aString));
  1158. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1159. }, function($ctx1) {$ctx1.fill(self,"newElement:",{aString:aString},$globals.Domite.a$cls)});
  1160. //>>excludeEnd("ctx");
  1161. },
  1162. //>>excludeStart("ide", pragmas.excludeIdeData);
  1163. args: ["aString"],
  1164. source: "newElement: aString\x0a\x09^ self fromElement: (document createElement: aString)",
  1165. referencedClasses: [],
  1166. //>>excludeEnd("ide");
  1167. messageSends: ["fromElement:", "createElement:"]
  1168. }),
  1169. $globals.Domite.a$cls);
  1170. $core.addMethod(
  1171. $core.method({
  1172. selector: "newElement:xmlns:",
  1173. protocol: "instance creation",
  1174. fn: function (aString,anotherString){
  1175. var self=this,$self=this;
  1176. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1177. return $core.withContext(function($ctx1) {
  1178. //>>excludeEnd("ctx");
  1179. return $self._fromElement_($recv(document)._createElementNS_tagName_(anotherString,aString));
  1180. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1181. }, function($ctx1) {$ctx1.fill(self,"newElement:xmlns:",{aString:aString,anotherString:anotherString},$globals.Domite.a$cls)});
  1182. //>>excludeEnd("ctx");
  1183. },
  1184. //>>excludeStart("ide", pragmas.excludeIdeData);
  1185. args: ["aString", "anotherString"],
  1186. source: "newElement: aString xmlns: anotherString \x0a\x0a\x09^ self fromElement: (document createElementNS: anotherString tagName: aString)",
  1187. referencedClasses: [],
  1188. //>>excludeEnd("ide");
  1189. messageSends: ["fromElement:", "createElementNS:tagName:"]
  1190. }),
  1191. $globals.Domite.a$cls);
  1192. $core.addMethod(
  1193. $core.method({
  1194. selector: "newStream",
  1195. protocol: "instance creation",
  1196. fn: function (){
  1197. var self=this,$self=this;
  1198. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1199. return $core.withContext(function($ctx1) {
  1200. //>>excludeEnd("ctx");
  1201. return $self._fromElement_([]._asDomNode());
  1202. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1203. }, function($ctx1) {$ctx1.fill(self,"newStream",{},$globals.Domite.a$cls)});
  1204. //>>excludeEnd("ctx");
  1205. },
  1206. //>>excludeStart("ide", pragmas.excludeIdeData);
  1207. args: [],
  1208. source: "newStream\x0a\x09^ self fromElement: #() asDomNode",
  1209. referencedClasses: [],
  1210. //>>excludeEnd("ide");
  1211. messageSends: ["fromElement:", "asDomNode"]
  1212. }),
  1213. $globals.Domite.a$cls);
  1214. $core.addMethod(
  1215. $core.method({
  1216. selector: "wrap:",
  1217. protocol: "converting",
  1218. fn: function (aCollection){
  1219. var self=this,$self=this;
  1220. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1221. return $core.withContext(function($ctx1) {
  1222. //>>excludeEnd("ctx");
  1223. return $recv(aCollection)._collect_((function(each){
  1224. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1225. return $core.withContext(function($ctx2) {
  1226. //>>excludeEnd("ctx");
  1227. return $self._fromElement_(each);
  1228. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1229. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  1230. //>>excludeEnd("ctx");
  1231. }));
  1232. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1233. }, function($ctx1) {$ctx1.fill(self,"wrap:",{aCollection:aCollection},$globals.Domite.a$cls)});
  1234. //>>excludeEnd("ctx");
  1235. },
  1236. //>>excludeStart("ide", pragmas.excludeIdeData);
  1237. args: ["aCollection"],
  1238. source: "wrap: aCollection\x0a\x09^ aCollection collect: [ :each | self fromElement: each ]",
  1239. referencedClasses: [],
  1240. //>>excludeEnd("ide");
  1241. messageSends: ["collect:", "fromElement:"]
  1242. }),
  1243. $globals.Domite.a$cls);
  1244. $core.addMethod(
  1245. $core.method({
  1246. selector: "nextPutDomNode:",
  1247. protocol: "*DOMite",
  1248. fn: function (aNode){
  1249. var self=this,$self=this;
  1250. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1251. return $core.withContext(function($ctx1) {
  1252. //>>excludeEnd("ctx");
  1253. $self._nextPut_(aNode);
  1254. return self;
  1255. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1256. }, function($ctx1) {$ctx1.fill(self,"nextPutDomNode:",{aNode:aNode},$globals.ProtoStream)});
  1257. //>>excludeEnd("ctx");
  1258. },
  1259. //>>excludeStart("ide", pragmas.excludeIdeData);
  1260. args: ["aNode"],
  1261. source: "nextPutDomNode: aNode\x0a\x09self nextPut: aNode",
  1262. referencedClasses: [],
  1263. //>>excludeEnd("ide");
  1264. messageSends: ["nextPut:"]
  1265. }),
  1266. $globals.ProtoStream);
  1267. });