jsxgraph 1.4.4 → 1.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +24 -0
  2. package/build/Readme.md +17 -0
  3. package/build/bin/jsxcompressor.js +1 -0
  4. package/build/bin/jsxgraphcore-min.js +7 -0
  5. package/build/bin/jsxgraphcore.js +83017 -0
  6. package/build/bin/jsxgraphcore.min.js +67 -0
  7. package/build/compressor.build.json +14 -0
  8. package/build/compressor.deps.js +8 -0
  9. package/build/core-amd.build.json +14 -0
  10. package/build/core-amd.deps.js +81 -0
  11. package/build/core.build.json +14 -0
  12. package/build/core.deps.js +102 -0
  13. package/build/plot.build.json +15 -0
  14. package/distrib/README.md +24 -0
  15. package/distrib/geogebra.min.js +1 -1
  16. package/distrib/geonext.min.js +1 -1
  17. package/distrib/index.d.ts +28 -7
  18. package/distrib/intergeo.min.js +1 -1
  19. package/distrib/jsxgraph.css +6 -0
  20. package/distrib/jsxgraphcore.js +3 -3
  21. package/distrib/jsxgraphsrc.js +3558 -1857
  22. package/distrib/sketch.min.js +1 -1
  23. package/package.json +1 -1
  24. package/src/3d/box3d.js +43 -38
  25. package/src/3d/curve3d.js +157 -53
  26. package/src/3d/element3d.js +84 -0
  27. package/src/3d/linspace3d.js +427 -146
  28. package/src/3d/point3d.js +360 -123
  29. package/src/3d/surface3d.js +140 -42
  30. package/src/3d/view3d.js +319 -164
  31. package/src/base/board.js +163 -78
  32. package/src/base/constants.js +8 -1
  33. package/src/base/curve.js +51 -9
  34. package/src/base/polygon.js +111 -69
  35. package/src/base/text.js +122 -19
  36. package/src/base/ticks.js +12 -3
  37. package/src/element/button.js +7 -3
  38. package/src/element/checkbox.js +8 -4
  39. package/src/element/composition.js +7 -1
  40. package/src/element/conic.js +2 -2
  41. package/src/element/input.js +9 -5
  42. package/src/jsxgraph.js +4 -1
  43. package/src/loadjsxgraph.js +13 -8
  44. package/src/math/clip.js +34 -134
  45. package/src/math/geometry.js +204 -3
  46. package/src/math/math.js +1 -2
  47. package/src/math/nlp.js +865 -774
  48. package/src/options.js +185 -12
  49. package/src/options3d.js +24 -7
  50. package/src/parser/jessiecode.js +9 -3
  51. package/src/renderer/abstract.js +26 -15
  52. package/src/renderer/canvas.js +2 -2
  53. package/src/renderer/svg.js +15 -2
  54. package/src/utils/env.js +36 -53
  55. package/src/utils/type.js +75 -2
  56. package/src/3d/threed.js +0 -38
package/README.md CHANGED
@@ -19,6 +19,30 @@ to optimize the performance.
19
19
  Lehrstuhl für Mathematik und ihre Didaktik
20
20
  University of Bayreuth, Germany
21
21
 
22
+ Upcoming event: 3rd JSXGraph conference (online)
23
+ --------------
24
+
25
+ Date: October 4th - 6th, 2022
26
+
27
+ Conference homepage: <https://jsxgraph.org/conf2022/>
28
+
29
+ The conference will bring together developers and teachers, instructors and designers who are interested or already experienced in using JSXGraph (https://jsxgraph.org) to enhance digital learning of STEM topics.
30
+
31
+ The conference will be an entirely online conference. All participants are required to register (https://jsxgraph.org/conf2022/registration/), registration is free.
32
+
33
+ We invite all participants to contribute a talk or workshop and
34
+
35
+ - report about their concepts, experience, and workflow,
36
+ - present their applications and best practices,
37
+ - discuss pedagogical concepts involving JSXGraph.
38
+
39
+ Deadline for submission of talks / presentations: 31. August 2022
40
+
41
+ Details about the conference software will be announced at a later stage.
42
+
43
+ The 3nd International JSXGraph conference 2022 will be organized by the center of Mobile Learning with Digital Technology (https://mobiles-lernen.uni-bayreuth.de/) at the University of Bayreuth, Germany.
44
+
45
+
22
46
  Website
23
47
  -------
24
48
 
@@ -0,0 +1,17 @@
1
+ All src files of JSXGraph have to be included into `core.deps.json`.
2
+ Not included by purpose are the folowing files:
3
+
4
+ 'jsxgraphnode.js'
5
+ 'loadjsxgraph.js'
6
+ 'math/bst.js'
7
+ 'parser/jessiescript.js'
8
+ 'reader/cinderella.js'
9
+ 'reader/geogebra.js'
10
+ 'reader/geonext.js'
11
+ 'reader/graph.js'
12
+ 'reader/intergeo.js'
13
+ 'reader/sketch.js'
14
+ 'reader/tracenpoche.js'
15
+ 'themes/dark.js'
16
+ 'themes/gui.js'
17
+
@@ -0,0 +1 @@
1
+ !function(){var e,r,n;!function(t){function o(e,r){return C.call(e,r)}function i(e,r){var n,t,o,i,u,c,a,f,s,l,d,p,h=r&&r.split("/"),g=y.map,b=g&&g["*"]||{};if(e){for(e=e.split("/"),u=e.length-1,y.nodeIdCompat&&A.test(e[u])&&(e[u]=e[u].replace(A,"")),"."===e[0].charAt(0)&&h&&(p=h.slice(0,h.length-1),e=p.concat(e)),s=0;s<e.length;s++)if("."===(d=e[s]))e.splice(s,1),s-=1;else if(".."===d){if(0===s||1===s&&".."===e[2]||".."===e[s-1])continue;s>0&&(e.splice(s-1,2),s-=2)}e=e.join("/")}if((h||b)&&g){for(n=e.split("/"),s=n.length;s>0;s-=1){if(t=n.slice(0,s).join("/"),h)for(l=h.length;l>0;l-=1)if((o=g[h.slice(0,l).join("/")])&&(o=o[t])){i=o,c=s;break}if(i)break;!a&&b&&b[t]&&(a=b[t],f=s)}!i&&a&&(i=a,c=f),i&&(n.splice(0,c,i),e=n.join("/"))}return e}function u(e,r){return function(){var n=v.call(arguments,0);return"string"!=typeof n[0]&&1===n.length&&n.push(null),h.apply(t,n.concat([e,r]))}}function c(e){return function(r){return i(r,e)}}function a(e){return function(r){m[e]=r}}function f(e){if(o(w,e)){var r=w[e];delete w[e],k[e]=!0,p.apply(t,r)}if(!o(m,e)&&!o(k,e))throw new Error("No "+e);return m[e]}function s(e){var r,n=e?e.indexOf("!"):-1;return n>-1&&(r=e.substring(0,n),e=e.substring(n+1,e.length)),[r,e]}function l(e){return e?s(e):[]}function d(e){return function(){return y&&y.config&&y.config[e]||{}}}var p,h,g,b,m={},w={},y={},k={},C=Object.prototype.hasOwnProperty,v=[].slice,A=/\.js$/;g=function(e,r){var n,t=s(e),o=t[0],u=r[1];return e=t[1],o&&(o=i(o,u),n=f(o)),o?e=n&&n.normalize?n.normalize(e,c(u)):i(e,u):(e=i(e,u),t=s(e),o=t[0],e=t[1],o&&(n=f(o))),{f:o?o+"!"+e:e,n:e,pr:o,p:n}},b={require:function(e){return u(e)},exports:function(e){var r=m[e];return void 0!==r?r:m[e]={}},module:function(e){return{id:e,uri:"",exports:m[e],config:d(e)}}},p=function(e,r,n,i){var c,s,d,p,h,y,C,v=[],A=typeof n;if(i=i||e,y=l(i),"undefined"===A||"function"===A){for(r=!r.length&&n.length?["require","exports","module"]:r,h=0;h<r.length;h+=1)if(p=g(r[h],y),"require"===(s=p.f))v[h]=b.require(e);else if("exports"===s)v[h]=b.exports(e),C=!0;else if("module"===s)c=v[h]=b.module(e);else if(o(m,s)||o(w,s)||o(k,s))v[h]=f(s);else{if(!p.p)throw new Error(e+" missing "+s);p.p.load(p.n,u(i,!0),a(s),{}),v[h]=m[s]}d=n?n.apply(m[e],v):void 0,e&&(c&&c.exports!==t&&c.exports!==m[e]?m[e]=c.exports:d===t&&C||(m[e]=d))}else e&&(m[e]=n)},e=r=h=function(e,r,n,o,i){if("string"==typeof e)return b[e]?b[e](r):f(g(e,l(r)).f);if(!e.splice){if(y=e,y.deps&&h(y.deps,y.callback),!r)return;r.splice?(e=r,r=n,n=null):e=t}return r=r||function(){},"function"==typeof n&&(n=o,o=i),o?p(t,e,r,n):setTimeout(function(){p(t,e,r,n)},4),h},h.config=function(e){return h(e)},e._defined=m,n=function(e,r,n){if("string"!=typeof e)throw new Error("See almond README: incorrect module build, no module name");r.splice||(n=r,r=[]),o(m,e)||o(w,e)||(w[e]=[e,r,n])},n.amd={jQuery:!0}}(),n("../node_modules/almond/almond",function(){}),n("jxg",[],function(){"use strict";var e={};return"object"!=typeof JXG||JXG.extend||(e=JXG),e.extend=function(e,r,n,t){var o,i;n=n||!1,t=t||!1;for(o in r)(!n||n&&r.hasOwnProperty(o))&&(i=t?o.toLowerCase():o,e[i]=r[o])},e.extend(e,{boards:{},readers:{},elements:{},registerElement:function(e,r){e=e.toLowerCase(),this.elements[e]=r},registerReader:function(e,r){var n,t;for(n=0;n<r.length;n++)t=r[n].toLowerCase(),"function"!=typeof this.readers[t]&&(this.readers[t]=e)},shortcut:function(e,r){return function(){return e[r].apply(this,arguments)}},getRef:function(r,n){return e.deprecated("JXG.getRef()","Board.select()"),r.select(n)},getReference:function(r,n){return e.deprecated("JXG.getReference()","Board.select()"),r.select(n)},getBoardByContainerId:function(e){var r;for(r in JXG.boards)if(JXG.boards.hasOwnProperty(r)&&JXG.boards[r].container===e)return JXG.boards[r];return null},deprecated:function(r,n){var t=r+" is deprecated.";n&&(t+=" Please use "+n+" instead."),e.warn(t)},warn:function(e){"object"==typeof window&&window.console&&console.warn?console.warn("WARNING:",e):"object"==typeof document&&document.getElementById("warning")&&(document.getElementById("debug").innerHTML+="WARNING: "+e+"<br />")},debugInt:function(e){var r,n;for(r=0;r<arguments.length;r++)n=arguments[r],"object"==typeof window&&window.console&&console.log?console.log(n):"object"==typeof document&&document.getElementById("debug")&&(document.getElementById("debug").innerHTML+=n+"<br/>")},debugWST:function(r){var n=new Error;e.debugInt.apply(this,arguments),n&&n.stack&&(e.debugInt("stacktrace"),e.debugInt(n.stack.split("\n").slice(1).join("\n")))},debugLine:function(r){var n=new Error;e.debugInt.apply(this,arguments),n&&n.stack&&e.debugInt("Called from",n.stack.split("\n").slice(2,3).join("\n"))},debug:function(r){e.debugInt.apply(this,arguments)}}),e}),n("utils/zip",["jxg"],function(e){"use strict";var r=[0,128,64,192,32,160,96,224,16,144,80,208,48,176,112,240,8,136,72,200,40,168,104,232,24,152,88,216,56,184,120,248,4,132,68,196,36,164,100,228,20,148,84,212,52,180,116,244,12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,3,131,67,195,35,163,99,227,19,147,83,211,51,179,115,243,11,139,75,203,43,171,107,235,27,155,91,219,59,187,123,251,7,135,71,199,39,167,103,231,23,151,87,215,55,183,119,247,15,143,79,207,47,175,111,239,31,159,95,223,63,191,127,255],n=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],t=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,99,99],o=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],i=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],u=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],c=256;return e.Util=e.Util||{},e.Util.Unzip=function(a){function f(){return O+=8,R<X?a[R++]:-1}function s(){L=1}function l(){var e;try{return O++,e=1&L,L>>=1,0===L&&(L=f(),e=1&L,L=L>>1|128),e}catch(e){throw e}}function d(e){var n=0,t=e;try{for(;t--;)n=n<<1|l();e&&(n=r[n]>>8-e)}catch(e){throw e}return n}function p(){B=0}function h(e){A++,G[B++]=e,S.push(String.fromCharCode(e)),32768===B&&(B=0)}function g(){this.b0=0,this.b1=0,this.jump=null,this.jumppos=-1}function b(){for(;;){if(M[F]>=x)return-1;if(U[M[F]]===F)return M[F]++;M[F]++}}function m(){var e,r=P[q];if(17===F)return-1;if(q++,F++,(e=b())>=0)r.b0=e;else if(r.b0=32768,m())return-1;if((e=b())>=0)r.b1=e,r.jump=null;else if(r.b1=32768,r.jump=P[q],r.jumppos=q,m())return-1;return F--,0}function w(e,r,n,t){var o;for(P=e,q=0,U=n,x=r,o=0;o<17;o++)M[o]=0;return F=0,m()?-1:0}function y(e){for(var r,n,t=0,o=e[t];;)if(l()){if(!(32768&o.b1))return o.b1;for(o=o.jump,r=e.length,n=0;n<r;n++)if(e[n]===o){t=n;break}}else{if(!(32768&o.b0))return o.b0;t++,o=e[t]}}function k(){var c,a,b,m,k,C,v,A,j,U,x,I,S,z,E,J,X;do{if(c=l(),0===(b=d(2)))for(s(),U=f(),U|=f()<<8,I=f(),I|=f()<<8,65535&(U^~I)&&e.debug("BlockLen checksum mismatch\n");U--;)a=f(),h(a);else if(1===b)for(;;)if(k=r[d(7)]>>1,k>23?(k=k<<1|l(),k>199?(k-=128,k=k<<1|l()):(k-=48)>143&&(k+=136)):k+=256,k<256)h(k);else{if(256===k)break;for(k-=257,j=d(t[k])+n[k],k=r[d(5)]>>3,i[k]>8?(x=d(8),x|=d(i[k]-8)<<8):x=d(i[k]),x+=o[k],k=0;k<j;k++)a=G[B-x&32767],h(a)}else if(2===b){for(v=new Array(320),z=257+d(5),E=1+d(5),J=4+d(4),k=0;k<19;k++)v[k]=0;for(k=0;k<J;k++)v[u[k]]=d(3);for(j=N.length,m=0;m<j;m++)N[m]=new g;if(w(N,19,v,0))return p(),1;for(S=z+E,m=0,X=-1;m<S;)if(X++,(k=y(N))<16)v[m++]=k;else if(16===k){if(k=3+d(2),m+k>S)return p(),1;for(C=m?v[m-1]:0;k--;)v[m++]=C}else{if(k=17===k?3+d(3):11+d(7),m+k>S)return p(),1;for(;k--;)v[m++]=0}for(j=T.length,m=0;m<j;m++)T[m]=new g;if(w(T,z,v,0))return p(),1;for(j=T.length,m=0;m<j;m++)N[m]=new g;for(A=[],m=z;m<v.length;m++)A[m-z]=v[m];if(w(N,E,A,0))return p(),1;for(;;)if((k=y(T))>=256){if(0===(k-=256))break;for(k-=1,j=d(t[k])+n[k],k=y(N),i[k]>8?(x=d(8),x|=d(i[k]-8)<<8):x=d(i[k]),x+=o[k];j--;)a=G[B-x&32767],h(a)}else h(k)}}while(!c);return p(),s(),0}function C(){var e,r,n,t,o,i,u,a,s=[];try{if(S=[],J=!1,s[0]=f(),s[1]=f(),120===s[0]&&218===s[1]&&(k(),E[z]=[S.join(""),"geonext.gxt"],z++),31===s[0]&&139===s[1]&&(I(),E[z]=[S.join(""),"file"],z++),80===s[0]&&75===s[1]&&(J=!0,s[2]=f(),s[3]=f(),3===s[2]&&4===s[3])){for(s[0]=f(),s[1]=f(),v=f(),v|=f()<<8,a=f(),a|=f()<<8,f(),f(),f(),f(),u=f(),u|=f()<<8,u|=f()<<16,u|=f()<<24,i=f(),i|=f()<<8,i|=f()<<16,i|=f()<<24,o=f(),o|=f()<<8,o|=f()<<16,o|=f()<<24,t=f(),t|=f()<<8,n=f(),n|=f()<<8,e=0,W=[];t--;)r=f(),"/"===r|":"===r?e=0:e<c-1&&(W[e++]=String.fromCharCode(r));for(j||(j=W),e=0;e<n;)r=f(),e++;A=0,8===a&&(k(),E[z]=new Array(2),E[z][0]=S.join(""),E[z][1]=W.join(""),z++),I()}}catch(e){throw e}}var v,A,j,U,x,I,S=[],z=0,E=[],G=new Array(32768),B=0,J=!1,X=a.length,R=0,L=1,O=0,T=new Array(288),N=new Array(32),q=0,P=null,F=(new Array(64),new Array(64),0),M=new Array(17),W=[];M[0]=0,I=function(){var e,r,n,t,o,i=[];if(8&v&&(i[0]=f(),i[1]=f(),i[2]=f(),i[3]=f(),80===i[0]&&75===i[1]&&7===i[2]&&8===i[3]?(e=f(),e|=f()<<8,e|=f()<<16,e|=f()<<24):e=i[0]|i[1]<<8|i[2]<<16|i[3]<<24,r=f(),r|=f()<<8,r|=f()<<16,r|=f()<<24,n=f(),n|=f()<<8,n|=f()<<16,n|=f()<<24),J&&C(),i[0]=f(),8===i[0]){if(v=f(),f(),f(),f(),f(),f(),f(),4&v)for(i[0]=f(),i[2]=f(),F=i[0]+256*i[1],t=0;t<F;t++)f();if(8&v)for(t=0,W=[],o=f();o;)"7"!==o&&":"!==o||(t=0),t<c-1&&(W[t++]=o),o=f();if(16&v)for(o=f();o;)o=f();2&v&&(f(),f()),k(),e=f(),e|=f()<<8,e|=f()<<16,e|=f()<<24,n=f(),n|=f()<<8,n|=f()<<16,n|=f()<<24,J&&C()}},e.Util.Unzip.prototype.unzipFile=function(e){var r;for(this.unzip(),r=0;r<E.length;r++)if(E[r][1]===e)return E[r][0];return""},e.Util.Unzip.prototype.unzip=function(){return C(),E}},e.Util}),n("utils/encoding",["jxg"],function(e){"use strict";var r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,10,3,3,3,3,3,3,3,3,3,3,3,3,4,3,3,11,6,6,6,5,8,8,8,8,8,8,8,8,8,8,8,0,12,24,36,60,96,84,12,12,12,48,72,12,12,12,12,12,12,12,12,12,12,12,12,12,0,12,12,12,12,12,0,12,0,12,12,12,24,12,12,12,12,12,24,12,24,12,12,12,12,12,12,12,12,12,24,12,12,12,12,12,24,12,12,12,12,12,12,12,24,12,12,12,12,12,12,12,12,12,36,12,36,12,12,12,36,12,12,12,12,12,36,12,36,12,12,12,36,12,12,12,12,12,12,12,12,12,12];return e.Util=e.Util||{},e.Util.UTF8={encode:function(e){var r,n,t="",o=e.length;if(e=e.replace(/\r\n/g,"\n"),"function"==typeof unescape&&"function"==typeof encodeURIComponent)return unescape(encodeURIComponent(e));for(r=0;r<o;r++)n=e.charCodeAt(r),n<128?t+=String.fromCharCode(n):n>127&&n<2048?(t+=String.fromCharCode(n>>6|192),t+=String.fromCharCode(63&n|128)):(t+=String.fromCharCode(n>>12|224),t+=String.fromCharCode(n>>6&63|128),t+=String.fromCharCode(63&n|128));return t},decode:function(e){var n,t,o,i=0,u=0,c=0,a=[],f=e.length,s=[];for(n=0;n<f;n++)t=e.charCodeAt(n),o=r[t],u=0!==c?63&t|u<<6:255>>o&t,0===(c=r[256+c+o])&&(u>65535?a.push(55232+(u>>10),56320+(1023&u)):a.push(u),++i%1e4==0&&(s.push(String.fromCharCode.apply(null,a)),a=[]));return s.push(String.fromCharCode.apply(null,a)),s.join("")},asciiCharCodeAt:function(e,r){var n=e.charCodeAt(r);if(n>255)switch(n){case 8364:n=128;break;case 8218:n=130;break;case 402:n=131;break;case 8222:n=132;break;case 8230:n=133;break;case 8224:n=134;break;case 8225:n=135;break;case 710:n=136;break;case 8240:n=137;break;case 352:n=138;break;case 8249:n=139;break;case 338:n=140;break;case 381:n=142;break;case 8216:n=145;break;case 8217:n=146;break;case 8220:n=147;break;case 8221:n=148;break;case 8226:n=149;break;case 8211:n=150;break;case 8212:n=151;break;case 732:n=152;break;case 8482:n=153;break;case 353:n=154;break;case 8250:n=155;break;case 339:n=156;break;case 382:n=158;break;case 376:n=159}return n}},e.Util.UTF8}),n("utils/base64",["jxg","utils/encoding"],function(e,r){"use strict";function n(e,r){return 255&e.charCodeAt(r)}function t(e,r){return o.indexOf(e.charAt(r))}var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";return e.Util=e.Util||{},e.Util.Base64={encode:function(e){var t,i,u,c,a,f=[];for(a=r.encode(e),u=a.length,c=u%3,t=0;t<u-c;t+=3)i=n(a,t)<<16|n(a,t+1)<<8|n(a,t+2),f.push(o.charAt(i>>18),o.charAt(i>>12&63),o.charAt(i>>6&63),o.charAt(63&i));switch(c){case 1:i=n(a,u-1),f.push(o.charAt(i>>2),o.charAt(i<<4&63),"=","=");break;case 2:i=n(a,u-2)<<8|n(a,u-1),f.push(o.charAt(i>>10),o.charAt(i>>4&63),o.charAt(i<<2&63),"=")}return f.join("")},decode:function(e,n){var o,i,u,c,a,f,s=[],l=[];if(o=e.replace(/[^A-Za-z0-9\+\/=]/g,""),(u=o.length)%4!=0)throw new Error("JSXGraph/utils/base64: Can't decode string (invalid input length).");for("="===o.charAt(u-1)&&(c=1,"="===o.charAt(u-2)&&(c=2),u-=4),i=0;i<u;i+=4)a=t(o,i)<<18|t(o,i+1)<<12|t(o,i+2)<<6|t(o,i+3),l.push(a>>16,a>>8&255,255&a),i%1e4==0&&(s.push(String.fromCharCode.apply(null,l)),l=[]);switch(c){case 1:a=t(o,u)<<12|t(o,u+1)<<6|t(o,u+2),l.push(a>>10,a>>2&255);break;case 2:a=t(o,i)<<6|t(o,i+1),l.push(a>>4)}return s.push(String.fromCharCode.apply(null,l)),f=s.join(""),n&&(f=r.decode(f)),f},decodeAsArray:function(e){var r,n=this.decode(e),t=[],o=n.length;for(r=0;r<o;r++)t[r]=n.charCodeAt(r);return t}},e.Util.Base64}),n("../build/compressor.deps.js",["jxg","utils/zip","utils/base64"],function(e,r,n){return e.decompress=function(e){return unescape(new r.Unzip(n.decodeAsArray(e)).unzip()[0][0])},e}),window.JXG=r("../build/compressor.deps.js")}();