DOMite.js 44 KB

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