DOMite.js 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764
  1. define("domite/DOMite", ["amber/boot", "amber_core/Kernel-Collections"], function($boot){
  2. var $core=$boot.api,nil=$boot.nil,$recv=$boot.asReceiver,$globals=$boot.globals;
  3. $core.addPackage('DOMite');
  4. $core.packages["DOMite"].innerEval = function (expr) { return eval(expr); };
  5. $core.packages["DOMite"].transport = {"type":"amd","amdNamespace":"domite"};
  6. $core.addClass('Domite', $globals.ProtoStream, ['element', 'reference'], 'DOMite');
  7. //>>excludeStart("ide", pragmas.excludeIdeData);
  8. $globals.Domite.comment="I am (hopefully thin) wrapper around the notion of \x22cursor in a page\x22.\x0aI represent a DOM node _and_ a point where\x0ato insert new content into it.\x0a\x0aSo I play both the role of a container that inserts\x0aas well as the role of an element being inserted.\x0a\x0aI inherit from `ProtoStream`.\x0a\x0aCreation API:\x0a\x0a - `Domite new` creates an insertion point at the bottom of `<body>`.\x0a - `Domite newStream` is unique way to create pieces of content. It creates an instance \x22floating in thin air\x22 (wrapper around DOM DocumentFragment) that can be filled with any contents and then inserted in a page.\x0a - `Domite fromElement: aDomElement` wraps an element and set the cursor to its end.\x0a\x0aManipulation API:\x0a\x0a - `aDomite << obj` inserts obj at the insertion point.\x0a - `aDomite resetContents` deletes contents 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`.";
  9. //>>excludeEnd("ide");
  10. $core.addMethod(
  11. $core.method({
  12. selector: "atEnd",
  13. protocol: 'testing',
  14. fn: function (){
  15. var self=this;
  16. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17. return $core.withContext(function($ctx1) {
  18. //>>excludeEnd("ctx");
  19. var $1;
  20. $1=$recv(self._reference())._isNil();
  21. return $1;
  22. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23. }, function($ctx1) {$ctx1.fill(self,"atEnd",{},$globals.Domite)});
  24. //>>excludeEnd("ctx");
  25. },
  26. //>>excludeStart("ide", pragmas.excludeIdeData);
  27. args: [],
  28. source: "atEnd\x0a\x09^ self reference isNil",
  29. referencedClasses: [],
  30. //>>excludeEnd("ide");
  31. messageSends: ["isNil", "reference"]
  32. }),
  33. $globals.Domite);
  34. $core.addMethod(
  35. $core.method({
  36. selector: "atStart",
  37. protocol: 'testing',
  38. fn: function (){
  39. var self=this;
  40. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41. return $core.withContext(function($ctx1) {
  42. //>>excludeEnd("ctx");
  43. var $1;
  44. $1=$recv(self._reference()).__eq($recv(self._element())._firstChild());
  45. return $1;
  46. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47. }, function($ctx1) {$ctx1.fill(self,"atStart",{},$globals.Domite)});
  48. //>>excludeEnd("ctx");
  49. },
  50. //>>excludeStart("ide", pragmas.excludeIdeData);
  51. args: [],
  52. source: "atStart\x0a\x09^ self reference = self element firstChild",
  53. referencedClasses: [],
  54. //>>excludeEnd("ide");
  55. messageSends: ["=", "reference", "firstChild", "element"]
  56. }),
  57. $globals.Domite);
  58. $core.addMethod(
  59. $core.method({
  60. selector: "attrAt:",
  61. protocol: 'accessing',
  62. fn: function (aString){
  63. var self=this;
  64. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65. return $core.withContext(function($ctx1) {
  66. //>>excludeEnd("ctx");
  67. var $1,$2;
  68. $1=$recv(self["@element"])._hasAttribute_(aString);
  69. if($core.assert($1)){
  70. $2=$recv(self["@element"])._getAttribute_(aString);
  71. return $2;
  72. } else {
  73. return nil;
  74. };
  75. return self;
  76. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77. }, function($ctx1) {$ctx1.fill(self,"attrAt:",{aString:aString},$globals.Domite)});
  78. //>>excludeEnd("ctx");
  79. },
  80. //>>excludeStart("ide", pragmas.excludeIdeData);
  81. args: ["aString"],
  82. source: "attrAt: aString\x0a\x09(element hasAttribute: aString)\x0a\x09\x09ifTrue: [ ^ element getAttribute: aString ]\x0a\x09\x09ifFalse: [ ^ nil ]",
  83. referencedClasses: [],
  84. //>>excludeEnd("ide");
  85. messageSends: ["ifTrue:ifFalse:", "hasAttribute:", "getAttribute:"]
  86. }),
  87. $globals.Domite);
  88. $core.addMethod(
  89. $core.method({
  90. selector: "attrAt:put:",
  91. protocol: 'accessing',
  92. fn: function (aString,anotherString){
  93. var self=this;
  94. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  95. return $core.withContext(function($ctx1) {
  96. //>>excludeEnd("ctx");
  97. $recv(self["@element"])._setAttribute_to_(aString,anotherString);
  98. return self;
  99. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  100. }, function($ctx1) {$ctx1.fill(self,"attrAt:put:",{aString:aString,anotherString:anotherString},$globals.Domite)});
  101. //>>excludeEnd("ctx");
  102. },
  103. //>>excludeStart("ide", pragmas.excludeIdeData);
  104. args: ["aString", "anotherString"],
  105. source: "attrAt: aString put: anotherString\x0a\x09element setAttribute: aString to: anotherString",
  106. referencedClasses: [],
  107. //>>excludeEnd("ide");
  108. messageSends: ["setAttribute:to:"]
  109. }),
  110. $globals.Domite);
  111. $core.addMethod(
  112. $core.method({
  113. selector: "canSetToUpperLevel",
  114. protocol: 'testing',
  115. fn: function (){
  116. var self=this;
  117. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  118. return $core.withContext(function($ctx1) {
  119. //>>excludeEnd("ctx");
  120. var $1;
  121. $1=$recv($recv(self._element())._parentNode())._notNil();
  122. return $1;
  123. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  124. }, function($ctx1) {$ctx1.fill(self,"canSetToUpperLevel",{},$globals.Domite)});
  125. //>>excludeEnd("ctx");
  126. },
  127. //>>excludeStart("ide", pragmas.excludeIdeData);
  128. args: [],
  129. source: "canSetToUpperLevel\x0a\x09^ self element parentNode notNil",
  130. referencedClasses: [],
  131. //>>excludeEnd("ide");
  132. messageSends: ["notNil", "parentNode", "element"]
  133. }),
  134. $globals.Domite);
  135. $core.addMethod(
  136. $core.method({
  137. selector: "element",
  138. protocol: 'accessing',
  139. fn: function (){
  140. var self=this;
  141. var $1;
  142. $1=self["@element"];
  143. return $1;
  144. },
  145. //>>excludeStart("ide", pragmas.excludeIdeData);
  146. args: [],
  147. source: "element\x0a\x09^ element",
  148. referencedClasses: [],
  149. //>>excludeEnd("ide");
  150. messageSends: []
  151. }),
  152. $globals.Domite);
  153. $core.addMethod(
  154. $core.method({
  155. selector: "element:",
  156. protocol: 'accessing',
  157. fn: function (anObject){
  158. var self=this;
  159. self["@element"]=anObject;
  160. return self;
  161. },
  162. //>>excludeStart("ide", pragmas.excludeIdeData);
  163. args: ["anObject"],
  164. source: "element: anObject\x0a\x09element := anObject",
  165. referencedClasses: [],
  166. //>>excludeEnd("ide");
  167. messageSends: []
  168. }),
  169. $globals.Domite);
  170. $core.addMethod(
  171. $core.method({
  172. selector: "initialize",
  173. protocol: 'initialization',
  174. fn: function (){
  175. var self=this;
  176. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  177. return $core.withContext(function($ctx1) {
  178. //>>excludeEnd("ctx");
  179. (
  180. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  181. $ctx1.supercall = true,
  182. //>>excludeEnd("ctx");
  183. $globals.Domite.superclass.fn.prototype._initialize.apply($recv(self), []));
  184. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  185. $ctx1.supercall = false;
  186. //>>excludeEnd("ctx");;
  187. self["@element"]=$recv(document)._body();
  188. self["@reference"]=nil._asJSON();
  189. return self;
  190. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  191. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.Domite)});
  192. //>>excludeEnd("ctx");
  193. },
  194. //>>excludeStart("ide", pragmas.excludeIdeData);
  195. args: [],
  196. source: "initialize\x0a\x09super initialize.\x0a\x09element := document body.\x0a\x09reference := nil asJSON",
  197. referencedClasses: [],
  198. //>>excludeEnd("ide");
  199. messageSends: ["initialize", "body", "asJSON"]
  200. }),
  201. $globals.Domite);
  202. $core.addMethod(
  203. $core.method({
  204. selector: "isInvalid",
  205. protocol: 'testing',
  206. fn: function (){
  207. var self=this;
  208. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  209. return $core.withContext(function($ctx1) {
  210. //>>excludeEnd("ctx");
  211. var $1;
  212. $1=$recv(self._element())._isNil();
  213. return $1;
  214. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  215. }, function($ctx1) {$ctx1.fill(self,"isInvalid",{},$globals.Domite)});
  216. //>>excludeEnd("ctx");
  217. },
  218. //>>excludeStart("ide", pragmas.excludeIdeData);
  219. args: [],
  220. source: "isInvalid\x0a\x09^ self element isNil",
  221. referencedClasses: [],
  222. //>>excludeEnd("ide");
  223. messageSends: ["isNil", "element"]
  224. }),
  225. $globals.Domite);
  226. $core.addMethod(
  227. $core.method({
  228. selector: "nextPut:",
  229. protocol: 'insertion',
  230. fn: function (anObject){
  231. var self=this;
  232. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  233. return $core.withContext(function($ctx1) {
  234. //>>excludeEnd("ctx");
  235. self._nextPutString_($recv(anObject)._printString());
  236. return self;
  237. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  238. }, function($ctx1) {$ctx1.fill(self,"nextPut:",{anObject:anObject},$globals.Domite)});
  239. //>>excludeEnd("ctx");
  240. },
  241. //>>excludeStart("ide", pragmas.excludeIdeData);
  242. args: ["anObject"],
  243. source: "nextPut: anObject\x0a\x09self nextPutString: anObject printString",
  244. referencedClasses: [],
  245. //>>excludeEnd("ide");
  246. messageSends: ["nextPutString:", "printString"]
  247. }),
  248. $globals.Domite);
  249. $core.addMethod(
  250. $core.method({
  251. selector: "nextPutDomNode:",
  252. protocol: 'insertion',
  253. fn: function (aDomElement){
  254. var self=this;
  255. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  256. return $core.withContext(function($ctx1) {
  257. //>>excludeEnd("ctx");
  258. $recv(self._element())._insertBefore_reference_(aDomElement,self._reference());
  259. return self;
  260. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  261. }, function($ctx1) {$ctx1.fill(self,"nextPutDomNode:",{aDomElement:aDomElement},$globals.Domite)});
  262. //>>excludeEnd("ctx");
  263. },
  264. //>>excludeStart("ide", pragmas.excludeIdeData);
  265. args: ["aDomElement"],
  266. source: "nextPutDomNode: aDomElement\x0a\x09self element\x0a\x09\x09insertBefore: aDomElement\x0a\x09\x09reference: self reference",
  267. referencedClasses: [],
  268. //>>excludeEnd("ide");
  269. messageSends: ["insertBefore:reference:", "element", "reference"]
  270. }),
  271. $globals.Domite);
  272. $core.addMethod(
  273. $core.method({
  274. selector: "nextPutString:",
  275. protocol: 'insertion',
  276. fn: function (aString){
  277. var self=this;
  278. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  279. return $core.withContext(function($ctx1) {
  280. //>>excludeEnd("ctx");
  281. self._nextPutDomNode_($recv(document)._createTextNode_($recv(aString)._asString()));
  282. return self;
  283. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  284. }, function($ctx1) {$ctx1.fill(self,"nextPutString:",{aString:aString},$globals.Domite)});
  285. //>>excludeEnd("ctx");
  286. },
  287. //>>excludeStart("ide", pragmas.excludeIdeData);
  288. args: ["aString"],
  289. source: "nextPutString: aString\x0a\x09self nextPutDomNode: (\x0a\x09\x09document createTextNode: aString asString )",
  290. referencedClasses: [],
  291. //>>excludeEnd("ide");
  292. messageSends: ["nextPutDomNode:", "createTextNode:", "asString"]
  293. }),
  294. $globals.Domite);
  295. $core.addMethod(
  296. $core.method({
  297. selector: "off:unbind:",
  298. protocol: 'events',
  299. fn: function (aString,aBlock){
  300. var self=this;
  301. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  302. return $core.withContext(function($ctx1) {
  303. //>>excludeEnd("ctx");
  304. self._removeEventListener_block_useCapture_(aString,aBlock,false);
  305. return self;
  306. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  307. }, function($ctx1) {$ctx1.fill(self,"off:unbind:",{aString:aString,aBlock:aBlock},$globals.Domite)});
  308. //>>excludeEnd("ctx");
  309. },
  310. //>>excludeStart("ide", pragmas.excludeIdeData);
  311. args: ["aString", "aBlock"],
  312. source: "off: aString unbind: aBlock\x0a\x09self removeEventListener: aString block: aBlock useCapture: false",
  313. referencedClasses: [],
  314. //>>excludeEnd("ide");
  315. messageSends: ["removeEventListener:block:useCapture:"]
  316. }),
  317. $globals.Domite);
  318. $core.addMethod(
  319. $core.method({
  320. selector: "on:bind:",
  321. protocol: 'events',
  322. fn: function (aString,aBlock){
  323. var self=this;
  324. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  325. return $core.withContext(function($ctx1) {
  326. //>>excludeEnd("ctx");
  327. self._addEventListener_block_useCapture_(aString,aBlock,false);
  328. return self;
  329. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  330. }, function($ctx1) {$ctx1.fill(self,"on:bind:",{aString:aString,aBlock:aBlock},$globals.Domite)});
  331. //>>excludeEnd("ctx");
  332. },
  333. //>>excludeStart("ide", pragmas.excludeIdeData);
  334. args: ["aString", "aBlock"],
  335. source: "on: aString bind: aBlock\x0a\x09self addEventListener: aString block: aBlock useCapture: false",
  336. referencedClasses: [],
  337. //>>excludeEnd("ide");
  338. messageSends: ["addEventListener:block:useCapture:"]
  339. }),
  340. $globals.Domite);
  341. $core.addMethod(
  342. $core.method({
  343. selector: "propAt:",
  344. protocol: 'accessing',
  345. fn: function (aString){
  346. var self=this;
  347. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  348. return $core.withContext(function($ctx1) {
  349. //>>excludeEnd("ctx");
  350. var $1;
  351. $1=$recv(self["@element"])._at_(aString);
  352. return $1;
  353. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  354. }, function($ctx1) {$ctx1.fill(self,"propAt:",{aString:aString},$globals.Domite)});
  355. //>>excludeEnd("ctx");
  356. },
  357. //>>excludeStart("ide", pragmas.excludeIdeData);
  358. args: ["aString"],
  359. source: "propAt: aString\x0a\x09^ element at: aString",
  360. referencedClasses: [],
  361. //>>excludeEnd("ide");
  362. messageSends: ["at:"]
  363. }),
  364. $globals.Domite);
  365. $core.addMethod(
  366. $core.method({
  367. selector: "propAt:put:",
  368. protocol: 'accessing',
  369. fn: function (aString,anObject){
  370. var self=this;
  371. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  372. return $core.withContext(function($ctx1) {
  373. //>>excludeEnd("ctx");
  374. var $1;
  375. $1=$recv(self["@element"])._at_put_(aString,anObject);
  376. return $1;
  377. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  378. }, function($ctx1) {$ctx1.fill(self,"propAt:put:",{aString:aString,anObject:anObject},$globals.Domite)});
  379. //>>excludeEnd("ctx");
  380. },
  381. //>>excludeStart("ide", pragmas.excludeIdeData);
  382. args: ["aString", "anObject"],
  383. source: "propAt: aString put: anObject\x0a\x09^ element at: aString put: anObject",
  384. referencedClasses: [],
  385. //>>excludeEnd("ide");
  386. messageSends: ["at:put:"]
  387. }),
  388. $globals.Domite);
  389. $core.addMethod(
  390. $core.method({
  391. selector: "putOn:",
  392. protocol: 'streaming',
  393. fn: function (aStream){
  394. var self=this;
  395. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  396. return $core.withContext(function($ctx1) {
  397. //>>excludeEnd("ctx");
  398. $recv(aStream)._nextPutDomNode_(self._element());
  399. return self;
  400. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  401. }, function($ctx1) {$ctx1.fill(self,"putOn:",{aStream:aStream},$globals.Domite)});
  402. //>>excludeEnd("ctx");
  403. },
  404. //>>excludeStart("ide", pragmas.excludeIdeData);
  405. args: ["aStream"],
  406. source: "putOn: aStream\x0a\x09aStream nextPutDomNode: self element",
  407. referencedClasses: [],
  408. //>>excludeEnd("ide");
  409. messageSends: ["nextPutDomNode:", "element"]
  410. }),
  411. $globals.Domite);
  412. $core.addMethod(
  413. $core.method({
  414. selector: "reference",
  415. protocol: 'accessing',
  416. fn: function (){
  417. var self=this;
  418. var $1;
  419. $1=self["@reference"];
  420. return $1;
  421. },
  422. //>>excludeStart("ide", pragmas.excludeIdeData);
  423. args: [],
  424. source: "reference\x0a\x09^ reference",
  425. referencedClasses: [],
  426. //>>excludeEnd("ide");
  427. messageSends: []
  428. }),
  429. $globals.Domite);
  430. $core.addMethod(
  431. $core.method({
  432. selector: "reference:",
  433. protocol: 'accessing',
  434. fn: function (anObject){
  435. var self=this;
  436. self["@reference"]=anObject;
  437. return self;
  438. },
  439. //>>excludeStart("ide", pragmas.excludeIdeData);
  440. args: ["anObject"],
  441. source: "reference: anObject\x0a\x09reference := anObject",
  442. referencedClasses: [],
  443. //>>excludeEnd("ide");
  444. messageSends: []
  445. }),
  446. $globals.Domite);
  447. $core.addMethod(
  448. $core.method({
  449. selector: "reset",
  450. protocol: 'positioning',
  451. fn: function (){
  452. var self=this;
  453. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  454. return $core.withContext(function($ctx1) {
  455. //>>excludeEnd("ctx");
  456. self._reference_($recv(self._element())._firstChild());
  457. return self;
  458. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  459. }, function($ctx1) {$ctx1.fill(self,"reset",{},$globals.Domite)});
  460. //>>excludeEnd("ctx");
  461. },
  462. //>>excludeStart("ide", pragmas.excludeIdeData);
  463. args: [],
  464. source: "reset\x0a\x09self reference: self element firstChild",
  465. referencedClasses: [],
  466. //>>excludeEnd("ide");
  467. messageSends: ["reference:", "firstChild", "element"]
  468. }),
  469. $globals.Domite);
  470. $core.addMethod(
  471. $core.method({
  472. selector: "resetContents",
  473. protocol: 'deletion',
  474. fn: function (){
  475. var self=this;
  476. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  477. return $core.withContext(function($ctx1) {
  478. //>>excludeEnd("ctx");
  479. var element = self['@element'], child;
  480. while (child = element.firstChild) element.removeChild(child);
  481. self['@reference'] = null;;
  482. return self;
  483. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  484. }, function($ctx1) {$ctx1.fill(self,"resetContents",{},$globals.Domite)});
  485. //>>excludeEnd("ctx");
  486. },
  487. //>>excludeStart("ide", pragmas.excludeIdeData);
  488. args: [],
  489. source: "resetContents\x0a<\x0a\x09var element = self['@element'], child;\x0a\x09while (child = element.firstChild) element.removeChild(child);\x0a\x09self['@reference'] = null;\x0a>",
  490. referencedClasses: [],
  491. //>>excludeEnd("ide");
  492. messageSends: []
  493. }),
  494. $globals.Domite);
  495. $core.addMethod(
  496. $core.method({
  497. selector: "setToAfter",
  498. protocol: 'positioning',
  499. fn: function (){
  500. var self=this;
  501. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  502. return $core.withContext(function($ctx1) {
  503. //>>excludeEnd("ctx");
  504. var $2,$1,$3;
  505. $2=self._element();
  506. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  507. $ctx1.sendIdx["element"]=1;
  508. //>>excludeEnd("ctx");
  509. $1=$recv($2)._nextSibling();
  510. self._reference_($1);
  511. $3=self._element_($recv(self._element())._parentNode());
  512. return self;
  513. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  514. }, function($ctx1) {$ctx1.fill(self,"setToAfter",{},$globals.Domite)});
  515. //>>excludeEnd("ctx");
  516. },
  517. //>>excludeStart("ide", pragmas.excludeIdeData);
  518. args: [],
  519. source: "setToAfter\x0a\x09self\x0a\x09\x09reference: self element nextSibling;\x0a\x09\x09element: self element parentNode",
  520. referencedClasses: [],
  521. //>>excludeEnd("ide");
  522. messageSends: ["reference:", "nextSibling", "element", "element:", "parentNode"]
  523. }),
  524. $globals.Domite);
  525. $core.addMethod(
  526. $core.method({
  527. selector: "setToBefore",
  528. protocol: 'positioning',
  529. fn: function (){
  530. var self=this;
  531. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  532. return $core.withContext(function($ctx1) {
  533. //>>excludeEnd("ctx");
  534. var $1,$2;
  535. $1=self._element();
  536. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  537. $ctx1.sendIdx["element"]=1;
  538. //>>excludeEnd("ctx");
  539. self._reference_($1);
  540. $2=self._element_($recv(self._element())._parentNode());
  541. return self;
  542. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  543. }, function($ctx1) {$ctx1.fill(self,"setToBefore",{},$globals.Domite)});
  544. //>>excludeEnd("ctx");
  545. },
  546. //>>excludeStart("ide", pragmas.excludeIdeData);
  547. args: [],
  548. source: "setToBefore\x0a\x09self\x0a\x09\x09reference: self element;\x0a\x09\x09element: self element parentNode",
  549. referencedClasses: [],
  550. //>>excludeEnd("ide");
  551. messageSends: ["reference:", "element", "element:", "parentNode"]
  552. }),
  553. $globals.Domite);
  554. $core.addMethod(
  555. $core.method({
  556. selector: "setToEnd",
  557. protocol: 'positioning',
  558. fn: function (){
  559. var self=this;
  560. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  561. return $core.withContext(function($ctx1) {
  562. //>>excludeEnd("ctx");
  563. self._reference_(nil._asJSON());
  564. return self;
  565. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  566. }, function($ctx1) {$ctx1.fill(self,"setToEnd",{},$globals.Domite)});
  567. //>>excludeEnd("ctx");
  568. },
  569. //>>excludeStart("ide", pragmas.excludeIdeData);
  570. args: [],
  571. source: "setToEnd\x0a\x09self reference: nil asJSON \x22null\x22",
  572. referencedClasses: [],
  573. //>>excludeEnd("ide");
  574. messageSends: ["reference:", "asJSON"]
  575. }),
  576. $globals.Domite);
  577. $core.addMethod(
  578. $core.method({
  579. selector: "fromElement:",
  580. protocol: 'instance creation',
  581. fn: function (aDomElement){
  582. var self=this;
  583. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  584. return $core.withContext(function($ctx1) {
  585. //>>excludeEnd("ctx");
  586. var $2,$3,$1;
  587. $2=self._new();
  588. $recv($2)._element_(aDomElement);
  589. $3=$recv($2)._yourself();
  590. $1=$3;
  591. return $1;
  592. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  593. }, function($ctx1) {$ctx1.fill(self,"fromElement:",{aDomElement:aDomElement},$globals.Domite.klass)});
  594. //>>excludeEnd("ctx");
  595. },
  596. //>>excludeStart("ide", pragmas.excludeIdeData);
  597. args: ["aDomElement"],
  598. source: "fromElement: aDomElement\x0a\x09^ self new\x0a\x09\x09element: aDomElement;\x0a\x09\x09yourself",
  599. referencedClasses: [],
  600. //>>excludeEnd("ide");
  601. messageSends: ["element:", "new", "yourself"]
  602. }),
  603. $globals.Domite.klass);
  604. $core.addMethod(
  605. $core.method({
  606. selector: "fromElement:cursorBefore:",
  607. protocol: 'instance creation',
  608. fn: function (aDomElement,anotherDomElement){
  609. var self=this;
  610. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  611. return $core.withContext(function($ctx1) {
  612. //>>excludeEnd("ctx");
  613. var $2,$3,$1;
  614. $2=self._new();
  615. $recv($2)._element_(aDomElement);
  616. $recv($2)._referenceElement_(anotherDomElement);
  617. $3=$recv($2)._yourself();
  618. $1=$3;
  619. return $1;
  620. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  621. }, function($ctx1) {$ctx1.fill(self,"fromElement:cursorBefore:",{aDomElement:aDomElement,anotherDomElement:anotherDomElement},$globals.Domite.klass)});
  622. //>>excludeEnd("ctx");
  623. },
  624. //>>excludeStart("ide", pragmas.excludeIdeData);
  625. args: ["aDomElement", "anotherDomElement"],
  626. source: "fromElement: aDomElement cursorBefore: anotherDomElement\x0a\x09^ self new\x0a\x09\x09element: aDomElement;\x0a\x09\x09referenceElement: anotherDomElement;\x0a\x09\x09yourself",
  627. referencedClasses: [],
  628. //>>excludeEnd("ide");
  629. messageSends: ["element:", "new", "referenceElement:", "yourself"]
  630. }),
  631. $globals.Domite.klass);
  632. $core.addMethod(
  633. $core.method({
  634. selector: "fromSelector:",
  635. protocol: 'instance creation',
  636. fn: function (aString){
  637. var self=this;
  638. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  639. return $core.withContext(function($ctx1) {
  640. //>>excludeEnd("ctx");
  641. var $1;
  642. $1=self._fromElement_($recv(document)._querySelector_(aString));
  643. return $1;
  644. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  645. }, function($ctx1) {$ctx1.fill(self,"fromSelector:",{aString:aString},$globals.Domite.klass)});
  646. //>>excludeEnd("ctx");
  647. },
  648. //>>excludeStart("ide", pragmas.excludeIdeData);
  649. args: ["aString"],
  650. source: "fromSelector: aString\x0a\x09^ self fromElement: (document querySelector: aString)",
  651. referencedClasses: [],
  652. //>>excludeEnd("ide");
  653. messageSends: ["fromElement:", "querySelector:"]
  654. }),
  655. $globals.Domite.klass);
  656. $core.addMethod(
  657. $core.method({
  658. selector: "newElement:",
  659. protocol: 'instance creation',
  660. fn: function (aString){
  661. var self=this;
  662. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  663. return $core.withContext(function($ctx1) {
  664. //>>excludeEnd("ctx");
  665. var $1;
  666. $1=self._fromElement_($recv(document)._createElement_(aString));
  667. return $1;
  668. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  669. }, function($ctx1) {$ctx1.fill(self,"newElement:",{aString:aString},$globals.Domite.klass)});
  670. //>>excludeEnd("ctx");
  671. },
  672. //>>excludeStart("ide", pragmas.excludeIdeData);
  673. args: ["aString"],
  674. source: "newElement: aString\x0a\x09^ self fromElement: (document createElement: aString)",
  675. referencedClasses: [],
  676. //>>excludeEnd("ide");
  677. messageSends: ["fromElement:", "createElement:"]
  678. }),
  679. $globals.Domite.klass);
  680. $core.addMethod(
  681. $core.method({
  682. selector: "newStream",
  683. protocol: 'instance creation',
  684. fn: function (){
  685. var self=this;
  686. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  687. return $core.withContext(function($ctx1) {
  688. //>>excludeEnd("ctx");
  689. var $1;
  690. $1=self._fromElement_($recv(document)._createDocumentFragment());
  691. return $1;
  692. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  693. }, function($ctx1) {$ctx1.fill(self,"newStream",{},$globals.Domite.klass)});
  694. //>>excludeEnd("ctx");
  695. },
  696. //>>excludeStart("ide", pragmas.excludeIdeData);
  697. args: [],
  698. source: "newStream\x0a\x09^ self fromElement: document createDocumentFragment",
  699. referencedClasses: [],
  700. //>>excludeEnd("ide");
  701. messageSends: ["fromElement:", "createDocumentFragment"]
  702. }),
  703. $globals.Domite.klass);
  704. $core.addMethod(
  705. $core.method({
  706. selector: "nextPutDomNode:",
  707. protocol: '*DOMite',
  708. fn: function (aNode){
  709. var self=this;
  710. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  711. return $core.withContext(function($ctx1) {
  712. //>>excludeEnd("ctx");
  713. self._nextPut_(aNode);
  714. return self;
  715. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  716. }, function($ctx1) {$ctx1.fill(self,"nextPutDomNode:",{aNode:aNode},$globals.ProtoStream)});
  717. //>>excludeEnd("ctx");
  718. },
  719. //>>excludeStart("ide", pragmas.excludeIdeData);
  720. args: ["aNode"],
  721. source: "nextPutDomNode: aNode\x0a\x09self nextPut: aNode",
  722. referencedClasses: [],
  723. //>>excludeEnd("ide");
  724. messageSends: ["nextPut:"]
  725. }),
  726. $globals.ProtoStream);
  727. });