DOMite.js 45 KB

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