DOMite.js 44 KB

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