Advertisement
Guest User

Untitled

a guest
May 30th, 2015
292
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.86 KB | None | 0 0
  1. (function(){
  2. var ns={};
  3. ns.Program = {};
  4. ns.Program.main = (function() {
  5. var patternInput = ns.Program.init();
  6. var ractive = patternInput[0];
  7. var data = patternInput[1];
  8. ns.Program.todosProcess(ractive, data['items']);
  9. ns.Program.toggleProcess(ractive, data['items']);
  10. return ns.Program.filterProcess(ractive)
  11. });
  12. ns.Program.init = (function() {
  13. ns.FSDic.Add(((Ractive).events), 'enter', ns.RactiveExt['RactiveStatic.makeCustomKeyEvent']((Ractive), 13.0), 'string', 'function');
  14. ns.FSDic.Add(((Ractive).events), 'escape', ns.RactiveExt['RactiveStatic.makeCustomKeyEvent']((Ractive), 27.0), 'string', 'function');
  15. var filters = ns.Program.add('active', (function(t) {
  16. return !t.completed
  17. }), ns.Program.add('completed', (function(t) {
  18. return t.completed
  19. }), ns.Program.add('all', (function(t) {
  20. return true
  21. }), new ns.FSDic('string', 'function'), 'string', 'function'), 'string', 'function'), 'string', 'function');
  22. var data = ns.Program.add('filters', filters, ns.Program.add('currentFilter', 'all', ns.Program.add('items', (function() {
  23. var matchValue = ns.Storage.load(ns.ResizeArray);
  24. if(matchValue === null) {
  25. return new ns.ResizeArray('object')
  26. }
  27. else {
  28. var v = matchValue;
  29. return v
  30. }
  31. })(), new ns.FSDic('string', 'object'), 'string', 'object'), 'string', 'object'), 'string', 'object');
  32. var options = {};
  33. (options.el)='#todoapp';
  34. (options.template)='#main';
  35. (options.data)=data;
  36. (options.twoway)=false;
  37. var ractive = (new (Ractive)(options));
  38. return [ractive, data]
  39. });
  40. ns.Program.add = (function(key, value, dic, $a, $b) {
  41. ns.FSDic.Add(dic, key, value, $a, $b);
  42. return dic
  43. });
  44. ns.Program.todosProcess = (function(ractive, todos) {
  45. var editingLoop = (function(tupledArg) {
  46. var r = tupledArg[0];
  47. var todos1 = tupledArg[1];
  48. return ns.AsyncBuilder.Delay(ns.AsyncModule.async, (function() {
  49. var patternInput = ns.RactiveExt.onStream2(r, 'submit', 'cancel');
  50. var ev2 = patternInput[1];
  51. var ev1 = patternInput[0];
  52. return ns.AsyncBuilder.Bind(ns.AsyncModule.async, ns.Async.AwaitObservable2(ev1, ev2, 'Array', 'Array'), (function(_arg1) {
  53. var choice = _arg1;
  54. if(choice.Tag === 1) {
  55. undefined;
  56. return ns.AsyncBuilder.Zero(ns.AsyncModule.async)
  57. }
  58. else {
  59. var ev = choice.Item[0];
  60. var arg = choice.Item[1];
  61. var index = (ev.index)['i'];
  62. var oldTodo = (ev.context);
  63. var input = (ev.node);
  64. if((input.value).length > 1) {
  65. todos1.splice(index, 1, new ns.Todo((input.value), oldTodo.completed));
  66. return ns.AsyncBuilder.Zero(ns.AsyncModule.async)
  67. }
  68. else {
  69. todos1.splice(index, 1);
  70. return ns.AsyncBuilder.Zero(ns.AsyncModule.async)
  71. }
  72. }
  73. }), ns.FSharpChoice, 'undefined')
  74. }), 'undefined')
  75. });
  76. var waitingLoop = (function(tupledArg) {
  77. var r = tupledArg[0];
  78. var todos1 = tupledArg[1];
  79. return ns.AsyncBuilder.Delay(ns.AsyncModule.async, (function() {
  80. var patternInput = ns.RactiveExt.onStream4(r, 'newTodo', 'remove', 'clearCompleted', 'edit');
  81. var ev4 = patternInput[3];
  82. var ev3 = patternInput[2];
  83. var ev2 = patternInput[1];
  84. var ev1 = patternInput[0];
  85. return ns.AsyncBuilder.Bind(ns.AsyncModule.async, ns.Async.AwaitObservable4(ev1, ev2, ev3, ev4, 'Array', 'Array', 'Array', 'Array'), (function(_arg2) {
  86. var choice = _arg2;
  87. return ns.AsyncBuilder.Combine(ns.AsyncModule.async, (function() {
  88. if(choice.Tag === 1) {
  89. var ev = choice.Item[0];
  90. var arg = choice.Item[1];
  91. var index = (ev.index)['i'];
  92. todos1.splice(index, 1);
  93. return ns.AsyncBuilder.Zero(ns.AsyncModule.async)
  94. }
  95. else if(choice.Tag === 2) {
  96. return ns.AsyncBuilder.For(ns.AsyncModule.async, ns.Range.customStep((todos1.length - 1), -1, 0), (function(_arg3) {
  97. var i = _arg3;
  98. if(todos1[i].completed) {
  99. todos1.splice(i, 1);
  100. return ns.AsyncBuilder.Zero(ns.AsyncModule.async)
  101. }
  102. else {
  103. return ns.AsyncBuilder.Zero(ns.AsyncModule.async)
  104. }
  105. }), 'number')
  106. }
  107. else if(choice.Tag === 3) {
  108. var ev = choice.Item[0];
  109. var arg = choice.Item[1];
  110. var li = (((ev.node).parentElement).parentElement);
  111. var input = (li.querySelector('#edit'));
  112. ((li.classList).add('editing'));
  113. (input.value)=(ev.context).description;
  114. (input.focus());
  115. return ns.AsyncBuilder.Bind(ns.AsyncModule.async, editingLoop([r, todos1]), (function() {
  116. ((li.classList).remove('editing'));
  117. return ns.AsyncBuilder.Zero(ns.AsyncModule.async)
  118. }), 'undefined', 'undefined')
  119. }
  120. else {
  121. var ev = choice.Item[0];
  122. var arg = choice.Item[1];
  123. var input = (ev.node);
  124. todos1.push(new ns.Todo((input.value), false));
  125. (input.value)='';
  126. return ns.AsyncBuilder.Zero(ns.AsyncModule.async)
  127. }
  128. })(), ns.AsyncBuilder.Delay(ns.AsyncModule.async, (function() {
  129. ns.Storage.save(todos1, ns.ResizeArray);
  130. return ns.AsyncBuilder.ReturnFrom(ns.AsyncModule.async, waitingLoop([r, todos1]), 'undefined')
  131. }), 'undefined'), 'undefined')
  132. }), ns.FSharpChoice1, 'undefined')
  133. }), 'undefined')
  134. });
  135. return ns.Async.StartImmediate(waitingLoop([ractive, todos]), null)
  136. });
  137. ns.Program.toggleProcess = (function(ractive, todos) {
  138. ns.Observable.Add((function(tupledArg) {
  139. var ev = tupledArg[0];
  140. var arg = tupledArg[1];
  141. var index = (ev.index)['i'];
  142. var isDone = ((ev.node).checked);
  143. todos.splice(index, 1, (function() {
  144. var inputRecord = todos[index];
  145. return new ns.Todo(inputRecord.description, isDone)
  146. })());
  147. return ns.Storage.save(todos, ns.ResizeArray)
  148. }), ns.RactiveExt.onStream1(ractive, 'toggle'), 'Array');
  149. return ns.Observable.Add((function(tupledArg) {
  150. var ev = tupledArg[0];
  151. var arg = tupledArg[1];
  152. var isDone = ((ev.node).checked);
  153. for(var i=0;i<=(todos.length - 1);i++) {
  154. if(todos[i].completed !== isDone) {
  155. todos.splice(i, 1, (function() {
  156. var inputRecord = todos[i];
  157. return new ns.Todo(inputRecord.description, isDone)
  158. })())
  159. }
  160. };
  161. return ns.Storage.save(todos, ns.ResizeArray)
  162. }), ns.RactiveExt.onStream1(ractive, 'toggleAll'), 'Array')
  163. });
  164. ns.Program.filterProcess = (function(ractive) {
  165. return ns.Observable.Add((function(ev) {
  166. var matchValue = (((window).location).hash).substr(2);
  167. if(matchValue === 'active') {
  168. return (ractive.set('currentFilter', 'active'))
  169. }
  170. else if(matchValue === 'completed') {
  171. return (ractive.set('currentFilter', 'completed'))
  172. }
  173. else {
  174. (((window).location).hash)='';
  175. return (ractive.set('currentFilter', 'all'))
  176. }
  177. }), ns.ObservableExt['Window.get_onhashchangeStream']((window)), 'Event')
  178. });
  179. ns.RactiveExt = {};
  180. ns.RactiveExt['RactiveStatic.makeCustomKeyEvent'] = (function(x, keyCode) {
  181. var plugin = (function(node) {
  182. return (function(fire) {
  183. var keydownHandler = (function(ev) {
  184. if((ev.which) === keyCode) {
  185. var f = {};
  186. (f.node)=node;
  187. (f.original)=ev;
  188. return fire(f)
  189. }
  190. else {
  191. return undefined
  192. }
  193. });
  194. (node.addEventListener('keydown', keydownHandler, false));
  195. var t = {};
  196. (t.teardown)=(function(unitVar0) {
  197. return (node.removeEventListener('keydown', keydownHandler, false))
  198. });
  199. return t
  200. })
  201. });
  202. return (function(delegateArg, delegateArg1) {
  203. return plugin(delegateArg)(delegateArg1)
  204. })
  205. });
  206. ns.RactiveExt.onStream2 = (function(x, eventName1, eventName2) {
  207. return [new ns.RactiveEventStream(x, eventName1), new ns.RactiveEventStream(x, eventName2)]
  208. });
  209. ns.RactiveExt.onStream4 = (function(x, eventName1, eventName2, eventName3, eventName4) {
  210. return [new ns.RactiveEventStream(x, eventName1), new ns.RactiveEventStream(x, eventName2), new ns.RactiveEventStream(x, eventName3), new ns.RactiveEventStream(x, eventName4)]
  211. });
  212. ns.RactiveExt.onStream1 = (function(x, eventName) {
  213. return new ns.RactiveEventStream(x, eventName)
  214. });
  215. ns.FSDic = (function($k, $v) {});
  216. ns.FSDic.Add = (function(_this, key, value) {
  217. if (_this[key] === undefined) { _this[key] = value } else { throw 'Key already exists' }
  218. });
  219. ns.ResizeArray = (function($T) {
  220. this.constructor=ns.ResizeArray
  221. });
  222. ;
  223. ns.ResizeArray.prototype = Array.prototype;
  224. ns.Storage = {};
  225. ns.Storage.load = (function($a) {
  226. var attempt = ((localStorage).getItem(ns.Storage.key));
  227. if(attempt === null) {
  228. return null
  229. }
  230. else {
  231. return ((JSON).parse(attempt, null))
  232. }
  233. });
  234. ns.Storage.save = (function(data, $a) {
  235. return ((localStorage).setItem(ns.Storage.key, ((JSON).stringify(data))))
  236. });
  237. ns.AsyncModule = {};
  238. ;
  239. ns.AsyncModule.async = (function() {
  240. return new ns.AsyncBuilder()
  241. });
  242. ns.AsyncModule.protectedCont = (function(f, $a) {
  243. return ns.Async1.Cont((function(args) {
  244. ns.CancellationToken.ThrowIfCancellationRequested(args.Aux.CancellationToken);
  245. ns.Operators.incr(args.Aux.StackCounter);
  246. if(ns.Operators.op_Dereference(args.Aux.StackCounter, 'number') > 1000) {
  247. ns.Operators.op_ColonEquals(args.Aux.StackCounter, 0, 'number');
  248. return setTimeout((function() {
  249. try {
  250. return f(args)
  251. }
  252. catch(ex) {
  253. return args.Aux.ExceptionCont(ex)
  254. }
  255. }), 1.0)
  256. }
  257. else {
  258. try {
  259. return f(args)
  260. }
  261. catch(ex) {
  262. return args.Aux.ExceptionCont(ex)
  263. }
  264. }
  265. }))
  266. });
  267. ns.AsyncModule.invokeCont = (function(k, value, $a) {
  268. return k.Cont(value)
  269. });
  270. ns.AsyncBuilder = (function() {});
  271. ns.AsyncBuilder.Zero = (function(x) {
  272. return ns.AsyncModule.protectedCont((function(k) {
  273. return ns.AsyncModule.invokeCont(k, undefined, 'undefined')
  274. }), 'undefined')
  275. });
  276. ns.AsyncBuilder.Bind = (function(x, _arg1, f, $T, $R) {
  277. var v = _arg1.Item;
  278. return ns.AsyncModule.protectedCont((function(k) {
  279. var cont = (function(a) {
  280. var patternInput = f(a);
  281. var r = patternInput.Item;
  282. return r(k)
  283. });
  284. return v(new ns.AsyncParams(cont, k.Aux))
  285. }), $R)
  286. });
  287. ns.AsyncBuilder.Delay = (function(x, f, $c) {
  288. return ns.AsyncModule.protectedCont((function(k) {
  289. var patternInput = f();
  290. var r = patternInput.Item;
  291. return r(k)
  292. }), $c)
  293. });
  294. ns.AsyncBuilder.For = (function(x, seq, body, $a) {
  295. var enumerator = seq.constructor.IEnumerable.GetEnumerator(seq, $a);
  296. return ns.AsyncBuilder.While(x, (function() {
  297. return enumerator.constructor.IEnumerator.MoveNext(enumerator)
  298. }), ns.AsyncBuilder.Delay(x, (function() {
  299. return body(enumerator.constructor.IEnumerator1.get_Current(enumerator, $a))
  300. }), 'undefined'))
  301. });
  302. ns.AsyncBuilder.While = (function(x, cond, body) {
  303. if(cond()) {
  304. return ns.AsyncBuilder.Bind(x, body, (function() {
  305. return ns.AsyncBuilder.While(x, cond, body)
  306. }), 'undefined', 'undefined')
  307. }
  308. else {
  309. return ns.AsyncBuilder.Return(x, 'undefined')
  310. }
  311. });
  312. ns.AsyncBuilder.Return = (function(x, v, $T) {
  313. return ns.AsyncModule.protectedCont((function(k) {
  314. return ns.AsyncModule.invokeCont(k, v, $T)
  315. }), $T)
  316. });
  317. ns.AsyncBuilder.ReturnFrom = (function(x, w, $T) {
  318. return w
  319. });
  320. ns.AsyncBuilder.Combine = (function(x, work1, work2, $b) {
  321. return ns.AsyncBuilder.Bind(x, work1, (function() {
  322. return work2
  323. }), 'undefined', $b)
  324. });
  325. ns.RactiveEventStream = (function(ractive, eventName) {
  326. this.ractive = ractive;
  327. this.eventName = eventName
  328. });
  329. ns.RactiveEventStream.IObservable = {};
  330. ns.RactiveEventStream.IObservable.Subscribe = (function(x, observer) {
  331. var remover = (x.ractive.on(x.eventName, (function(ev, arg) {
  332. return observer.constructor.IObserver.OnNext(observer, [ev, arg], 'Array')
  333. })));
  334. return new ns.ActionDisposable((function() {
  335. return (remover.cancel())
  336. }))
  337. });
  338. ns.ActionDisposable = (function(f) {
  339. this.f = f
  340. });
  341. ns.ActionDisposable.IDisposable = {};
  342. ns.ActionDisposable.IDisposable.Dispose = (function(_this) {
  343. return _this.f()
  344. });
  345. ns.Async = {};
  346. ns.Async.AwaitObservable2 = (function(ev1, ev2, $h, $i) {
  347. var ev11 = ns.Observable.Map((function(arg0) {
  348. return ns.FSharpChoice.Choice1Of2(arg0)
  349. }), ev1, $h, ns.FSharpChoice);
  350. var ev21 = ns.Observable.Map((function(arg0) {
  351. return ns.FSharpChoice.Choice2Of2(arg0)
  352. }), ev2, $i, ns.FSharpChoice);
  353. return ns.Async.AwaitObservable1(ns.Observable.Merge(ev11, ev21, ns.FSharpChoice), ns.FSharpChoice)
  354. });
  355. ns.Async.AwaitObservable1 = (function(w1, $T) {
  356. return ns.AsyncModule.protectedCont((function(k) {
  357. var remover = ns.Operators.ref(null, 'IDisposable');
  358. var observer = ns.ActionObserver['.ctor']((function(value) {
  359. ns.Operators.op_Dereference(remover, 'IDisposable').constructor.IDisposable.Dispose(ns.Operators.op_Dereference(remover, 'IDisposable'));
  360. ns.CancellationToken.ThrowIfCancellationRequested(k.Aux.CancellationToken);
  361. return k.Cont(value)
  362. }), $T);
  363. return ns.Operators.op_ColonEquals(remover, w1.constructor.IObservable.Subscribe(w1, observer, $T), 'IDisposable')
  364. }), $T)
  365. });
  366. ns.Async.StartImmediate = (function(workflow, cancellationToken) {
  367. var token = (cancellationToken===null?new ns.CancellationToken(null):cancellationToken);
  368. var f = workflow.Item;
  369. var aux = new ns.AsyncParamsAux(ns.Operators.ref(0, 'number'), (function(x) {
  370. return x
  371. }), (function(x) {
  372. return x
  373. }), token);
  374. return f(new ns.AsyncParams((function(x) {
  375. return x
  376. }), aux))
  377. });
  378. ns.Async.AwaitObservable4 = (function(ev1, ev2, ev3, ev4, $a, $b, $c, $d) {
  379. var ev11 = ns.Observable.Map((function(arg0) {
  380. return ns.FSharpChoice1.Choice1Of4(arg0)
  381. }), ev1, $a, ns.FSharpChoice1);
  382. var ev21 = ns.Observable.Map((function(arg0) {
  383. return ns.FSharpChoice1.Choice2Of4(arg0)
  384. }), ev2, $b, ns.FSharpChoice1);
  385. var ev31 = ns.Observable.Map((function(arg0) {
  386. return ns.FSharpChoice1.Choice3Of4(arg0)
  387. }), ev3, $c, ns.FSharpChoice1);
  388. var ev41 = ns.Observable.Map((function(arg0) {
  389. return ns.FSharpChoice1.Choice4Of4(arg0)
  390. }), ev4, $d, ns.FSharpChoice1);
  391. return ns.Async.AwaitObservable1(ns.Observable.Merge(ev41, ns.Observable.Merge(ev31, ns.Observable.Merge(ev11, ev21, ns.FSharpChoice1), ns.FSharpChoice1), ns.FSharpChoice1), ns.FSharpChoice1)
  392. });
  393. ns.FSharpChoice = (function() {});
  394. ns.FSharpChoice.Choice1Of2 = (function(a0) {
  395. var _this = new ns.FSharpChoice();
  396. _this.Tag = 0;
  397. _this.Item = a0;
  398. return _this
  399. });
  400. ns.FSharpChoice.Choice2Of2 = (function(a0) {
  401. var _this = new ns.FSharpChoice();
  402. _this.Tag = 1;
  403. _this.Item = a0;
  404. return _this
  405. });
  406. ns.Observable = {};
  407. ns.Observable.Map = (function(f, w, $T, $a) {
  408. return new ns.MapObservable(f, w, $T, $a)
  409. });
  410. ns.Observable.protect = (function(f, succeed, fail, $a, $b) {
  411. var matchValue = (function() {
  412. try {
  413. return ns.FSharpChoice.Choice1Of2(f())
  414. }
  415. catch(e) {
  416. return ns.FSharpChoice.Choice2Of2(e)
  417. }
  418. })();
  419. if(matchValue.Tag === 1) {
  420. var e = matchValue.Item;
  421. return fail(e)
  422. }
  423. else {
  424. var x = matchValue.Item;
  425. return succeed(x)
  426. }
  427. });
  428. ns.Observable.Merge = (function(w1, w2, $T) {
  429. return new ns.MergeObservable(w1, w2, $T)
  430. });
  431. ns.Observable.Add = (function(f, w, $T) {
  432. return w.constructor.IObservable.Subscribe(w, ns.ActionObserver['.ctor'](f, $T), $T)
  433. });
  434. ns.MapObservable = (function(f, w, $T, $U) {
  435. this.f = f;
  436. this.w = w
  437. });
  438. ns.MapObservable.IObservable = {};
  439. ns.MapObservable.IObservable.Subscribe = (function(x, observer, $T, $U) {
  440. var newObserver = new ns.ActionObserver((function(v) {
  441. return ns.Observable.protect((function() {
  442. return x.f(v)
  443. }), (function(arg00) {
  444. return observer.constructor.IObserver.OnNext(observer, arg00, $U)
  445. }), (function(arg00) {
  446. return observer.constructor.IObserver.OnError(observer, arg00, $U)
  447. }), $U, 'undefined')
  448. }), (function(e) {
  449. return observer.constructor.IObserver.OnError(observer, e, $U)
  450. }), (function() {
  451. return observer.constructor.IObserver.OnCompleted(observer, $U)
  452. }), $T);
  453. return x.w.constructor.IObservable.Subscribe(x.w, newObserver, $T)
  454. });
  455. ns.ActionObserver = (function(onNext, onError, onCompleted, $T) {
  456. this.onNext = onNext;
  457. this.onError = onError;
  458. this.onCompleted = onCompleted
  459. });
  460. ns.ActionObserver['.ctor'] = (function(onNext, $T) {
  461. return new ns.ActionObserver(onNext, (function(e) {
  462. return undefined
  463. }), (function() {
  464. return undefined
  465. }), $T)
  466. });
  467. ns.ActionObserver.IObserver = {};
  468. ns.ActionObserver.IObserver.OnNext = (function(_this, v, $T) {
  469. return _this.onNext(v)
  470. });
  471. ns.ActionObserver.IObserver.OnError = (function(_this, e, $T) {
  472. return _this.onError(e)
  473. });
  474. ns.ActionObserver.IObserver.OnCompleted = (function(_this, $T) {
  475. return _this.onCompleted()
  476. });
  477. ns.MergeObservable = (function(w1, w2, $T) {
  478. this.w1 = w1;
  479. this.w2 = w2
  480. });
  481. ns.MergeObservable.IObservable = {};
  482. ns.MergeObservable.IObservable.Subscribe = (function(x, observer, $T) {
  483. var stopped = ns.Operators.ref(false, 'boolean');
  484. var completed1 = ns.Operators.ref(false, 'boolean');
  485. var completed2 = ns.Operators.ref(false, 'boolean');
  486. var observer1 = new ns.ActionObserver((function(v) {
  487. if(!ns.Operators.op_Dereference(stopped, 'boolean')) {
  488. return observer.constructor.IObserver.OnNext(observer, v, $T)
  489. }
  490. else {
  491. return undefined
  492. }
  493. }), (function(e) {
  494. if(!ns.Operators.op_Dereference(stopped, 'boolean')) {
  495. ns.Operators.op_ColonEquals(stopped, true, 'boolean');
  496. return observer.constructor.IObserver.OnError(observer, e, $T)
  497. }
  498. else {
  499. return undefined
  500. }
  501. }), (function() {
  502. if(!ns.Operators.op_Dereference(stopped, 'boolean')) {
  503. ns.Operators.op_ColonEquals(completed1, true, 'boolean');
  504. if(ns.Operators.op_Dereference(completed1, 'boolean') && ns.Operators.op_Dereference(completed2, 'boolean')) {
  505. ns.Operators.op_ColonEquals(stopped, true, 'boolean');
  506. return observer.constructor.IObserver.OnCompleted(observer, $T)
  507. }
  508. else {
  509. return undefined
  510. }
  511. }
  512. else {
  513. return undefined
  514. }
  515. }), $T);
  516. var observer2 = new ns.ActionObserver((function(v) {
  517. if(!ns.Operators.op_Dereference(stopped, 'boolean')) {
  518. return observer.constructor.IObserver.OnNext(observer, v, $T)
  519. }
  520. else {
  521. return undefined
  522. }
  523. }), (function(e) {
  524. if(!ns.Operators.op_Dereference(stopped, 'boolean')) {
  525. ns.Operators.op_ColonEquals(stopped, true, 'boolean');
  526. return observer.constructor.IObserver.OnError(observer, e, $T)
  527. }
  528. else {
  529. return undefined
  530. }
  531. }), (function() {
  532. if(!ns.Operators.op_Dereference(stopped, 'boolean')) {
  533. ns.Operators.op_ColonEquals(completed2, true, 'boolean');
  534. if(ns.Operators.op_Dereference(completed1, 'boolean') && ns.Operators.op_Dereference(completed2, 'boolean')) {
  535. ns.Operators.op_ColonEquals(stopped, true, 'boolean');
  536. return observer.constructor.IObserver.OnCompleted(observer, $T)
  537. }
  538. else {
  539. return undefined
  540. }
  541. }
  542. else {
  543. return undefined
  544. }
  545. }), $T);
  546. var h1 = x.w1.constructor.IObservable.Subscribe(x.w1, observer1, $T);
  547. var h2 = x.w2.constructor.IObservable.Subscribe(x.w2, observer2, $T);
  548. return new ns.ActionDisposable((function() {
  549. h1.constructor.IDisposable.Dispose(h1);
  550. return h2.constructor.IDisposable.Dispose(h2)
  551. }))
  552. });
  553. ns.Operators = {};
  554. ns.Operators.ref = (function(x, $a) {
  555. return new ns.FSharpRef(x)
  556. });
  557. ns.Operators.op_Dereference = (function(r, $a) {
  558. return r.contents
  559. });
  560. ns.Operators.op_ColonEquals = (function(r, v, $a) {
  561. r.contents = v
  562. });
  563. ns.Operators.failwith = (function(msg, $a) {
  564. throw(ns.Operators.exn(msg))
  565. });
  566. ns.Operators.exn = (function(msg) {
  567. return new ns.FSException(msg)
  568. });
  569. ns.Operators.incr = (function(x) {
  570. return ns.Operators.op_ColonEquals(x, (ns.Operators.op_Dereference(x, 'number') + 1), 'number')
  571. });
  572. ns.FSharpRef = (function(a0) {
  573. this.contents = a0
  574. });
  575. ns.CancellationToken = (function(a0) {
  576. this.Cell = a0
  577. });
  578. ns.CancellationToken.ThrowIfCancellationRequested = (function(x) {
  579. var matchValue = x.Cell;
  580. if(matchValue !== null) {
  581. if((function() {
  582. var cell = matchValue;
  583. return ns.Operators.op_Dereference(cell, 'boolean')
  584. })()) {
  585. var cell = matchValue;
  586. return ns.Operators.failwith('OperationCancelledException', 'undefined')
  587. }
  588. else {
  589. return undefined
  590. }
  591. }
  592. else {
  593. return undefined
  594. }
  595. });
  596. ns.FSException = (function(message) {
  597. this.message = message
  598. });
  599. ns.Async1 = (function() {});
  600. ns.Async1.Cont = (function(a0) {
  601. var _this = new ns.Async1();
  602. _this.Tag = 0;
  603. _this.Item = a0;
  604. return _this
  605. });
  606. ns.Todo = (function(a0, a1) {
  607. this.description = a0;
  608. this.completed = a1
  609. });
  610. ns.AsyncParams = (function(a0, a1) {
  611. this.Cont = a0;
  612. this.Aux = a1
  613. });
  614. ns.AsyncParamsAux = (function(a0, a1, a2, a3) {
  615. this.StackCounter = a0;
  616. this.ExceptionCont = a1;
  617. this.CancelledCont = a2;
  618. this.CancellationToken = a3
  619. });
  620. ns.FSharpChoice1 = (function() {});
  621. ns.FSharpChoice1.Choice1Of4 = (function(a0) {
  622. var _this = new ns.FSharpChoice1();
  623. _this.Tag = 0;
  624. _this.Item = a0;
  625. return _this
  626. });
  627. ns.FSharpChoice1.Choice2Of4 = (function(a0) {
  628. var _this = new ns.FSharpChoice1();
  629. _this.Tag = 1;
  630. _this.Item = a0;
  631. return _this
  632. });
  633. ns.FSharpChoice1.Choice3Of4 = (function(a0) {
  634. var _this = new ns.FSharpChoice1();
  635. _this.Tag = 2;
  636. _this.Item = a0;
  637. return _this
  638. });
  639. ns.FSharpChoice1.Choice4Of4 = (function(a0) {
  640. var _this = new ns.FSharpChoice1();
  641. _this.Tag = 3;
  642. _this.Item = a0;
  643. return _this
  644. });
  645. ns.Range = {};
  646. ns.Range.customStep = (function(first, stepping, last, $a, $b) {
  647. var zero = 0;
  648. return ns.SeqModule.unfold((function(x) {
  649. if(((stepping > zero) && (x <= last)) || ((stepping < zero) && (x >= last))) {
  650. return [x, (x + stepping)]
  651. }
  652. else {
  653. return null
  654. }
  655. }), first, $a, $a)
  656. });
  657. ns.SeqModule = {};
  658. ns.SeqModule.unfold = (function(f, seed, $acc, $a) {
  659. return ns.SeqModule.fromFactory((function() {
  660. return new ns.UnfoldEnumerator(seed, f, $acc, $a)
  661. }), $a)
  662. });
  663. ns.SeqModule.fromFactory = (function(f, $a) {
  664. return new ns.CreateEnumerable(f, $a)
  665. });
  666. ns.UnfoldEnumerator = (function(seed, unfold, $acc, $a) {
  667. this.seed = seed;
  668. this.unfold = unfold;
  669. this.acc = this.seed;
  670. this.current = null
  671. });
  672. ns.UnfoldEnumerator.IEnumerator1 = {};
  673. ns.UnfoldEnumerator.IEnumerator1.get_Current = (function(__, $acc, $a) {
  674. return __.current
  675. });
  676. ns.UnfoldEnumerator.IDisposable = {};
  677. ns.UnfoldEnumerator.IDisposable.Dispose = (function(__, $acc, $a) {
  678. return undefined
  679. });
  680. ns.UnfoldEnumerator.IEnumerator = {};
  681. ns.UnfoldEnumerator.IEnumerator.MoveNext = (function(__, $acc, $a) {
  682. var matchValue = __.acc;
  683. return ((matchValue !== null) && (function() {
  684. var currAcc = matchValue;
  685. var matchValue1 = __.unfold(currAcc);
  686. if(matchValue1 !== null) {
  687. var value = matchValue1[0];
  688. var nextAcc = matchValue1[1];
  689. __.acc = nextAcc;
  690. __.current = value;
  691. return true
  692. }
  693. else {
  694. __.acc = null;
  695. __.current = null;
  696. return false
  697. }
  698. })())
  699. });
  700. ns.UnfoldEnumerator.IEnumerator.get_Current = (function(__, $acc, $a) {
  701. return __.current
  702. });
  703. ns.UnfoldEnumerator.IEnumerator.Reset = (function(__, $acc, $a) {
  704. __.acc = __.seed;
  705. __.current = null
  706. });
  707. ns.CreateEnumerable = (function(factory, $a) {
  708. this.factory = factory
  709. });
  710. ns.CreateEnumerable.IEnumerable = {};
  711. ns.CreateEnumerable.IEnumerable.GetEnumerator = (function(__, $a) {
  712. return __.factory()
  713. });
  714. ns.CreateEnumerable.IEnumerable1 = {};
  715. ns.CreateEnumerable.IEnumerable1.GetEnumerator = (function(__, $a) {
  716. return __.factory()
  717. });
  718. ns.HTMLEventStream = (function(el, ev, $T) {
  719. this.el = el;
  720. this.ev = ev
  721. });
  722. ns.HTMLEventStream.IObservable = {};
  723. ns.HTMLEventStream.IObservable.Subscribe = (function(x, observer, $T) {
  724. var listener = (function(ev) {
  725. return observer.constructor.IObserver.OnNext(observer, ev, $T)
  726. });
  727. (x.el.addEventListener(x.ev, listener, false));
  728. return new ns.ActionDisposable((function() {
  729. return (x.el.removeEventListener(x.ev, listener, false))
  730. }))
  731. });
  732. ns.ObservableExt = {};
  733. ns.ObservableExt['Window.get_onhashchangeStream'] = (function(__) {
  734. return new ns.HTMLEventStream(__, 'hashchange', 'Event')
  735. });
  736. return ns.Program.main()
  737. }());
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement