DOMite.js 23 KB

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