DOMite.js 44 KB

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