on c8eeedf help sign in
elk/libraries/Native/Basics.js
111 lines 2.3 kB history raw
2Elm.Native.Basics = {};
3Elm.Native.Basics.make = function(elm) {
4 elm.Native = elm.Native || {};
5 elm.Native.Basics = elm.Native.Basics || {};
6 if (elm.Native.Basics.values) return elm.Native.Basics.values;
8 var JS = Elm.Native.JavaScript.make(elm);
9 var Utils = Elm.Native.Utils.make(elm);
11 function div(a, b) {
12 return (a/b)|0;
13 }
14 function rem(a, b) {
15 return a % b;
16 }
17 var mod = Utils.mod;
18 function logBase(base, n) {
19 return Math.log(n) / Math.log(base);
20 }
21 function negate(n) {
22 return -n;
23 }
24 function abs(n) {
25 return n < 0 ? -n : n;
26 }
28 function min(a, b) {
29 return Utils.cmp(a,b) < 0 ? a : b;
30 }
31 function max(a, b) {
32 return Utils.cmp(a,b) > 0 ? a : b;
33 }
34 function clamp(lo, hi, n) {
35 return Utils.cmp(n,lo) < 0 ? lo : Utils.cmp(n,hi) > 0 ? hi : n;
36 }
38 function xor(a, b) {
39 return a !== b;
40 }
41 function not(b) {
42 return !b;
43 }
44 function isInfinite(n) {
45 return n === Infinity || n === -Infinity
46 }
48 function truncate(n) {
49 return n|0;
50 }
52 function degrees(d) {
53 return d * Math.PI / 180;
54 }
55 function turns(t) {
56 return 2 * Math.PI * t;
57 }
58 function fromPolar(point) {
59 var r = point._0;
60 var t = point._1;
61 return Utils.Tuple2(r * Math.cos(t), r * Math.sin(t));
62 }
63 function toPolar(point) {
64 var x = point._0;
65 var y = point._1;
66 return Utils.Tuple2(Math.sqrt(x * x + y * y), Math.atan2(y,x));
67 }
69 var basics = {
70 div: F2(div),
71 rem: F2(rem),
72 mod: mod,
74 pi: Math.PI,
75 e: Math.E,
76 cos: Math.cos,
77 sin: Math.sin,
78 tan: Math.tan,
79 acos: Math.acos,
80 asin: Math.asin,
81 atan: Math.atan,
82 atan2: F2(Math.atan2),
84 degrees: degrees,
85 turns: turns,
86 fromPolar: fromPolar,
87 toPolar: toPolar,
89 sqrt: Math.sqrt,
90 logBase: F2(logBase),
91 negate: negate,
92 abs: abs,
93 min: F2(min),
94 max: F2(max),
95 clamp: F3(clamp),
96 compare: Utils.compare,
98 xor: F2(xor),
99 not: not,
101 truncate: truncate,
102 ceiling: Math.ceil,
103 floor: Math.floor,
104 round: Math.round,
105 toFloat: function(x) { return x; },
106 isNaN: isNaN,
107 isInfinite: isInfinite
108 };
110 return elm.Native.Basics.values = basics;
111};