DOMite.js 41 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285
  1. define("domite/DOMite", ["amber/boot", "amber_core/Kernel-Collections"], function($boot){
  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\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\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`.";
  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: "initialize",
  345. protocol: 'initialization',
  346. fn: function (){
  347. var self=this;
  348. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  349. return $core.withContext(function($ctx1) {
  350. //>>excludeEnd("ctx");
  351. (
  352. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  353. $ctx1.supercall = true,
  354. //>>excludeEnd("ctx");
  355. $globals.Domite.superclass.fn.prototype._initialize.apply($recv(self), []));
  356. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  357. $ctx1.supercall = false;
  358. //>>excludeEnd("ctx");;
  359. self["@element"]=$recv(document)._body();
  360. self["@reference"]=nil._asJSON();
  361. return self;
  362. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  363. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.Domite)});
  364. //>>excludeEnd("ctx");
  365. },
  366. //>>excludeStart("ide", pragmas.excludeIdeData);
  367. args: [],
  368. source: "initialize\x0a\x09super initialize.\x0a\x09element := document body.\x0a\x09reference := nil asJSON",
  369. referencedClasses: [],
  370. //>>excludeEnd("ide");
  371. messageSends: ["initialize", "body", "asJSON"]
  372. }),
  373. $globals.Domite);
  374. $core.addMethod(
  375. $core.method({
  376. selector: "isInvalid",
  377. protocol: 'testing',
  378. fn: function (){
  379. var self=this;
  380. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  381. return $core.withContext(function($ctx1) {
  382. //>>excludeEnd("ctx");
  383. var $1;
  384. $1=$recv(self._element())._isNil();
  385. return $1;
  386. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  387. }, function($ctx1) {$ctx1.fill(self,"isInvalid",{},$globals.Domite)});
  388. //>>excludeEnd("ctx");
  389. },
  390. //>>excludeStart("ide", pragmas.excludeIdeData);
  391. args: [],
  392. source: "isInvalid\x0a\x09^ self element isNil",
  393. referencedClasses: [],
  394. //>>excludeEnd("ide");
  395. messageSends: ["isNil", "element"]
  396. }),
  397. $globals.Domite);
  398. $core.addMethod(
  399. $core.method({
  400. selector: "next",
  401. protocol: 'reading',
  402. fn: function (){
  403. var self=this;
  404. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  405. return $core.withContext(function($ctx1) {
  406. //>>excludeEnd("ctx");
  407. var $1,$2;
  408. $1=self._atEnd();
  409. if($core.assert($1)){
  410. return nil;
  411. } else {
  412. var result;
  413. result=self._peek();
  414. result;
  415. self._setToNext();
  416. $2=result;
  417. return $2;
  418. };
  419. return self;
  420. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  421. }, function($ctx1) {$ctx1.fill(self,"next",{},$globals.Domite)});
  422. //>>excludeEnd("ctx");
  423. },
  424. //>>excludeStart("ide", pragmas.excludeIdeData);
  425. args: [],
  426. 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 ]",
  427. referencedClasses: [],
  428. //>>excludeEnd("ide");
  429. messageSends: ["ifTrue:ifFalse:", "atEnd", "peek", "setToNext"]
  430. }),
  431. $globals.Domite);
  432. $core.addMethod(
  433. $core.method({
  434. selector: "nextPut:",
  435. protocol: 'insertion',
  436. fn: function (anObject){
  437. var self=this;
  438. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  439. return $core.withContext(function($ctx1) {
  440. //>>excludeEnd("ctx");
  441. self._nextPutString_($recv(anObject)._printString());
  442. return self;
  443. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  444. }, function($ctx1) {$ctx1.fill(self,"nextPut:",{anObject:anObject},$globals.Domite)});
  445. //>>excludeEnd("ctx");
  446. },
  447. //>>excludeStart("ide", pragmas.excludeIdeData);
  448. args: ["anObject"],
  449. source: "nextPut: anObject\x0a\x09self nextPutString: anObject printString",
  450. referencedClasses: [],
  451. //>>excludeEnd("ide");
  452. messageSends: ["nextPutString:", "printString"]
  453. }),
  454. $globals.Domite);
  455. $core.addMethod(
  456. $core.method({
  457. selector: "nextPutDomNode:",
  458. protocol: 'insertion',
  459. fn: function (aDomElement){
  460. var self=this;
  461. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  462. return $core.withContext(function($ctx1) {
  463. //>>excludeEnd("ctx");
  464. $recv(self._element())._insertBefore_reference_(aDomElement,self._reference());
  465. return self;
  466. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  467. }, function($ctx1) {$ctx1.fill(self,"nextPutDomNode:",{aDomElement:aDomElement},$globals.Domite)});
  468. //>>excludeEnd("ctx");
  469. },
  470. //>>excludeStart("ide", pragmas.excludeIdeData);
  471. args: ["aDomElement"],
  472. source: "nextPutDomNode: aDomElement\x0a\x09self element\x0a\x09\x09insertBefore: aDomElement\x0a\x09\x09reference: self reference",
  473. referencedClasses: [],
  474. //>>excludeEnd("ide");
  475. messageSends: ["insertBefore:reference:", "element", "reference"]
  476. }),
  477. $globals.Domite);
  478. $core.addMethod(
  479. $core.method({
  480. selector: "nextPutJSObject:",
  481. protocol: 'insertion',
  482. fn: function (aJSObject){
  483. var self=this;
  484. function $Domite(){return $globals.Domite||(typeof Domite=="undefined"?nil:Domite)}
  485. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  486. return $core.withContext(function($ctx1) {
  487. //>>excludeEnd("ctx");
  488. var $1;
  489. $1=$recv($Domite())._isDomNode_(aJSObject);
  490. if($core.assert($1)){
  491. self._nextPutDomNode_(aJSObject);
  492. } else {
  493. self._nextPut_(aJSObject);
  494. };
  495. return self;
  496. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  497. }, function($ctx1) {$ctx1.fill(self,"nextPutJSObject:",{aJSObject:aJSObject},$globals.Domite)});
  498. //>>excludeEnd("ctx");
  499. },
  500. //>>excludeStart("ide", pragmas.excludeIdeData);
  501. args: ["aJSObject"],
  502. source: "nextPutJSObject: aJSObject\x0a\x09(Domite isDomNode: aJSObject)\x0a\x09\x09ifTrue: [ self nextPutDomNode: aJSObject ]\x0a\x09\x09ifFalse: [ self nextPut: aJSObject ]",
  503. referencedClasses: ["Domite"],
  504. //>>excludeEnd("ide");
  505. messageSends: ["ifTrue:ifFalse:", "isDomNode:", "nextPutDomNode:", "nextPut:"]
  506. }),
  507. $globals.Domite);
  508. $core.addMethod(
  509. $core.method({
  510. selector: "nextPutString:",
  511. protocol: 'insertion',
  512. fn: function (aString){
  513. var self=this;
  514. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  515. return $core.withContext(function($ctx1) {
  516. //>>excludeEnd("ctx");
  517. self._nextPutDomNode_($recv(document)._createTextNode_($recv(aString)._asString()));
  518. return self;
  519. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  520. }, function($ctx1) {$ctx1.fill(self,"nextPutString:",{aString:aString},$globals.Domite)});
  521. //>>excludeEnd("ctx");
  522. },
  523. //>>excludeStart("ide", pragmas.excludeIdeData);
  524. args: ["aString"],
  525. source: "nextPutString: aString\x0a\x09self nextPutDomNode: (\x0a\x09\x09document createTextNode: aString asString )",
  526. referencedClasses: [],
  527. //>>excludeEnd("ide");
  528. messageSends: ["nextPutDomNode:", "createTextNode:", "asString"]
  529. }),
  530. $globals.Domite);
  531. $core.addMethod(
  532. $core.method({
  533. selector: "off:unbind:",
  534. protocol: 'events',
  535. fn: function (aString,aBlock){
  536. var self=this;
  537. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  538. return $core.withContext(function($ctx1) {
  539. //>>excludeEnd("ctx");
  540. $recv(self._element())._removeEventListener_block_useCapture_(aString,aBlock,false);
  541. return self;
  542. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  543. }, function($ctx1) {$ctx1.fill(self,"off:unbind:",{aString:aString,aBlock:aBlock},$globals.Domite)});
  544. //>>excludeEnd("ctx");
  545. },
  546. //>>excludeStart("ide", pragmas.excludeIdeData);
  547. args: ["aString", "aBlock"],
  548. source: "off: aString unbind: aBlock\x0a\x09self element removeEventListener: aString block: aBlock useCapture: false",
  549. referencedClasses: [],
  550. //>>excludeEnd("ide");
  551. messageSends: ["removeEventListener:block:useCapture:", "element"]
  552. }),
  553. $globals.Domite);
  554. $core.addMethod(
  555. $core.method({
  556. selector: "on:bind:",
  557. protocol: 'events',
  558. fn: function (aString,aBlock){
  559. var self=this;
  560. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  561. return $core.withContext(function($ctx1) {
  562. //>>excludeEnd("ctx");
  563. $recv(self._element())._addEventListener_block_useCapture_(aString,aBlock,false);
  564. return self;
  565. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  566. }, function($ctx1) {$ctx1.fill(self,"on:bind:",{aString:aString,aBlock:aBlock},$globals.Domite)});
  567. //>>excludeEnd("ctx");
  568. },
  569. //>>excludeStart("ide", pragmas.excludeIdeData);
  570. args: ["aString", "aBlock"],
  571. source: "on: aString bind: aBlock\x0a\x09self element addEventListener: aString block: aBlock useCapture: false",
  572. referencedClasses: [],
  573. //>>excludeEnd("ide");
  574. messageSends: ["addEventListener:block:useCapture:", "element"]
  575. }),
  576. $globals.Domite);
  577. $core.addMethod(
  578. $core.method({
  579. selector: "peek",
  580. protocol: 'reading',
  581. fn: function (){
  582. var self=this;
  583. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  584. return $core.withContext(function($ctx1) {
  585. //>>excludeEnd("ctx");
  586. var $2,$1,$receiver;
  587. $2=self._reference();
  588. if(($receiver = $2) == null || $receiver.isNil){
  589. $1=$2;
  590. } else {
  591. var ref;
  592. ref=$receiver;
  593. $1=$recv(self._class())._fromElement_(ref);
  594. };
  595. return $1;
  596. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  597. }, function($ctx1) {$ctx1.fill(self,"peek",{},$globals.Domite)});
  598. //>>excludeEnd("ctx");
  599. },
  600. //>>excludeStart("ide", pragmas.excludeIdeData);
  601. args: [],
  602. source: "peek\x0a\x09^ self reference\x0a\x09\x09ifNotNil: [ :ref | self class fromElement: ref ]",
  603. referencedClasses: [],
  604. //>>excludeEnd("ide");
  605. messageSends: ["ifNotNil:", "reference", "fromElement:", "class"]
  606. }),
  607. $globals.Domite);
  608. $core.addMethod(
  609. $core.method({
  610. selector: "prev",
  611. protocol: 'reading',
  612. fn: function (){
  613. var self=this;
  614. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  615. return $core.withContext(function($ctx1) {
  616. //>>excludeEnd("ctx");
  617. var $1,$2;
  618. $1=self._atStart();
  619. if($core.assert($1)){
  620. return nil;
  621. } else {
  622. self._setToPrev();
  623. $2=self._peek();
  624. return $2;
  625. };
  626. return self;
  627. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  628. }, function($ctx1) {$ctx1.fill(self,"prev",{},$globals.Domite)});
  629. //>>excludeEnd("ctx");
  630. },
  631. //>>excludeStart("ide", pragmas.excludeIdeData);
  632. args: [],
  633. source: "prev\x0a\x09self atStart\x0a\x09\x09ifTrue: [ ^ nil ]\x0a\x09\x09ifFalse: [ self setToPrev. ^ self peek ]",
  634. referencedClasses: [],
  635. //>>excludeEnd("ide");
  636. messageSends: ["ifTrue:ifFalse:", "atStart", "setToPrev", "peek"]
  637. }),
  638. $globals.Domite);
  639. $core.addMethod(
  640. $core.method({
  641. selector: "propAt:",
  642. protocol: 'accessing',
  643. fn: function (aString){
  644. var self=this;
  645. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  646. return $core.withContext(function($ctx1) {
  647. //>>excludeEnd("ctx");
  648. var $1;
  649. $1=$recv(self["@element"])._at_(aString);
  650. return $1;
  651. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  652. }, function($ctx1) {$ctx1.fill(self,"propAt:",{aString:aString},$globals.Domite)});
  653. //>>excludeEnd("ctx");
  654. },
  655. //>>excludeStart("ide", pragmas.excludeIdeData);
  656. args: ["aString"],
  657. source: "propAt: aString\x0a\x09^ element at: aString",
  658. referencedClasses: [],
  659. //>>excludeEnd("ide");
  660. messageSends: ["at:"]
  661. }),
  662. $globals.Domite);
  663. $core.addMethod(
  664. $core.method({
  665. selector: "propAt:put:",
  666. protocol: 'accessing',
  667. fn: function (aString,anObject){
  668. var self=this;
  669. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  670. return $core.withContext(function($ctx1) {
  671. //>>excludeEnd("ctx");
  672. var $1;
  673. $1=$recv(self["@element"])._at_put_(aString,anObject);
  674. return $1;
  675. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  676. }, function($ctx1) {$ctx1.fill(self,"propAt:put:",{aString:aString,anObject:anObject},$globals.Domite)});
  677. //>>excludeEnd("ctx");
  678. },
  679. //>>excludeStart("ide", pragmas.excludeIdeData);
  680. args: ["aString", "anObject"],
  681. source: "propAt: aString put: anObject\x0a\x09^ element at: aString put: anObject",
  682. referencedClasses: [],
  683. //>>excludeEnd("ide");
  684. messageSends: ["at:put:"]
  685. }),
  686. $globals.Domite);
  687. $core.addMethod(
  688. $core.method({
  689. selector: "putOn:",
  690. protocol: 'streaming',
  691. fn: function (aStream){
  692. var self=this;
  693. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  694. return $core.withContext(function($ctx1) {
  695. //>>excludeEnd("ctx");
  696. $recv(aStream)._nextPutDomNode_(self._element());
  697. return self;
  698. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  699. }, function($ctx1) {$ctx1.fill(self,"putOn:",{aStream:aStream},$globals.Domite)});
  700. //>>excludeEnd("ctx");
  701. },
  702. //>>excludeStart("ide", pragmas.excludeIdeData);
  703. args: ["aStream"],
  704. source: "putOn: aStream\x0a\x09aStream nextPutDomNode: self element",
  705. referencedClasses: [],
  706. //>>excludeEnd("ide");
  707. messageSends: ["nextPutDomNode:", "element"]
  708. }),
  709. $globals.Domite);
  710. $core.addMethod(
  711. $core.method({
  712. selector: "reference",
  713. protocol: 'accessing',
  714. fn: function (){
  715. var self=this;
  716. var $1;
  717. $1=self["@reference"];
  718. return $1;
  719. },
  720. //>>excludeStart("ide", pragmas.excludeIdeData);
  721. args: [],
  722. source: "reference\x0a\x09^ reference",
  723. referencedClasses: [],
  724. //>>excludeEnd("ide");
  725. messageSends: []
  726. }),
  727. $globals.Domite);
  728. $core.addMethod(
  729. $core.method({
  730. selector: "reference:",
  731. protocol: 'accessing',
  732. fn: function (anObject){
  733. var self=this;
  734. self["@reference"]=anObject;
  735. return self;
  736. },
  737. //>>excludeStart("ide", pragmas.excludeIdeData);
  738. args: ["anObject"],
  739. source: "reference: anObject\x0a\x09reference := anObject",
  740. referencedClasses: [],
  741. //>>excludeEnd("ide");
  742. messageSends: []
  743. }),
  744. $globals.Domite);
  745. $core.addMethod(
  746. $core.method({
  747. selector: "reset",
  748. protocol: 'positioning',
  749. fn: function (){
  750. var self=this;
  751. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  752. return $core.withContext(function($ctx1) {
  753. //>>excludeEnd("ctx");
  754. self._reference_($recv(self._element())._firstChild());
  755. return self;
  756. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  757. }, function($ctx1) {$ctx1.fill(self,"reset",{},$globals.Domite)});
  758. //>>excludeEnd("ctx");
  759. },
  760. //>>excludeStart("ide", pragmas.excludeIdeData);
  761. args: [],
  762. source: "reset\x0a\x09self reference: self element firstChild",
  763. referencedClasses: [],
  764. //>>excludeEnd("ide");
  765. messageSends: ["reference:", "firstChild", "element"]
  766. }),
  767. $globals.Domite);
  768. $core.addMethod(
  769. $core.method({
  770. selector: "resetContents",
  771. protocol: 'deletion',
  772. fn: function (){
  773. var self=this;
  774. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  775. return $core.withContext(function($ctx1) {
  776. //>>excludeEnd("ctx");
  777. var element = self['@element'], child;
  778. while (child = element.firstChild) element.removeChild(child);
  779. self['@reference'] = null;;
  780. return self;
  781. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  782. }, function($ctx1) {$ctx1.fill(self,"resetContents",{},$globals.Domite)});
  783. //>>excludeEnd("ctx");
  784. },
  785. //>>excludeStart("ide", pragmas.excludeIdeData);
  786. args: [],
  787. source: "resetContents\x0a<\x0a\x09var element = self['@element'], child;\x0a\x09while (child = element.firstChild) element.removeChild(child);\x0a\x09self['@reference'] = null;\x0a>",
  788. referencedClasses: [],
  789. //>>excludeEnd("ide");
  790. messageSends: []
  791. }),
  792. $globals.Domite);
  793. $core.addMethod(
  794. $core.method({
  795. selector: "setToAfter",
  796. protocol: 'positioning',
  797. fn: function (){
  798. var self=this;
  799. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  800. return $core.withContext(function($ctx1) {
  801. //>>excludeEnd("ctx");
  802. var $2,$1,$3;
  803. $2=self._element();
  804. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  805. $ctx1.sendIdx["element"]=1;
  806. //>>excludeEnd("ctx");
  807. $1=$recv($2)._nextSibling();
  808. self._reference_($1);
  809. $3=self._element_($recv(self._element())._parentNode());
  810. return self;
  811. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  812. }, function($ctx1) {$ctx1.fill(self,"setToAfter",{},$globals.Domite)});
  813. //>>excludeEnd("ctx");
  814. },
  815. //>>excludeStart("ide", pragmas.excludeIdeData);
  816. args: [],
  817. source: "setToAfter\x0a\x09self\x0a\x09\x09reference: self element nextSibling;\x0a\x09\x09element: self element parentNode",
  818. referencedClasses: [],
  819. //>>excludeEnd("ide");
  820. messageSends: ["reference:", "nextSibling", "element", "element:", "parentNode"]
  821. }),
  822. $globals.Domite);
  823. $core.addMethod(
  824. $core.method({
  825. selector: "setToBefore",
  826. protocol: 'positioning',
  827. fn: function (){
  828. var self=this;
  829. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  830. return $core.withContext(function($ctx1) {
  831. //>>excludeEnd("ctx");
  832. var $1,$2;
  833. $1=self._element();
  834. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  835. $ctx1.sendIdx["element"]=1;
  836. //>>excludeEnd("ctx");
  837. self._reference_($1);
  838. $2=self._element_($recv(self._element())._parentNode());
  839. return self;
  840. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  841. }, function($ctx1) {$ctx1.fill(self,"setToBefore",{},$globals.Domite)});
  842. //>>excludeEnd("ctx");
  843. },
  844. //>>excludeStart("ide", pragmas.excludeIdeData);
  845. args: [],
  846. source: "setToBefore\x0a\x09self\x0a\x09\x09reference: self element;\x0a\x09\x09element: self element parentNode",
  847. referencedClasses: [],
  848. //>>excludeEnd("ide");
  849. messageSends: ["reference:", "element", "element:", "parentNode"]
  850. }),
  851. $globals.Domite);
  852. $core.addMethod(
  853. $core.method({
  854. selector: "setToEnd",
  855. protocol: 'positioning',
  856. fn: function (){
  857. var self=this;
  858. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  859. return $core.withContext(function($ctx1) {
  860. //>>excludeEnd("ctx");
  861. self._reference_(nil._asJSON());
  862. return self;
  863. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  864. }, function($ctx1) {$ctx1.fill(self,"setToEnd",{},$globals.Domite)});
  865. //>>excludeEnd("ctx");
  866. },
  867. //>>excludeStart("ide", pragmas.excludeIdeData);
  868. args: [],
  869. source: "setToEnd\x0a\x09self reference: nil asJSON \x22null\x22",
  870. referencedClasses: [],
  871. //>>excludeEnd("ide");
  872. messageSends: ["reference:", "asJSON"]
  873. }),
  874. $globals.Domite);
  875. $core.addMethod(
  876. $core.method({
  877. selector: "setToNext",
  878. protocol: 'positioning',
  879. fn: function (){
  880. var self=this;
  881. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  882. return $core.withContext(function($ctx1) {
  883. //>>excludeEnd("ctx");
  884. var $1;
  885. $1=self._atEnd();
  886. if(!$core.assert($1)){
  887. self._reference_($recv(self._reference())._nextSibling());
  888. };
  889. return self;
  890. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  891. }, function($ctx1) {$ctx1.fill(self,"setToNext",{},$globals.Domite)});
  892. //>>excludeEnd("ctx");
  893. },
  894. //>>excludeStart("ide", pragmas.excludeIdeData);
  895. args: [],
  896. source: "setToNext\x0a\x09self atEnd ifFalse: [\x0a\x09\x09self reference: self reference nextSibling ]",
  897. referencedClasses: [],
  898. //>>excludeEnd("ide");
  899. messageSends: ["ifFalse:", "atEnd", "reference:", "nextSibling", "reference"]
  900. }),
  901. $globals.Domite);
  902. $core.addMethod(
  903. $core.method({
  904. selector: "setToPrev",
  905. protocol: 'positioning',
  906. fn: function (){
  907. var self=this;
  908. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  909. return $core.withContext(function($ctx1) {
  910. //>>excludeEnd("ctx");
  911. var $1,$3,$2,$receiver;
  912. $1=self._atStart();
  913. if(!$core.assert($1)){
  914. $3=self._reference();
  915. if(($receiver = $3) == null || $receiver.isNil){
  916. $2=$recv(self._element())._lastChild();
  917. } else {
  918. var ref;
  919. ref=$receiver;
  920. $2=$recv(ref)._previousSibling();
  921. };
  922. self._reference_($2);
  923. };
  924. return self;
  925. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  926. }, function($ctx1) {$ctx1.fill(self,"setToPrev",{},$globals.Domite)});
  927. //>>excludeEnd("ctx");
  928. },
  929. //>>excludeStart("ide", pragmas.excludeIdeData);
  930. args: [],
  931. 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 ])]",
  932. referencedClasses: [],
  933. //>>excludeEnd("ide");
  934. messageSends: ["ifFalse:", "atStart", "reference:", "ifNil:ifNotNil:", "reference", "lastChild", "element", "previousSibling"]
  935. }),
  936. $globals.Domite);
  937. $core.addMethod(
  938. $core.method({
  939. selector: "allAt:",
  940. protocol: 'instance creation',
  941. fn: function (aString){
  942. var self=this;
  943. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  944. return $core.withContext(function($ctx1) {
  945. //>>excludeEnd("ctx");
  946. var $1;
  947. $1=self._wrap_(self._domListAsArray_($recv(document)._querySelectorAll_(aString)));
  948. return $1;
  949. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  950. }, function($ctx1) {$ctx1.fill(self,"allAt:",{aString:aString},$globals.Domite.klass)});
  951. //>>excludeEnd("ctx");
  952. },
  953. //>>excludeStart("ide", pragmas.excludeIdeData);
  954. args: ["aString"],
  955. source: "allAt: aString\x0a\x09^ self wrap: (self domListAsArray: (document querySelectorAll: aString))",
  956. referencedClasses: [],
  957. //>>excludeEnd("ide");
  958. messageSends: ["wrap:", "domListAsArray:", "querySelectorAll:"]
  959. }),
  960. $globals.Domite.klass);
  961. $core.addMethod(
  962. $core.method({
  963. selector: "at:",
  964. protocol: 'instance creation',
  965. fn: function (aString){
  966. var self=this;
  967. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  968. return $core.withContext(function($ctx1) {
  969. //>>excludeEnd("ctx");
  970. var $1;
  971. $1=self._fromElement_($recv(document)._querySelector_(aString));
  972. return $1;
  973. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  974. }, function($ctx1) {$ctx1.fill(self,"at:",{aString:aString},$globals.Domite.klass)});
  975. //>>excludeEnd("ctx");
  976. },
  977. //>>excludeStart("ide", pragmas.excludeIdeData);
  978. args: ["aString"],
  979. source: "at: aString\x0a\x09^ self fromElement: (document querySelector: aString)",
  980. referencedClasses: [],
  981. //>>excludeEnd("ide");
  982. messageSends: ["fromElement:", "querySelector:"]
  983. }),
  984. $globals.Domite.klass);
  985. $core.addMethod(
  986. $core.method({
  987. selector: "domListAsArray:",
  988. protocol: 'converting',
  989. fn: function (aDomList){
  990. var self=this;
  991. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  992. return $core.withContext(function($ctx1) {
  993. //>>excludeEnd("ctx");
  994. return Array.prototype.slice.call(aDomList);
  995. return self;
  996. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  997. }, function($ctx1) {$ctx1.fill(self,"domListAsArray:",{aDomList:aDomList},$globals.Domite.klass)});
  998. //>>excludeEnd("ctx");
  999. },
  1000. //>>excludeStart("ide", pragmas.excludeIdeData);
  1001. args: ["aDomList"],
  1002. source: "domListAsArray: aDomList\x0a<return Array.prototype.slice.call(aDomList)>\x0a\x09",
  1003. referencedClasses: [],
  1004. //>>excludeEnd("ide");
  1005. messageSends: []
  1006. }),
  1007. $globals.Domite.klass);
  1008. $core.addMethod(
  1009. $core.method({
  1010. selector: "fromElement:",
  1011. protocol: 'instance creation',
  1012. fn: function (aDomElement){
  1013. var self=this;
  1014. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1015. return $core.withContext(function($ctx1) {
  1016. //>>excludeEnd("ctx");
  1017. var $1,$3,$4,$2,$receiver;
  1018. if(($receiver = aDomElement) == null || $receiver.isNil){
  1019. aDomElement;
  1020. } else {
  1021. $1=self._isDomNode_(aDomElement);
  1022. if(!$core.assert($1)){
  1023. self._error_($recv(self._name()).__comma(": Need a DOM node"));
  1024. };
  1025. };
  1026. $3=self._new();
  1027. $recv($3)._element_(aDomElement);
  1028. $4=$recv($3)._yourself();
  1029. $2=$4;
  1030. return $2;
  1031. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1032. }, function($ctx1) {$ctx1.fill(self,"fromElement:",{aDomElement:aDomElement},$globals.Domite.klass)});
  1033. //>>excludeEnd("ctx");
  1034. },
  1035. //>>excludeStart("ide", pragmas.excludeIdeData);
  1036. args: ["aDomElement"],
  1037. 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",
  1038. referencedClasses: [],
  1039. //>>excludeEnd("ide");
  1040. messageSends: ["ifNotNil:", "ifFalse:", "isDomNode:", "error:", ",", "name", "element:", "new", "yourself"]
  1041. }),
  1042. $globals.Domite.klass);
  1043. $core.addMethod(
  1044. $core.method({
  1045. selector: "fromElement:cursorBefore:",
  1046. protocol: 'instance creation',
  1047. fn: function (aDomElement,anotherDomElement){
  1048. var self=this;
  1049. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1050. return $core.withContext(function($ctx1) {
  1051. //>>excludeEnd("ctx");
  1052. var $1,$3,$4,$2,$receiver;
  1053. if(($receiver = aDomElement) == null || $receiver.isNil){
  1054. aDomElement;
  1055. } else {
  1056. $1=self._isDomNode_(aDomElement);
  1057. if(!$core.assert($1)){
  1058. self._error_($recv(self._name()).__comma(": Need a DOM node"));
  1059. };
  1060. };
  1061. $3=self._new();
  1062. $recv($3)._element_(aDomElement);
  1063. $recv($3)._referenceElement_(anotherDomElement);
  1064. $4=$recv($3)._yourself();
  1065. $2=$4;
  1066. return $2;
  1067. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1068. }, function($ctx1) {$ctx1.fill(self,"fromElement:cursorBefore:",{aDomElement:aDomElement,anotherDomElement:anotherDomElement},$globals.Domite.klass)});
  1069. //>>excludeEnd("ctx");
  1070. },
  1071. //>>excludeStart("ide", pragmas.excludeIdeData);
  1072. args: ["aDomElement", "anotherDomElement"],
  1073. source: "fromElement: aDomElement cursorBefore: anotherDomElement\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\x09referenceElement: anotherDomElement;\x0a\x09\x09yourself",
  1074. referencedClasses: [],
  1075. //>>excludeEnd("ide");
  1076. messageSends: ["ifNotNil:", "ifFalse:", "isDomNode:", "error:", ",", "name", "element:", "new", "referenceElement:", "yourself"]
  1077. }),
  1078. $globals.Domite.klass);
  1079. $core.addMethod(
  1080. $core.method({
  1081. selector: "isDomNode:",
  1082. protocol: 'testing',
  1083. fn: function (anObject){
  1084. var self=this;
  1085. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1086. return $core.withContext(function($ctx1) {
  1087. //>>excludeEnd("ctx");
  1088. return anObject.nodeType > 0 &&
  1089. Object.prototype.toString.call(anObject) !== "[object Object]";
  1090. return self;
  1091. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1092. }, function($ctx1) {$ctx1.fill(self,"isDomNode:",{anObject:anObject},$globals.Domite.klass)});
  1093. //>>excludeEnd("ctx");
  1094. },
  1095. //>>excludeStart("ide", pragmas.excludeIdeData);
  1096. args: ["anObject"],
  1097. source: "isDomNode: anObject\x0a<\x0a\x09return anObject.nodeType >> 0 &&\x0a\x09\x09Object.prototype.toString.call(anObject) !== \x22[object Object]\x22\x0a>",
  1098. referencedClasses: [],
  1099. //>>excludeEnd("ide");
  1100. messageSends: []
  1101. }),
  1102. $globals.Domite.klass);
  1103. $core.addMethod(
  1104. $core.method({
  1105. selector: "newElement:",
  1106. protocol: 'instance creation',
  1107. fn: function (aString){
  1108. var self=this;
  1109. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1110. return $core.withContext(function($ctx1) {
  1111. //>>excludeEnd("ctx");
  1112. var $1;
  1113. $1=self._fromElement_($recv(document)._createElement_(aString));
  1114. return $1;
  1115. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1116. }, function($ctx1) {$ctx1.fill(self,"newElement:",{aString:aString},$globals.Domite.klass)});
  1117. //>>excludeEnd("ctx");
  1118. },
  1119. //>>excludeStart("ide", pragmas.excludeIdeData);
  1120. args: ["aString"],
  1121. source: "newElement: aString\x0a\x09^ self fromElement: (document createElement: aString)",
  1122. referencedClasses: [],
  1123. //>>excludeEnd("ide");
  1124. messageSends: ["fromElement:", "createElement:"]
  1125. }),
  1126. $globals.Domite.klass);
  1127. $core.addMethod(
  1128. $core.method({
  1129. selector: "newElement:xmlns:",
  1130. protocol: 'instance creation',
  1131. fn: function (aString,anotherString){
  1132. var self=this;
  1133. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1134. return $core.withContext(function($ctx1) {
  1135. //>>excludeEnd("ctx");
  1136. var $1;
  1137. $1=self._fromElement_($recv(document)._createElementNS_tagName_(anotherString,aString));
  1138. return $1;
  1139. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1140. }, function($ctx1) {$ctx1.fill(self,"newElement:xmlns:",{aString:aString,anotherString:anotherString},$globals.Domite.klass)});
  1141. //>>excludeEnd("ctx");
  1142. },
  1143. //>>excludeStart("ide", pragmas.excludeIdeData);
  1144. args: ["aString", "anotherString"],
  1145. source: "newElement: aString xmlns: anotherString \x0a\x0a\x09^ self fromElement: (document createElementNS: anotherString tagName: aString)",
  1146. referencedClasses: [],
  1147. //>>excludeEnd("ide");
  1148. messageSends: ["fromElement:", "createElementNS:tagName:"]
  1149. }),
  1150. $globals.Domite.klass);
  1151. $core.addMethod(
  1152. $core.method({
  1153. selector: "newStream",
  1154. protocol: 'instance creation',
  1155. fn: function (){
  1156. var self=this;
  1157. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1158. return $core.withContext(function($ctx1) {
  1159. //>>excludeEnd("ctx");
  1160. var $1;
  1161. $1=self._fromElement_($recv(document)._createDocumentFragment());
  1162. return $1;
  1163. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1164. }, function($ctx1) {$ctx1.fill(self,"newStream",{},$globals.Domite.klass)});
  1165. //>>excludeEnd("ctx");
  1166. },
  1167. //>>excludeStart("ide", pragmas.excludeIdeData);
  1168. args: [],
  1169. source: "newStream\x0a\x09^ self fromElement: document createDocumentFragment",
  1170. referencedClasses: [],
  1171. //>>excludeEnd("ide");
  1172. messageSends: ["fromElement:", "createDocumentFragment"]
  1173. }),
  1174. $globals.Domite.klass);
  1175. $core.addMethod(
  1176. $core.method({
  1177. selector: "wrap:",
  1178. protocol: 'converting',
  1179. fn: function (aCollection){
  1180. var self=this;
  1181. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1182. return $core.withContext(function($ctx1) {
  1183. //>>excludeEnd("ctx");
  1184. var $1;
  1185. $1=$recv(aCollection)._collect_((function(each){
  1186. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1187. return $core.withContext(function($ctx2) {
  1188. //>>excludeEnd("ctx");
  1189. return self._fromElement_(each);
  1190. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1191. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  1192. //>>excludeEnd("ctx");
  1193. }));
  1194. return $1;
  1195. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1196. }, function($ctx1) {$ctx1.fill(self,"wrap:",{aCollection:aCollection},$globals.Domite.klass)});
  1197. //>>excludeEnd("ctx");
  1198. },
  1199. //>>excludeStart("ide", pragmas.excludeIdeData);
  1200. args: ["aCollection"],
  1201. source: "wrap: aCollection\x0a\x09^ aCollection collect: [ :each | self fromElement: each ]",
  1202. referencedClasses: [],
  1203. //>>excludeEnd("ide");
  1204. messageSends: ["collect:", "fromElement:"]
  1205. }),
  1206. $globals.Domite.klass);
  1207. $core.addMethod(
  1208. $core.method({
  1209. selector: "nextPutDomNode:",
  1210. protocol: '*DOMite',
  1211. fn: function (aNode){
  1212. var self=this;
  1213. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1214. return $core.withContext(function($ctx1) {
  1215. //>>excludeEnd("ctx");
  1216. self._nextPut_(aNode);
  1217. return self;
  1218. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1219. }, function($ctx1) {$ctx1.fill(self,"nextPutDomNode:",{aNode:aNode},$globals.ProtoStream)});
  1220. //>>excludeEnd("ctx");
  1221. },
  1222. //>>excludeStart("ide", pragmas.excludeIdeData);
  1223. args: ["aNode"],
  1224. source: "nextPutDomNode: aNode\x0a\x09self nextPut: aNode",
  1225. referencedClasses: [],
  1226. //>>excludeEnd("ide");
  1227. messageSends: ["nextPut:"]
  1228. }),
  1229. $globals.ProtoStream);
  1230. });