DOMite.js 45 KB

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