DOMite.js 44 KB

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