DOMite.js 44 KB

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