DOMite.js 45 KB

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