DOMite.js 42 KB

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