DOMite.js 44 KB

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