DOMite.js 44 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328
  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: "back",
  264. protocol: "reading",
  265. fn: function (){
  266. var self=this;
  267. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  268. return $core.withContext(function($ctx1) {
  269. //>>excludeEnd("ctx");
  270. var $1;
  271. $1=self._atStart();
  272. if($core.assert($1)){
  273. return nil;
  274. } else {
  275. self._setToBack();
  276. return self._peek();
  277. }
  278. return self;
  279. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  280. }, function($ctx1) {$ctx1.fill(self,"back",{},$globals.Domite)});
  281. //>>excludeEnd("ctx");
  282. },
  283. //>>excludeStart("ide", pragmas.excludeIdeData);
  284. args: [],
  285. source: "back\x0a\x09self atStart\x0a\x09\x09ifTrue: [ ^ nil ]\x0a\x09\x09ifFalse: [ self setToBack. ^ self peek ]",
  286. referencedClasses: [],
  287. //>>excludeEnd("ide");
  288. messageSends: ["ifTrue:ifFalse:", "atStart", "setToBack", "peek"]
  289. }),
  290. $globals.Domite);
  291. $core.addMethod(
  292. $core.method({
  293. selector: "canSetToUpperLevel",
  294. protocol: "testing",
  295. fn: function (){
  296. var self=this;
  297. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  298. return $core.withContext(function($ctx1) {
  299. //>>excludeEnd("ctx");
  300. return $recv($recv(self._element())._parentNode())._notNil();
  301. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  302. }, function($ctx1) {$ctx1.fill(self,"canSetToUpperLevel",{},$globals.Domite)});
  303. //>>excludeEnd("ctx");
  304. },
  305. //>>excludeStart("ide", pragmas.excludeIdeData);
  306. args: [],
  307. source: "canSetToUpperLevel\x0a\x09^ self element parentNode notNil",
  308. referencedClasses: [],
  309. //>>excludeEnd("ide");
  310. messageSends: ["notNil", "parentNode", "element"]
  311. }),
  312. $globals.Domite);
  313. $core.addMethod(
  314. $core.method({
  315. selector: "cutUpTo:",
  316. protocol: "deletion",
  317. fn: function (aDomite){
  318. var self=this;
  319. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  320. return $core.withContext(function($ctx1) {
  321. //>>excludeEnd("ctx");
  322. var result = document.createDocumentFragment(),
  323. start = self["@reference"],
  324. end = aDomite["@reference"],
  325. tmp;
  326. while (start && start != end) {
  327. tmp = start;
  328. start = start.nextSibling;
  329. result.appendChild(tmp);
  330. }
  331. self["@reference"] = start;
  332. return self._class()._fromElement_(result);;
  333. return self;
  334. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  335. }, function($ctx1) {$ctx1.fill(self,"cutUpTo:",{aDomite:aDomite},$globals.Domite)});
  336. //>>excludeEnd("ctx");
  337. },
  338. //>>excludeStart("ide", pragmas.excludeIdeData);
  339. args: ["aDomite"],
  340. 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'>",
  341. referencedClasses: [],
  342. //>>excludeEnd("ide");
  343. messageSends: []
  344. }),
  345. $globals.Domite);
  346. $core.addMethod(
  347. $core.method({
  348. selector: "element",
  349. protocol: "accessing",
  350. fn: function (){
  351. var self=this;
  352. return self["@element"];
  353. },
  354. //>>excludeStart("ide", pragmas.excludeIdeData);
  355. args: [],
  356. source: "element\x0a\x09^ element",
  357. referencedClasses: [],
  358. //>>excludeEnd("ide");
  359. messageSends: []
  360. }),
  361. $globals.Domite);
  362. $core.addMethod(
  363. $core.method({
  364. selector: "element:",
  365. protocol: "accessing",
  366. fn: function (anObject){
  367. var self=this;
  368. self["@element"]=anObject;
  369. return self;
  370. },
  371. //>>excludeStart("ide", pragmas.excludeIdeData);
  372. args: ["anObject"],
  373. source: "element: anObject\x0a\x09element := anObject",
  374. referencedClasses: [],
  375. //>>excludeEnd("ide");
  376. messageSends: []
  377. }),
  378. $globals.Domite);
  379. $core.addMethod(
  380. $core.method({
  381. selector: "fire:",
  382. protocol: "events",
  383. fn: function (aString){
  384. var self=this;
  385. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  386. return $core.withContext(function($ctx1) {
  387. //>>excludeEnd("ctx");
  388. self._fire_detail_(aString,nil._asJavaScriptObject());
  389. return self;
  390. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  391. }, function($ctx1) {$ctx1.fill(self,"fire:",{aString:aString},$globals.Domite)});
  392. //>>excludeEnd("ctx");
  393. },
  394. //>>excludeStart("ide", pragmas.excludeIdeData);
  395. args: ["aString"],
  396. source: "fire: aString\x0a\x09self fire: aString detail: nil asJavaScriptObject",
  397. referencedClasses: [],
  398. //>>excludeEnd("ide");
  399. messageSends: ["fire:detail:", "asJavaScriptObject"]
  400. }),
  401. $globals.Domite);
  402. $core.addMethod(
  403. $core.method({
  404. selector: "fire:detail:",
  405. protocol: "events",
  406. fn: function (aString,anObject){
  407. var self=this;
  408. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  409. return $core.withContext(function($ctx1) {
  410. //>>excludeEnd("ctx");
  411. self._fireEvent_($recv($globals.PlatformDom)._newCustomEvent_detail_(aString,anObject));
  412. return self;
  413. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  414. }, function($ctx1) {$ctx1.fill(self,"fire:detail:",{aString:aString,anObject:anObject},$globals.Domite)});
  415. //>>excludeEnd("ctx");
  416. },
  417. //>>excludeStart("ide", pragmas.excludeIdeData);
  418. args: ["aString", "anObject"],
  419. source: "fire: aString detail: anObject\x0a\x09self fireEvent: (\x0a\x09\x09PlatformDom newCustomEvent: aString detail: anObject)",
  420. referencedClasses: ["PlatformDom"],
  421. //>>excludeEnd("ide");
  422. messageSends: ["fireEvent:", "newCustomEvent:detail:"]
  423. }),
  424. $globals.Domite);
  425. $core.addMethod(
  426. $core.method({
  427. selector: "fireEvent:",
  428. protocol: "events",
  429. fn: function (anEvent){
  430. var self=this;
  431. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  432. return $core.withContext(function($ctx1) {
  433. //>>excludeEnd("ctx");
  434. $recv(self._asDomNode())._dispatchEvent_(anEvent);
  435. return self;
  436. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  437. }, function($ctx1) {$ctx1.fill(self,"fireEvent:",{anEvent:anEvent},$globals.Domite)});
  438. //>>excludeEnd("ctx");
  439. },
  440. //>>excludeStart("ide", pragmas.excludeIdeData);
  441. args: ["anEvent"],
  442. source: "fireEvent: anEvent\x0a\x09self asDomNode dispatchEvent: anEvent",
  443. referencedClasses: [],
  444. //>>excludeEnd("ide");
  445. messageSends: ["dispatchEvent:", "asDomNode"]
  446. }),
  447. $globals.Domite);
  448. $core.addMethod(
  449. $core.method({
  450. selector: "initialize",
  451. protocol: "initialization",
  452. fn: function (){
  453. var self=this;
  454. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  455. return $core.withContext(function($ctx1) {
  456. //>>excludeEnd("ctx");
  457. (
  458. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  459. $ctx1.supercall = true,
  460. //>>excludeEnd("ctx");
  461. ($globals.Domite.superclass||$boot.nilAsClass).fn.prototype._initialize.apply($recv(self), []));
  462. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  463. $ctx1.supercall = false;
  464. //>>excludeEnd("ctx");;
  465. self["@element"]=$recv(document)._body();
  466. self["@reference"]=nil._asJavaScriptObject();
  467. return self;
  468. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  469. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.Domite)});
  470. //>>excludeEnd("ctx");
  471. },
  472. //>>excludeStart("ide", pragmas.excludeIdeData);
  473. args: [],
  474. source: "initialize\x0a\x09super initialize.\x0a\x09element := document body.\x0a\x09reference := nil asJavaScriptObject",
  475. referencedClasses: [],
  476. //>>excludeEnd("ide");
  477. messageSends: ["initialize", "body", "asJavaScriptObject"]
  478. }),
  479. $globals.Domite);
  480. $core.addMethod(
  481. $core.method({
  482. selector: "isInvalid",
  483. protocol: "testing",
  484. fn: function (){
  485. var self=this;
  486. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  487. return $core.withContext(function($ctx1) {
  488. //>>excludeEnd("ctx");
  489. return $recv(self._element())._isNil();
  490. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  491. }, function($ctx1) {$ctx1.fill(self,"isInvalid",{},$globals.Domite)});
  492. //>>excludeEnd("ctx");
  493. },
  494. //>>excludeStart("ide", pragmas.excludeIdeData);
  495. args: [],
  496. source: "isInvalid\x0a\x09^ self element isNil",
  497. referencedClasses: [],
  498. //>>excludeEnd("ide");
  499. messageSends: ["isNil", "element"]
  500. }),
  501. $globals.Domite);
  502. $core.addMethod(
  503. $core.method({
  504. selector: "next",
  505. protocol: "reading",
  506. fn: function (){
  507. var self=this;
  508. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  509. return $core.withContext(function($ctx1) {
  510. //>>excludeEnd("ctx");
  511. var $1;
  512. $1=self._atEnd();
  513. if($core.assert($1)){
  514. return nil;
  515. } else {
  516. var result;
  517. result=self._peek();
  518. result;
  519. self._setToNext();
  520. return result;
  521. }
  522. return self;
  523. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  524. }, function($ctx1) {$ctx1.fill(self,"next",{},$globals.Domite)});
  525. //>>excludeEnd("ctx");
  526. },
  527. //>>excludeStart("ide", pragmas.excludeIdeData);
  528. args: [],
  529. 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 ]",
  530. referencedClasses: [],
  531. //>>excludeEnd("ide");
  532. messageSends: ["ifTrue:ifFalse:", "atEnd", "peek", "setToNext"]
  533. }),
  534. $globals.Domite);
  535. $core.addMethod(
  536. $core.method({
  537. selector: "nextPut:",
  538. protocol: "insertion",
  539. fn: function (anObject){
  540. var self=this;
  541. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  542. return $core.withContext(function($ctx1) {
  543. //>>excludeEnd("ctx");
  544. self._nextPutString_($recv(anObject)._printString());
  545. return self;
  546. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  547. }, function($ctx1) {$ctx1.fill(self,"nextPut:",{anObject:anObject},$globals.Domite)});
  548. //>>excludeEnd("ctx");
  549. },
  550. //>>excludeStart("ide", pragmas.excludeIdeData);
  551. args: ["anObject"],
  552. source: "nextPut: anObject\x0a\x09self nextPutString: anObject printString",
  553. referencedClasses: [],
  554. //>>excludeEnd("ide");
  555. messageSends: ["nextPutString:", "printString"]
  556. }),
  557. $globals.Domite);
  558. $core.addMethod(
  559. $core.method({
  560. selector: "nextPutDomNode:",
  561. protocol: "insertion",
  562. fn: function (aDomElement){
  563. var self=this;
  564. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  565. return $core.withContext(function($ctx1) {
  566. //>>excludeEnd("ctx");
  567. $recv(self._element())._insertBefore_reference_(aDomElement,self._reference());
  568. return self;
  569. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  570. }, function($ctx1) {$ctx1.fill(self,"nextPutDomNode:",{aDomElement:aDomElement},$globals.Domite)});
  571. //>>excludeEnd("ctx");
  572. },
  573. //>>excludeStart("ide", pragmas.excludeIdeData);
  574. args: ["aDomElement"],
  575. source: "nextPutDomNode: aDomElement\x0a\x09self element\x0a\x09\x09insertBefore: aDomElement\x0a\x09\x09reference: self reference",
  576. referencedClasses: [],
  577. //>>excludeEnd("ide");
  578. messageSends: ["insertBefore:reference:", "element", "reference"]
  579. }),
  580. $globals.Domite);
  581. $core.addMethod(
  582. $core.method({
  583. selector: "nextPutJSObject:",
  584. protocol: "insertion",
  585. fn: function (aJSObject){
  586. var self=this;
  587. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  588. return $core.withContext(function($ctx1) {
  589. //>>excludeEnd("ctx");
  590. var $1;
  591. $1=$recv($globals.PlatformDom)._isDomNode_(aJSObject);
  592. if($core.assert($1)){
  593. self._nextPutDomNode_(aJSObject);
  594. } else {
  595. self._nextPut_(aJSObject);
  596. }
  597. return self;
  598. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  599. }, function($ctx1) {$ctx1.fill(self,"nextPutJSObject:",{aJSObject:aJSObject},$globals.Domite)});
  600. //>>excludeEnd("ctx");
  601. },
  602. //>>excludeStart("ide", pragmas.excludeIdeData);
  603. args: ["aJSObject"],
  604. source: "nextPutJSObject: aJSObject\x0a\x09(PlatformDom isDomNode: aJSObject)\x0a\x09\x09ifTrue: [ self nextPutDomNode: aJSObject ]\x0a\x09\x09ifFalse: [ self nextPut: aJSObject ]",
  605. referencedClasses: ["PlatformDom"],
  606. //>>excludeEnd("ide");
  607. messageSends: ["ifTrue:ifFalse:", "isDomNode:", "nextPutDomNode:", "nextPut:"]
  608. }),
  609. $globals.Domite);
  610. $core.addMethod(
  611. $core.method({
  612. selector: "nextPutString:",
  613. protocol: "insertion",
  614. fn: function (aString){
  615. var self=this;
  616. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  617. return $core.withContext(function($ctx1) {
  618. //>>excludeEnd("ctx");
  619. self._nextPutDomNode_($recv($recv(aString)._asString())._asDomNode());
  620. return self;
  621. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  622. }, function($ctx1) {$ctx1.fill(self,"nextPutString:",{aString:aString},$globals.Domite)});
  623. //>>excludeEnd("ctx");
  624. },
  625. //>>excludeStart("ide", pragmas.excludeIdeData);
  626. args: ["aString"],
  627. source: "nextPutString: aString\x0a\x09self nextPutDomNode: aString asString asDomNode",
  628. referencedClasses: [],
  629. //>>excludeEnd("ide");
  630. messageSends: ["nextPutDomNode:", "asDomNode", "asString"]
  631. }),
  632. $globals.Domite);
  633. $core.addMethod(
  634. $core.method({
  635. selector: "off:unbind:",
  636. protocol: "events",
  637. fn: function (aString,aBlock){
  638. var self=this;
  639. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  640. return $core.withContext(function($ctx1) {
  641. //>>excludeEnd("ctx");
  642. $recv(self._asDomNode())._removeEventListener_block_useCapture_(aString,aBlock,false);
  643. return self;
  644. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  645. }, function($ctx1) {$ctx1.fill(self,"off:unbind:",{aString:aString,aBlock:aBlock},$globals.Domite)});
  646. //>>excludeEnd("ctx");
  647. },
  648. //>>excludeStart("ide", pragmas.excludeIdeData);
  649. args: ["aString", "aBlock"],
  650. source: "off: aString unbind: aBlock\x0a\x09self asDomNode removeEventListener: aString block: aBlock useCapture: false",
  651. referencedClasses: [],
  652. //>>excludeEnd("ide");
  653. messageSends: ["removeEventListener:block:useCapture:", "asDomNode"]
  654. }),
  655. $globals.Domite);
  656. $core.addMethod(
  657. $core.method({
  658. selector: "on:bind:",
  659. protocol: "events",
  660. fn: function (aString,aBlock){
  661. var self=this;
  662. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  663. return $core.withContext(function($ctx1) {
  664. //>>excludeEnd("ctx");
  665. $recv(self._asDomNode())._addEventListener_block_useCapture_(aString,aBlock,false);
  666. return self;
  667. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  668. }, function($ctx1) {$ctx1.fill(self,"on:bind:",{aString:aString,aBlock:aBlock},$globals.Domite)});
  669. //>>excludeEnd("ctx");
  670. },
  671. //>>excludeStart("ide", pragmas.excludeIdeData);
  672. args: ["aString", "aBlock"],
  673. source: "on: aString bind: aBlock\x0a\x09self asDomNode addEventListener: aString block: aBlock useCapture: false",
  674. referencedClasses: [],
  675. //>>excludeEnd("ide");
  676. messageSends: ["addEventListener:block:useCapture:", "asDomNode"]
  677. }),
  678. $globals.Domite);
  679. $core.addMethod(
  680. $core.method({
  681. selector: "peek",
  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,$receiver;
  689. $1=self._reference();
  690. if(($receiver = $1) == null || $receiver.isNil){
  691. return $1;
  692. } else {
  693. var ref;
  694. ref=$receiver;
  695. return $recv(self._class())._fromElement_(ref);
  696. }
  697. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  698. }, function($ctx1) {$ctx1.fill(self,"peek",{},$globals.Domite)});
  699. //>>excludeEnd("ctx");
  700. },
  701. //>>excludeStart("ide", pragmas.excludeIdeData);
  702. args: [],
  703. source: "peek\x0a\x09^ self reference\x0a\x09\x09ifNotNil: [ :ref | self class fromElement: ref ]",
  704. referencedClasses: [],
  705. //>>excludeEnd("ide");
  706. messageSends: ["ifNotNil:", "reference", "fromElement:", "class"]
  707. }),
  708. $globals.Domite);
  709. $core.addMethod(
  710. $core.method({
  711. selector: "prev",
  712. protocol: "reading",
  713. fn: function (){
  714. var self=this;
  715. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  716. return $core.withContext(function($ctx1) {
  717. //>>excludeEnd("ctx");
  718. self._deprecatedAPI_("Use #back instead.");
  719. return self._back();
  720. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  721. }, function($ctx1) {$ctx1.fill(self,"prev",{},$globals.Domite)});
  722. //>>excludeEnd("ctx");
  723. },
  724. //>>excludeStart("ide", pragmas.excludeIdeData);
  725. args: [],
  726. source: "prev\x0a\x09self deprecatedAPI: 'Use #back instead.'.\x0a\x09^ self back",
  727. referencedClasses: [],
  728. //>>excludeEnd("ide");
  729. messageSends: ["deprecatedAPI:", "back"]
  730. }),
  731. $globals.Domite);
  732. $core.addMethod(
  733. $core.method({
  734. selector: "propAt:",
  735. protocol: "accessing",
  736. fn: function (aString){
  737. var self=this;
  738. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  739. return $core.withContext(function($ctx1) {
  740. //>>excludeEnd("ctx");
  741. return $recv(self["@element"])._at_(aString);
  742. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  743. }, function($ctx1) {$ctx1.fill(self,"propAt:",{aString:aString},$globals.Domite)});
  744. //>>excludeEnd("ctx");
  745. },
  746. //>>excludeStart("ide", pragmas.excludeIdeData);
  747. args: ["aString"],
  748. source: "propAt: aString\x0a\x09^ element at: aString",
  749. referencedClasses: [],
  750. //>>excludeEnd("ide");
  751. messageSends: ["at:"]
  752. }),
  753. $globals.Domite);
  754. $core.addMethod(
  755. $core.method({
  756. selector: "propAt:put:",
  757. protocol: "accessing",
  758. fn: function (aString,anObject){
  759. var self=this;
  760. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  761. return $core.withContext(function($ctx1) {
  762. //>>excludeEnd("ctx");
  763. return $recv(self["@element"])._at_put_(aString,anObject);
  764. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  765. }, function($ctx1) {$ctx1.fill(self,"propAt:put:",{aString:aString,anObject:anObject},$globals.Domite)});
  766. //>>excludeEnd("ctx");
  767. },
  768. //>>excludeStart("ide", pragmas.excludeIdeData);
  769. args: ["aString", "anObject"],
  770. source: "propAt: aString put: anObject\x0a\x09^ element at: aString put: anObject",
  771. referencedClasses: [],
  772. //>>excludeEnd("ide");
  773. messageSends: ["at:put:"]
  774. }),
  775. $globals.Domite);
  776. $core.addMethod(
  777. $core.method({
  778. selector: "putOn:",
  779. protocol: "streaming",
  780. fn: function (aStream){
  781. var self=this;
  782. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  783. return $core.withContext(function($ctx1) {
  784. //>>excludeEnd("ctx");
  785. $recv(aStream)._nextPutDomNode_(self._asDomNode());
  786. return self;
  787. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  788. }, function($ctx1) {$ctx1.fill(self,"putOn:",{aStream:aStream},$globals.Domite)});
  789. //>>excludeEnd("ctx");
  790. },
  791. //>>excludeStart("ide", pragmas.excludeIdeData);
  792. args: ["aStream"],
  793. source: "putOn: aStream\x0a\x09aStream nextPutDomNode: self asDomNode",
  794. referencedClasses: [],
  795. //>>excludeEnd("ide");
  796. messageSends: ["nextPutDomNode:", "asDomNode"]
  797. }),
  798. $globals.Domite);
  799. $core.addMethod(
  800. $core.method({
  801. selector: "reference",
  802. protocol: "accessing",
  803. fn: function (){
  804. var self=this;
  805. return self["@reference"];
  806. },
  807. //>>excludeStart("ide", pragmas.excludeIdeData);
  808. args: [],
  809. source: "reference\x0a\x09^ reference",
  810. referencedClasses: [],
  811. //>>excludeEnd("ide");
  812. messageSends: []
  813. }),
  814. $globals.Domite);
  815. $core.addMethod(
  816. $core.method({
  817. selector: "reference:",
  818. protocol: "accessing",
  819. fn: function (anObject){
  820. var self=this;
  821. self["@reference"]=anObject;
  822. return self;
  823. },
  824. //>>excludeStart("ide", pragmas.excludeIdeData);
  825. args: ["anObject"],
  826. source: "reference: anObject\x0a\x09reference := anObject",
  827. referencedClasses: [],
  828. //>>excludeEnd("ide");
  829. messageSends: []
  830. }),
  831. $globals.Domite);
  832. $core.addMethod(
  833. $core.method({
  834. selector: "reset",
  835. protocol: "positioning",
  836. fn: function (){
  837. var self=this;
  838. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  839. return $core.withContext(function($ctx1) {
  840. //>>excludeEnd("ctx");
  841. self._reference_($recv(self._element())._firstChild());
  842. return self;
  843. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  844. }, function($ctx1) {$ctx1.fill(self,"reset",{},$globals.Domite)});
  845. //>>excludeEnd("ctx");
  846. },
  847. //>>excludeStart("ide", pragmas.excludeIdeData);
  848. args: [],
  849. source: "reset\x0a\x09self reference: self element firstChild",
  850. referencedClasses: [],
  851. //>>excludeEnd("ide");
  852. messageSends: ["reference:", "firstChild", "element"]
  853. }),
  854. $globals.Domite);
  855. $core.addMethod(
  856. $core.method({
  857. selector: "resetContents",
  858. protocol: "deletion",
  859. fn: function (){
  860. var self=this;
  861. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  862. return $core.withContext(function($ctx1) {
  863. //>>excludeEnd("ctx");
  864. var element = self["@element"], child;
  865. while (child = element.firstChild) element.removeChild(child);
  866. self["@reference"] = null;;
  867. return self;
  868. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  869. }, function($ctx1) {$ctx1.fill(self,"resetContents",{},$globals.Domite)});
  870. //>>excludeEnd("ctx");
  871. },
  872. //>>excludeStart("ide", pragmas.excludeIdeData);
  873. args: [],
  874. 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'>",
  875. referencedClasses: [],
  876. //>>excludeEnd("ide");
  877. messageSends: []
  878. }),
  879. $globals.Domite);
  880. $core.addMethod(
  881. $core.method({
  882. selector: "setToAfter",
  883. protocol: "positioning",
  884. fn: function (){
  885. var self=this;
  886. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  887. return $core.withContext(function($ctx1) {
  888. //>>excludeEnd("ctx");
  889. var $2,$1;
  890. $2=self._element();
  891. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  892. $ctx1.sendIdx["element"]=1;
  893. //>>excludeEnd("ctx");
  894. $1=$recv($2)._nextSibling();
  895. self._reference_($1);
  896. self._element_($recv(self._element())._parentNode());
  897. return self;
  898. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  899. }, function($ctx1) {$ctx1.fill(self,"setToAfter",{},$globals.Domite)});
  900. //>>excludeEnd("ctx");
  901. },
  902. //>>excludeStart("ide", pragmas.excludeIdeData);
  903. args: [],
  904. source: "setToAfter\x0a\x09self\x0a\x09\x09reference: self element nextSibling;\x0a\x09\x09element: self element parentNode",
  905. referencedClasses: [],
  906. //>>excludeEnd("ide");
  907. messageSends: ["reference:", "nextSibling", "element", "element:", "parentNode"]
  908. }),
  909. $globals.Domite);
  910. $core.addMethod(
  911. $core.method({
  912. selector: "setToBack",
  913. protocol: "positioning",
  914. fn: function (){
  915. var self=this;
  916. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  917. return $core.withContext(function($ctx1) {
  918. //>>excludeEnd("ctx");
  919. var $1,$3,$2,$receiver;
  920. $1=self._atStart();
  921. if(!$core.assert($1)){
  922. $3=self._reference();
  923. if(($receiver = $3) == null || $receiver.isNil){
  924. $2=$recv(self._element())._lastChild();
  925. } else {
  926. var ref;
  927. ref=$receiver;
  928. $2=$recv(ref)._previousSibling();
  929. }
  930. self._reference_($2);
  931. }
  932. return self;
  933. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  934. }, function($ctx1) {$ctx1.fill(self,"setToBack",{},$globals.Domite)});
  935. //>>excludeEnd("ctx");
  936. },
  937. //>>excludeStart("ide", pragmas.excludeIdeData);
  938. args: [],
  939. 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 ])]",
  940. referencedClasses: [],
  941. //>>excludeEnd("ide");
  942. messageSends: ["ifFalse:", "atStart", "reference:", "ifNil:ifNotNil:", "reference", "lastChild", "element", "previousSibling"]
  943. }),
  944. $globals.Domite);
  945. $core.addMethod(
  946. $core.method({
  947. selector: "setToBefore",
  948. protocol: "positioning",
  949. fn: function (){
  950. var self=this;
  951. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  952. return $core.withContext(function($ctx1) {
  953. //>>excludeEnd("ctx");
  954. var $1;
  955. $1=self._element();
  956. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  957. $ctx1.sendIdx["element"]=1;
  958. //>>excludeEnd("ctx");
  959. self._reference_($1);
  960. self._element_($recv(self._element())._parentNode());
  961. return self;
  962. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  963. }, function($ctx1) {$ctx1.fill(self,"setToBefore",{},$globals.Domite)});
  964. //>>excludeEnd("ctx");
  965. },
  966. //>>excludeStart("ide", pragmas.excludeIdeData);
  967. args: [],
  968. source: "setToBefore\x0a\x09self\x0a\x09\x09reference: self element;\x0a\x09\x09element: self element parentNode",
  969. referencedClasses: [],
  970. //>>excludeEnd("ide");
  971. messageSends: ["reference:", "element", "element:", "parentNode"]
  972. }),
  973. $globals.Domite);
  974. $core.addMethod(
  975. $core.method({
  976. selector: "setToEnd",
  977. protocol: "positioning",
  978. fn: function (){
  979. var self=this;
  980. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  981. return $core.withContext(function($ctx1) {
  982. //>>excludeEnd("ctx");
  983. self._reference_(nil._asJavaScriptObject());
  984. return self;
  985. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  986. }, function($ctx1) {$ctx1.fill(self,"setToEnd",{},$globals.Domite)});
  987. //>>excludeEnd("ctx");
  988. },
  989. //>>excludeStart("ide", pragmas.excludeIdeData);
  990. args: [],
  991. source: "setToEnd\x0a\x09self reference: nil asJavaScriptObject \x22null\x22",
  992. referencedClasses: [],
  993. //>>excludeEnd("ide");
  994. messageSends: ["reference:", "asJavaScriptObject"]
  995. }),
  996. $globals.Domite);
  997. $core.addMethod(
  998. $core.method({
  999. selector: "setToNext",
  1000. protocol: "positioning",
  1001. fn: function (){
  1002. var self=this;
  1003. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1004. return $core.withContext(function($ctx1) {
  1005. //>>excludeEnd("ctx");
  1006. var $1;
  1007. $1=self._atEnd();
  1008. if(!$core.assert($1)){
  1009. self._reference_($recv(self._reference())._nextSibling());
  1010. }
  1011. return self;
  1012. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1013. }, function($ctx1) {$ctx1.fill(self,"setToNext",{},$globals.Domite)});
  1014. //>>excludeEnd("ctx");
  1015. },
  1016. //>>excludeStart("ide", pragmas.excludeIdeData);
  1017. args: [],
  1018. source: "setToNext\x0a\x09self atEnd ifFalse: [\x0a\x09\x09self reference: self reference nextSibling ]",
  1019. referencedClasses: [],
  1020. //>>excludeEnd("ide");
  1021. messageSends: ["ifFalse:", "atEnd", "reference:", "nextSibling", "reference"]
  1022. }),
  1023. $globals.Domite);
  1024. $core.addMethod(
  1025. $core.method({
  1026. selector: "setToPrev",
  1027. protocol: "positioning",
  1028. fn: function (){
  1029. var self=this;
  1030. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1031. return $core.withContext(function($ctx1) {
  1032. //>>excludeEnd("ctx");
  1033. self._deprecatedAPI_("Use #setToBack instead");
  1034. return self._setToBack();
  1035. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1036. }, function($ctx1) {$ctx1.fill(self,"setToPrev",{},$globals.Domite)});
  1037. //>>excludeEnd("ctx");
  1038. },
  1039. //>>excludeStart("ide", pragmas.excludeIdeData);
  1040. args: [],
  1041. source: "setToPrev\x0a\x09self deprecatedAPI: 'Use #setToBack instead'.\x0a\x09^ self setToBack",
  1042. referencedClasses: [],
  1043. //>>excludeEnd("ide");
  1044. messageSends: ["deprecatedAPI:", "setToBack"]
  1045. }),
  1046. $globals.Domite);
  1047. $core.addMethod(
  1048. $core.method({
  1049. selector: "allAt:",
  1050. protocol: "instance creation",
  1051. fn: function (aString){
  1052. var self=this;
  1053. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1054. return $core.withContext(function($ctx1) {
  1055. //>>excludeEnd("ctx");
  1056. return self._wrap_($recv($globals.PlatformDom)._toArray_($recv(document)._querySelectorAll_(aString)));
  1057. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1058. }, function($ctx1) {$ctx1.fill(self,"allAt:",{aString:aString},$globals.Domite.klass)});
  1059. //>>excludeEnd("ctx");
  1060. },
  1061. //>>excludeStart("ide", pragmas.excludeIdeData);
  1062. args: ["aString"],
  1063. source: "allAt: aString\x0a\x09^ self wrap: (PlatformDom toArray: (document querySelectorAll: aString))",
  1064. referencedClasses: ["PlatformDom"],
  1065. //>>excludeEnd("ide");
  1066. messageSends: ["wrap:", "toArray:", "querySelectorAll:"]
  1067. }),
  1068. $globals.Domite.klass);
  1069. $core.addMethod(
  1070. $core.method({
  1071. selector: "at:",
  1072. protocol: "instance creation",
  1073. fn: function (aString){
  1074. var self=this;
  1075. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1076. return $core.withContext(function($ctx1) {
  1077. //>>excludeEnd("ctx");
  1078. return self._fromElement_($recv(document)._querySelector_(aString));
  1079. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1080. }, function($ctx1) {$ctx1.fill(self,"at:",{aString:aString},$globals.Domite.klass)});
  1081. //>>excludeEnd("ctx");
  1082. },
  1083. //>>excludeStart("ide", pragmas.excludeIdeData);
  1084. args: ["aString"],
  1085. source: "at: aString\x0a\x09^ self fromElement: (document querySelector: aString)",
  1086. referencedClasses: [],
  1087. //>>excludeEnd("ide");
  1088. messageSends: ["fromElement:", "querySelector:"]
  1089. }),
  1090. $globals.Domite.klass);
  1091. $core.addMethod(
  1092. $core.method({
  1093. selector: "fromElement:",
  1094. protocol: "instance creation",
  1095. fn: function (aDomElement){
  1096. var self=this;
  1097. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1098. return $core.withContext(function($ctx1) {
  1099. //>>excludeEnd("ctx");
  1100. var $1,$2,$receiver;
  1101. if(($receiver = aDomElement) == null || $receiver.isNil){
  1102. aDomElement;
  1103. } else {
  1104. $1=$recv($globals.PlatformDom)._isDomNode_(aDomElement);
  1105. if(!$core.assert($1)){
  1106. self._error_($recv(self._name()).__comma(": Need a DOM node"));
  1107. }
  1108. }
  1109. $2=self._new();
  1110. $recv($2)._element_(aDomElement);
  1111. return $recv($2)._yourself();
  1112. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1113. }, function($ctx1) {$ctx1.fill(self,"fromElement:",{aDomElement:aDomElement},$globals.Domite.klass)});
  1114. //>>excludeEnd("ctx");
  1115. },
  1116. //>>excludeStart("ide", pragmas.excludeIdeData);
  1117. args: ["aDomElement"],
  1118. 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",
  1119. referencedClasses: ["PlatformDom"],
  1120. //>>excludeEnd("ide");
  1121. messageSends: ["ifNotNil:", "ifFalse:", "isDomNode:", "error:", ",", "name", "element:", "new", "yourself"]
  1122. }),
  1123. $globals.Domite.klass);
  1124. $core.addMethod(
  1125. $core.method({
  1126. selector: "fromElement:cursorBefore:",
  1127. protocol: "instance creation",
  1128. fn: function (aDomElement,anotherDomElement){
  1129. var self=this;
  1130. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1131. return $core.withContext(function($ctx1) {
  1132. //>>excludeEnd("ctx");
  1133. var $1;
  1134. $1=self._fromElement_(aDomElement);
  1135. $recv($1)._reference_(anotherDomElement);
  1136. return $recv($1)._yourself();
  1137. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1138. }, function($ctx1) {$ctx1.fill(self,"fromElement:cursorBefore:",{aDomElement:aDomElement,anotherDomElement:anotherDomElement},$globals.Domite.klass)});
  1139. //>>excludeEnd("ctx");
  1140. },
  1141. //>>excludeStart("ide", pragmas.excludeIdeData);
  1142. args: ["aDomElement", "anotherDomElement"],
  1143. source: "fromElement: aDomElement cursorBefore: anotherDomElement\x0a\x09^ (self fromElement: aDomElement)\x0a\x09\x09reference: anotherDomElement;\x0a\x09\x09yourself",
  1144. referencedClasses: [],
  1145. //>>excludeEnd("ide");
  1146. messageSends: ["reference:", "fromElement:", "yourself"]
  1147. }),
  1148. $globals.Domite.klass);
  1149. $core.addMethod(
  1150. $core.method({
  1151. selector: "newElement:",
  1152. protocol: "instance creation",
  1153. fn: function (aString){
  1154. var self=this;
  1155. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1156. return $core.withContext(function($ctx1) {
  1157. //>>excludeEnd("ctx");
  1158. return self._fromElement_($recv(document)._createElement_(aString));
  1159. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1160. }, function($ctx1) {$ctx1.fill(self,"newElement:",{aString:aString},$globals.Domite.klass)});
  1161. //>>excludeEnd("ctx");
  1162. },
  1163. //>>excludeStart("ide", pragmas.excludeIdeData);
  1164. args: ["aString"],
  1165. source: "newElement: aString\x0a\x09^ self fromElement: (document createElement: aString)",
  1166. referencedClasses: [],
  1167. //>>excludeEnd("ide");
  1168. messageSends: ["fromElement:", "createElement:"]
  1169. }),
  1170. $globals.Domite.klass);
  1171. $core.addMethod(
  1172. $core.method({
  1173. selector: "newElement:xmlns:",
  1174. protocol: "instance creation",
  1175. fn: function (aString,anotherString){
  1176. var self=this;
  1177. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1178. return $core.withContext(function($ctx1) {
  1179. //>>excludeEnd("ctx");
  1180. return self._fromElement_($recv(document)._createElementNS_tagName_(anotherString,aString));
  1181. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1182. }, function($ctx1) {$ctx1.fill(self,"newElement:xmlns:",{aString:aString,anotherString:anotherString},$globals.Domite.klass)});
  1183. //>>excludeEnd("ctx");
  1184. },
  1185. //>>excludeStart("ide", pragmas.excludeIdeData);
  1186. args: ["aString", "anotherString"],
  1187. source: "newElement: aString xmlns: anotherString \x0a\x0a\x09^ self fromElement: (document createElementNS: anotherString tagName: aString)",
  1188. referencedClasses: [],
  1189. //>>excludeEnd("ide");
  1190. messageSends: ["fromElement:", "createElementNS:tagName:"]
  1191. }),
  1192. $globals.Domite.klass);
  1193. $core.addMethod(
  1194. $core.method({
  1195. selector: "newStream",
  1196. protocol: "instance creation",
  1197. fn: function (){
  1198. var self=this;
  1199. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1200. return $core.withContext(function($ctx1) {
  1201. //>>excludeEnd("ctx");
  1202. return self._fromElement_([]._asDomNode());
  1203. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1204. }, function($ctx1) {$ctx1.fill(self,"newStream",{},$globals.Domite.klass)});
  1205. //>>excludeEnd("ctx");
  1206. },
  1207. //>>excludeStart("ide", pragmas.excludeIdeData);
  1208. args: [],
  1209. source: "newStream\x0a\x09^ self fromElement: #() asDomNode",
  1210. referencedClasses: [],
  1211. //>>excludeEnd("ide");
  1212. messageSends: ["fromElement:", "asDomNode"]
  1213. }),
  1214. $globals.Domite.klass);
  1215. $core.addMethod(
  1216. $core.method({
  1217. selector: "wrap:",
  1218. protocol: "converting",
  1219. fn: function (aCollection){
  1220. var self=this;
  1221. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1222. return $core.withContext(function($ctx1) {
  1223. //>>excludeEnd("ctx");
  1224. return $recv(aCollection)._collect_((function(each){
  1225. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1226. return $core.withContext(function($ctx2) {
  1227. //>>excludeEnd("ctx");
  1228. return self._fromElement_(each);
  1229. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1230. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  1231. //>>excludeEnd("ctx");
  1232. }));
  1233. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1234. }, function($ctx1) {$ctx1.fill(self,"wrap:",{aCollection:aCollection},$globals.Domite.klass)});
  1235. //>>excludeEnd("ctx");
  1236. },
  1237. //>>excludeStart("ide", pragmas.excludeIdeData);
  1238. args: ["aCollection"],
  1239. source: "wrap: aCollection\x0a\x09^ aCollection collect: [ :each | self fromElement: each ]",
  1240. referencedClasses: [],
  1241. //>>excludeEnd("ide");
  1242. messageSends: ["collect:", "fromElement:"]
  1243. }),
  1244. $globals.Domite.klass);
  1245. $core.addMethod(
  1246. $core.method({
  1247. selector: "nextPutDomNode:",
  1248. protocol: "*DOMite",
  1249. fn: function (aNode){
  1250. var self=this;
  1251. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1252. return $core.withContext(function($ctx1) {
  1253. //>>excludeEnd("ctx");
  1254. self._nextPut_(aNode);
  1255. return self;
  1256. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1257. }, function($ctx1) {$ctx1.fill(self,"nextPutDomNode:",{aNode:aNode},$globals.ProtoStream)});
  1258. //>>excludeEnd("ctx");
  1259. },
  1260. //>>excludeStart("ide", pragmas.excludeIdeData);
  1261. args: ["aNode"],
  1262. source: "nextPutDomNode: aNode\x0a\x09self nextPut: aNode",
  1263. referencedClasses: [],
  1264. //>>excludeEnd("ide");
  1265. messageSends: ["nextPut:"]
  1266. }),
  1267. $globals.ProtoStream);
  1268. });