DOMite.js 45 KB

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