DOMite.js 44 KB

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